Linux服务器下LVS+Keepalived 高可用负载均衡集群架构实现

1、实验结构图总览

这里写图片描述

2、实验准备

以下工作针对所有服务器,也就是说要在四台服务器中都要进行配置:
  • 2.1 配置服务器静态ip:
    # vim /etc/sysconfig/network-scripts/ifcfg-eth0
    打开ifcfg-eth0 文件 配置如下
    DEVICE=eth0
    ONBOOT=yes
    NM_CONTROLLED=yes
    BOOTPROTO=static
    IPADDR=192.168.2.14
    NETMASK=255.255.255.0
    GATEWAY=192.168.2.254
配置好了重启网卡  #service network restart
  • 2.2 设立主机名 # vim /etc/sysconfig/network (能永久更改主机名) 重启生效 #reboot

  • 2.3 ip地址跟主机名绑定 #vim /etc/hosts

    192.168.2.14 lvs-master
    192.168.2.15 lvs-slave
    192.168.2.139 lvs-webserver1
    192.168.2.138 lvs-webserver2
保存后退出  验证:ping lvs-master
  • 2.4 关闭防火墙 # service iptables stop 执行关闭防火墙自动运行命令:chkconfig iptables off
    验证:chkconfig –list | grep iptables

3、配置两台web服务器

以下操作需要在角色为Web服务器的两台中进行,不需要在负载均衡服务器中进行操作:

  • 3.1 开启http 服务 : # service httpd start
    补充:chkconfig httpd on –>将httpd设为自启动服务

  • 3.2 上传测试网页:
    其中 webserver1 服务器显示 from webserver1 其中 webserver2 服务器显示 from webserver2,便于区分是webserver1 还是webserver2 提供服务

  • 3.3 新建realserver脚本文件编辑

    (1) 进入指定文件夹:cd /etc/init.d/

    (2) 编辑脚本文件:vim realserver

    SNS_VIP=192.168.2.100  #这里设置虚拟IP为:192.168.2.100
    /etc/rc.d/init.d/functions
    case "$1" in
    start)
           ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP
           /sbin/route add -host $SNS_VIP dev lo:0
           echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
           echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
           echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
           echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
           sysctl -p >/dev/null 2>&1
           echo "RealServer Start OK"
           ;;
    stop)
           ifconfig lo:0 down
           route del $SNS_VIP >/dev/null 2>&1
           echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
           echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
           echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
           echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
           echo "RealServer Stoped"
           ;;
    *)
           echo "Usage: $0 {start|stop}"
           exit 1
    esac
    exit 0
(3) 保存脚本文件后更改该文件权限:#chmod 755 realserver

(4) 开启realserver服务:#service realserver start
 可能出现的错误: 提示 /etc/init.d/functions 没有权限  给添加权限就好了 #chmod 755  /etc/init.d/functions 

4、 配置主负载服务器

  • 4.1 安装Keepalived相关包 :
    • 有网络的直接使用yun 安装
      #yum install -y keepalived
    • 没有网络需要下载安装包:
    #rpm -ivh e2fsprogs-devel-1.41.12-18.el6.x86_64.rpm
    #rpm -ivh keyutils-libs-devel-1.4-4.el6.x86_64.rpm
    #rpm -ivh krb5-devel-1.10.3-10.el6_4.6.x86_64.rpm
    #rpm -ivh libcom_err-devel-1.41.12-18.el6.x86_64.rpm
    #rpm -ivh libselinux-devel-2.0.94-5.3.el6_4.1.x86_64.rpm
    #rpm -ivh libsepol-devel-2.0.41-4.el6.x86_64.rpm
    #rpm -ivh openssl-devel-1.0.1e-15.el6.x86_64.rpm
    #rpm -ivh zlib-devel-1.2.3-29.el6.x86_64.rpm

(需要安装以上的关联包才能安装下面的keepalived )

安装 keepalived-1.2.17.tar.gz
#tar -zxvf keepalived-1.2.17.tar.gz
#cd keepalived-1.2.17
# ./configura --prefix=/
# make && make install 
  • 4.2 进入keepalived.conf所在目录:
    # cd /etc/keepalived
    # vi keepalived.conf

下面是 keepalived.conf 配置文件

! Configuration File for keepalived

global_defs {
   notification_email {
     tymyeah@163.com
   }
   notification_email_from tymyeah@163.com
   smtp_server 192.168.2.254
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.100
    }
}

virtual_server 192.168.2.100 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 0
  • 4.3 开启 keepalived 服务 # service keepalived start
  • -

5 配置重负载服务器

跟配置主负载服务器一样,只是最后的配置文件跟主负载服务器有两处不一样
  • 将state由MASTER改为BACKUP

  • 将priority由100改为99

! Configuration File for keepalived

global_defs {
   notification_email {
     tymyeah@163.com
   }
   notification_email_from tymyeah@163.com
   smtp_server 192.168.2.254
   smtp_connect_timeout 30
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state BACKUP   # 这里 改成 BACKUP 重负载  
    interface eth0
    virtual_router_id 51
    priority 100  #将priority由100改为99  数值越大优先级越高
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.2.100
    }
}

virtual_server 192.168.2.100 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    nat_mask 255.255.255.0
    persistence_timeout 0

6、测试验证

  • 6.1 指定请求的均衡转发:因为两个Web服务器的权重都一样,所以会依次转发给两个Web服务器;
  • 6.2 web 服务器发生故障时:
    • 这里模拟webserver1故障 暂停其http服务:#service httpd stop
      访问 VIP 192.168.2.100 时 会重 webserer2 上获取信息
      这里写图片描述
  • 6.3 webserver1故障修复后,又从 webserver1 获取服务 #service httpd start
    这里写图片描述
  • 6.4 主负载均衡服务器发生故障时,备机立即充当主机角色提供请求转发服务:
    这里模拟lvs-master 192.168.2.14 发生故障,暂停其keepalived服务:#service keepalived stop
    我们发现还是从外表访问vip 地址可以提供服务。

至此实验做完。谢谢大家!

参考资料:
    http://developer.51cto.com/art/201502/465745.htm
    http://blog.csdn.net/zilong00007/article/details/7356339
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值