基于lvs+keepalived的负载均衡集群搭建

一、环境

系统:centos6.6

机器:DR1和DR2

配置LVS + Keepalived高可用负载均衡集群之图文教程

配置LVS + Keepalived高可用负载均衡集群之图文教程

二、安装lvs和keepalived软件(在DR1和DR2)

检查是否安装了IPVS模块: 注:LVS已经是Linux标准内核的一部分,直接被编译在内核中!

方法1: 查看IPVS模块是否真的编译到内核中去了,如下图所示:

配置LVS + Keepalived高可用负载均衡集群之图文教程

由上可知,有3个项,说明这个功能已经编译到内核中了!

方法2: 使用modprobe命令查看,如下图所示:

配置LVS + Keepalived高可用负载均衡集群之图文教程

由上可知,明显安装了支持LVS的IPVS模块!确认了内核支持LVS的IPVS模块,接下来安装该软件

yum install ipvsadm -y

yum install keepalived -y

三、配置keepalived(DR1和DR2)

在DR1上配置keepalived:

最简单的方法:先在记事本中,手工创建之。复制到/etc/keepalived/keepalived.conf中,保存即可!

//手工创建keepalived.conf文件(vim /etc/keepalived/keepalived.conf)

  1. ! Configuration File for keepalived
  2. global_defs {
  3.    notification_email {
  4.      acassen@firewall.loc   #设置报警邮件地址,可以设置多个,每行1个,
  5.      failover@firewall.loc  #需开启邮件报警及本机的Sendmail服务。
  6.      sysadmin@firewall.loc
  7.    }
  8.    notification_email_from Alexandre.Cassen@firewall.loc
  9.    smtp_server 192.168.200.1  #设置SMTP Server地址;
  10.    smtp_connect_timeout 30
  11.    router_id LVS_DEVEL
  12. }
  13.            ########VRRP Instance########
  14. vrrp_instance VI_1 {
  15.     state MASTER    #指定Keepalived的角色,MASTER为主机服务器,BACKUP为备用服务器
  16.     interface eth0  #BACKUP为备用服务器
  17.     virtual_router_id 51
  18.     priority 100    #定义优先级,数字越大,优先级越高,主DR必须大于备用DR。
  19.     advert_int 1
  20.     authentication {
  21.         auth_type PASS  #设置验证类型,主要有PASS和AH两种
  22.         auth_pass 1111  #设置验证密码
  23.     }
  24.     virtual_ipaddress {
  25.         192.168.1.200  #设置主DR的虚拟IP地址(virtual IP),可多设,但必须每行1个
  26.     }
  27. }
  28.            ########Virtual Server########
  29. virtual_server 192.168.1.200 80 {  #注意IP地址与端口号之间用空格隔开
  30.     delay_loop 6        #设置健康检查时间,单位是秒
  31.     lb_algo rr          #设置负载调度算法,默认为rr,即轮询算法,最优秀是wlc算法
  32.     lb_kind DR          #设置LVS实现LB机制,有NAT、TUNN和DR三个模式可选
  33.     nat_mask 255.255.255.0
  34.     persistence_timeout 50  #会话保持时间,单位为秒
  35.     protocol TCP        #指定转发协议类型,有TCP和UDP两种
  36.     real_server 192.168.1.132 80 {
  37.         weight 1          #配置节点权值,数字越大权值越高
  38.         TCP_CHECK {
  39.             connect_timeout 3     #表示3秒无响应,则超时
  40.             nb_get_retry 3        #表示重试次数
  41.             delay_before_retry 3  #表示重试间隔
  42.         }
  43.     }
  44.     real_server 192.168.1.133 80 {  #配置服务器节点,即Real Server2的public IP
  45.         weight 3            #配置节点权值,数字越大权值越高
  46.         TCP_CHECK {
  47.             connect_timeout 3       #表示3秒无响应,则超时
  48.             nb_get_retry 3          #表示重试次数
  49.             delay_before_retry 3    #表示重试间隔
  50.         }
  51.     }
  52. }启动keepalived、设置keepalived服务自动启动、检查是否生效,如下图所示:

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    在DR2上配置keepalived:

    先将上面记事本中的keepalived.conf配置文件,仅仅修改2处,如下图所示:

    No.1处:把“stateMASTER”修改为“stateBACKUP” #即备用服务器;

    No.2处:把“priority 100”修改为“priority 90” #优先级为90。

    修改好后,复制到DR2的/etc/keepalived/keepalived.conf中,保存即可!

    //启动keepalived、设置keepalived服务自动启动、检查是否生效,如下图所示:

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    四、配置Real Server节点:1)yum –y install httpd

    2)启动httpd服务时,出错:

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    //vim /etc/httpd/conf/httpd.conf中,依如下操作:

    #265 ServerName www.example.com:80 //去掉前面的#号即可!

    3)在RealServer1和RealServer2上的脚本realserver.sh:

    1. #add for chkconfig
    2. #chkconfig: 2345 70 30  #234都是文本界面,5就是图形界面X,70启动顺序号,30系统关闭,脚本
    3. #止顺序号
    4. #description: RealServer’s script  #关于脚本的简短描述
    5. #processname: realserver.sh       #第一个进程名,后边设置自动时会用到
    6. #!/bin/bash
    7. VIP=192.168.1.200
    8. source /etc/rc.d/init.d/functions
    9. case “$1” in
    10. start)
    11.        ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
    12.        /sbin/route add -host $VIP dev lo:0
    13.        echo “1” >/proc/sys/net/ipv4/conf/lo/arp_ignore
    14.        echo “2” >/proc/sys/net/ipv4/conf/lo/arp_announce
    15.        echo “1” >/proc/sys/net/ipv4/conf/all/arp_ignore
    16.        echo “2” >/proc/sys/net/ipv4/conf/all/arp_announce
    17.        echo “RealServer Start OK”
    18.        ;;
    19. stop)
    20.        ifconfig lo:0 down
    21.        route del $VIP >/dev/null 2>&1
    22.        echo “0” >/proc/sys/net/ipv4/conf/lo/arp_ignore
    23.        echo “0” >/proc/sys/net/ipv4/conf/lo/arp_announce
    24.        echo “0” >/proc/sys/net/ipv4/conf/all/arp_ignore
    25.        echo “0” >/proc/sys/net/ipv4/conf/all/arp_announce
    26.        echo “RealServer Stoped”
    27.        ;;
    28.        *)
    29.        echo “Usage: $0 {start|stop}”
    30.        exit 1
    31. esac
    32. exit 0

    //为realserver.sh添加权限

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    5. 启动keepalived + LVS集群系统:

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    6. 测试分为三个部分:1)高可用性功能测试:

    高可用性是通过LVS的两个DR1和DR2完成的。为了模拟故障,先将DR1上的Keepalived服务停止或者干脆关掉节点DR1,然后观察备用DR2上Keepalived是否获得虚拟IP地址,即VIP 192.168.1.200

    //在DR1查看哈,信息如下图所示:

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    由上可知,虚拟IP地址在DR1节点上,即VIP 192.168.1.200

    //在DR2查看哈,信息如下图所示:

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    【思考】自己查查看,一定会成功!

    方法1:命令检验法

    使用命令ipvsadm –Ln和ip addr list/show查看虚拟IP漂移情况来判断。

    //关闭DR1,模拟宕机,如下图所示:

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    由上图可知,DR1确实宕机了,而DR2得到了虚拟IP地址(上图红框中的192.168.1.200)

    且访问依然正常,再次证明了高可用性,如下图所示:

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    方法2:查看日志法

    //关闭DR1/停止DR1的keepalived服务,模拟宕机,在DR2中查看日志,如下图日志所示:

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    //再查看DR2是否立刻检测到DR1出现故障,确实非常快就检测到DR1的故障,并马上接管主机的虚拟IP地址(192.168.1.200),注意观察上图和下图!

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    2)负载均衡测试:

    为了便于测试,我们在Real Server1和Real Server2分别配置www服务的网页且内容也好识别,如下图所示:

    方法1:客户端浏览器中测试

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    由上可知,我们在VMWare中的XP操作系统和物理机器win 7的浏览器中分别输入http://192.168.1.200且不断地刷新之都可访问!

    方法2:用压力测试法

    C++代码
    1. [root@CentOS6 ~]# ab –c 100 –n 10000 http://192.168.1.200/index.html

    3)故障切换测试

    故障切换是测试在某个节点出现故障后,keepalived监控模块能否及时发现,然后屏蔽故障节点,同时将服务转移到正常节点上执行之。

    停掉节点Real Server2服务,模拟该节点出现故障,然后查查看主、备机器日志信息:

    方法1:查看主、备机器日志信息

    //先停掉节点Real Server2的httpd服务,如下图所示:

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    //再查看DR1上的日志,如下图所示:

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    //再查看DR2上的日志,如下图所示:

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    由上可知,故障切换测试成功!

    方法2:客户端浏览器中测试

    配置LVS + Keepalived高可用负载均衡集群之图文教程

    不断刷新网页一直就显示如上图所示:Real Server1内容!可见故障切换成功!

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注