LVS(DR模式)+keepalived(高可用)

此实验是在DR模式下进行的,关于DR模式及DR模式下的健康检查请查看我之前的博文:

DR模式部署:https://blog.csdn.net/y_yang666/article/details/86922742
DR模式下的健康检查:https://blog.csdn.net/y_yang666/article/details/86931176

一.keepalived简介

  • Keepalived是基于vrrp协议的一款高可用软件。Keepailived有一台主服务器和多台备份服务器,在主服务器和备份服务器上面部署相同的服务配置,使用一个虚拟IP地址对外提供服务,当主服务器出现故障时,虚拟IP地址会自动漂移到备份服务器。
vrrp协议:
  • VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议),VRRP是为了解决静态路由的高可用。VRRP的基本架构
    虚拟路由器由多个路由器组成,每个路由器都有各自的IP和共同的VRID(0-255),其中一个VRRP路由器通过竞选成为MASTER,占有VIP,对外提供路由服务,其他成为BACKUP,MASTER以IP组播(组播地址:224.0.0.18)形式发送VRRP协议包,与BACKUP保持心跳连接,若MASTER不可用(或BACKUP接收不到VRRP协议包),则BACKUP通过竞选产生新的MASTER并继续对外提供路由服务,从而实现高可用。

二.实验环境(RHEL6.5版本):

主机名 IP
server1(主调度器):LVS MASTER 172.25.4.1
server4(副调度器):LVS BACKUP 172.25.4.4
server2(真实服务器):Realserver1 172.25.4.2
server3(真实服务器):Realserver2 172.25.4.3

Virtual IP:172.25.4.100

三.高可用的部署

1.配置server1

1).配置高级yum源

[[email protected] ha.d]# vim /etc/yum.repos.d/rhel-source.repo 
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.4.250/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.4.250/rhel6.5/LoadBalancer
enabled=1
gpgcheck=0

[HighAvailability]
name=HighAvailability
baseurl=http://172.25.4.250/rhel6.5/HighAvailability
enabled=1

LVS(DR模式)+keepalived(高可用)
2).下载keepalived安装包并解压

[[email protected] mnt]# ls
keepalived-2.0.6 
[[email protected] mnt]# tar zxf keepalived-2.0.6.tar.gz 
[[email protected] mnt]# ls
keepalived-2.0.6  keepalived-2.0.6.tar.gz

LVS(DR模式)+keepalived(高可用)
3).安装keepalived的依赖包 :openssl-devel
LVS(DR模式)+keepalived(高可用)
4).进入keepavilved解压目录进行编译

[[email protected] keepalived-2.0.6]# ./configure --prefix=/usr/local/keepalived --with-init=SYSV
[[email protected] keepalived-2.0.6]# make && make install

LVS(DR模式)+keepalived(高可用)
LVS(DR模式)+keepalived(高可用)
5).赋予keepalived脚本可执行权限

[[email protected] keepalived-2.0.6]# cd /usr/local/keepalived/etc/rc.d/init.d/
[[email protected] init.d]# ls
keepalived
[[email protected] init.d]# chmod +x keepalived

LVS(DR模式)+keepalived(高可用)
6).做软连接方便管理keepalived

[[email protected] init.d]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[[email protected] init.d]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[[email protected] init.d]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/
[[email protected] init.d]# ln -s /usr/local/keepalived/sbin/keepalived /sbin/

LVS(DR模式)+keepalived(高可用)
7).编辑配置文件

[[email protected] init.d]# vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {      ##发送报警邮件收件地址
   [email protected]
   }
   notification_email_from [email protected]   ##指明报警邮件的发送地址
   smtp_server 127.0.0.1     ##邮件服务器地址
   smtp_connect_timeout 30   ##smtp的超时时间
   router_id LVS_DEVEL    ##物理服务器的主机名
   vrrp_skip_check_adv_addr
#   vrrp_strict    ##此处要注释掉
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state MASTER   ##当前节点在此虚拟路由器上的初始状态;主机是MASTER,余下的备机都应该为BACKUP(由优先级决定)
    interface eth0   ##绑定为当前虚拟路由器使用的物理接口;
    virtual_router_id 4   ##当前虚拟路由器的惟一标识,范围是0-255(主,备机一致)
    priority 100    ##当前主机在此虚拟路径器中的优先级(z主机要大于备机);范围1-254;
    advert_int 1    ##通告发送间隔,包含主机优先级、心跳等。
    authentication {
        auth_type PASS    ##认证类型,PASS表示简单字符串认证
        auth_pass 1111   ##认证密码,PASS密码最长为8位

    }
    virtual_ipaddress {   #虚拟路由IP地址,以辅助地址方式设置
        172.25.4.100
    }
}

