LVS(DR模式)+keepalived(高可用)
此实验是在DR模式下进行的,关于DR模式及DR模式下的健康检查请查看我之前的博文:
DR模式部署:https://blog.****.net/y_yang666/article/details/86922742
DR模式下的健康检查:https://blog.****.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
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
3).安装keepalived的依赖包 :openssl-devel
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
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
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/
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
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
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/
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 ]
此时,会自动分配vip(172.25.4.100)给主机,因为主,备机同时开启时,主机的优先级高
2.当关掉主机的keepalived服务时,vip地址会自动漂移到备机(server4)上
高可用下测试健康检查
1.两台realserver都正常时(开启http服务)
2.当有一台realserver出现故障时(关掉server2的http服务)
3.当两台realserver都出现故障时(server2与server3同时关掉http服务)