virtual_server 172.25.4.100 80 {   ##LVS配置段 ,设置LVS的VIP地址和端口
    delay_loop 6    ##服务轮询的时间间隔;检测RS服务器的状态。
    lb_algo rr    ##调度算法(rr:轮询)   
    lb_kind DR   ##集群类型
#    persistence_timeout 50    ##是否启用持久连接,连接保存时长,此处要将其注释掉
    protocol TCP    ##协议,只支持TCP
   real_server 172.25.4.2 80 {     ##配置RS服务器的地址和端口
         TCP_CHECK {     ##TCP方式的健康检查,realserve 的状态检测设置部分,单位是秒
         weight 1     ##权重
            connect_timeout 3    ##连接超时时间
            retry 3   ##重试次数
            delay_before_retry 3   ##重试间隔
       }
    }
        real_server 172.25.4.3 80 {
         TCP_CHECK {
         weight 1
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

8).将配置好的keepalived发送给server4(备调度器)

[[email protected] init.d]# cd /usr/local/
[[email protected] local]# ls
bin  etc  games  include  keepalived  lib  lib64  libexec  sbin  share  src
[[email protected] local]# scp -r keepalived [email protected]:/usr/local

LVS(DR模式)+keepalived(高可用)

2.配置server4:

1).搭建gaojiyum源

[[email protected] keepalived]# vim /etc/yum.repos.d/rhel-source.repo 
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.4.250/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[HighAvailability]
name=ldirectord
baseurl=http://172.25.4.250/rhel6.5/HighAvailability
enabled=1           

LVS(DR模式)+keepalived(高可用)
2).同样做软连接

[[email protected] local]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[[email protected] local]#  ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[[email protected] local]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/
[[email protected] local]# ln -s /usr/local/keepalived/sbin/keepalived /sbin/

LVS(DR模式)+keepalived(高可用)
3).修改keepalived配置文件,将本机改为备用调度器(修改两个地方)

! Configuration File for keepalived

global_defs {
   notification_email {
   [email protected]
   }
   notification_email_from [email protected]
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LVS_DEVEL
   vrrp_skip_check_adv_addr
#   vrrp_strict
   vrrp_garp_interval 0
   vrrp_gna_interval 0
}

vrrp_instance VI_1 {
    state BACKUP   #将此处改为BACKUP,作为备机
    interface eth0
    virtual_router_id 4
    priority 50     #将优先级改为50,一定要小于主机的优先级
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.25.4.100
    }
}

virtual_server 172.25.4.100 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
#    persistence_timeout 50
    protocol TCP
    real_server 172.25.4.2 80 {
         TCP_CHECK {
         weight 1
            connect_timeout 3
            retry 3
            delay_before_retry 3
       }
    }
        real_server 172.25.4.3 80 {
         TCP_CHECK {
         weight 1
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }
}

测试:

1.开启server1(主机)与server4(备机)的keepalived

[[email protected] local]# /etc/init.d/keepalived start
Starting keepalived:                                       [  OK  ]
[[email protected] keepalived]# /etc/init.d/keepalived start
Starting keepalived:                                       [  OK  ]

LVS(DR模式)+keepalived(高可用)
LVS(DR模式)+keepalived(高可用)
此时,会自动分配vip(172.25.4.100)给主机,因为主,备机同时开启时,主机的优先级高
LVS(DR模式)+keepalived(高可用)
2.当关掉主机的keepalived服务时,vip地址会自动漂移到备机(server4)上
LVS(DR模式)+keepalived(高可用)
LVS(DR模式)+keepalived(高可用)
LVS(DR模式)+keepalived(高可用)

高可用下测试健康检查

1.两台realserver都正常时(开启http服务)
LVS(DR模式)+keepalived(高可用)
2.当有一台realserver出现故障时(关掉server2的http服务)
LVS(DR模式)+keepalived(高可用)
3.当两台realserver都出现故障时(server2与server3同时关掉http服务)
LVS(DR模式)+keepalived(高可用)