在上一篇博客中讲到了DR模式的实现,但是会发现以下几两个问题:
1、如果将一台RS的httpd服务器关闭,发现请求的时候,响应如果转发到down掉的RS将会出现响应比较慢的情况,有时候还会显示找不到网页。虽然最终或通过启动RS再次给与响应,但是用户体验非常不好。
2、如果LB服务器down掉,及时RS全部正常运行,用户请求将得不到响应。
所以还需要通过keepalived升级DR模式,
keepalived是集群管理中保证集群高可用的服务软件。Keepalived的作用是检测服务器的状态,如果有一台服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
高可用 High Available
1、安装前准备
1.1恢复DR模式负载均衡器
由于之前keepalived不再需要之前简单DR模式的配置,需要恢复网卡配置。
ifconfig eth0:3 down
ipvsadm -ln
ipvsadm -C
ipvsadm -ln
1.2 再准备一台虚拟机
再准备一台虚拟机:192.168.8.63,用做备用服务器
2、安装keepalived
在两台负载均衡服务器上安装keepalived
yum install keepalived -y
3、配置/etc/keepalived/keepalived.conf
3.1 先在node0上配置
vim /etc/keepalived/keepalived.conf
具体配置如下
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
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.8.100/24 dev eth0 label eth0:8
}
}
virtual_server 192.168.8.100 80 {
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 0
protocol TCP
real_server 192.168.8.62 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
real_server 192.168.8.65 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
3.2 配置备用服务器
配置拷贝到 备用服务器上
scp /etc/keepalived/keepalived.conf root@192.168.8.63:/etc/keepalived
vim /etc/keepalived/keepalived.conf
只需要调整如下内容即可
4.启动keepalived
service keepalived start
两台服务器都需要启动
5.验证
5.1 正常验证
在node0 主服务器上输入ifconfig
看到虚拟服务器ip已经配置上去。
再通过ipvsadm时可以看到
VIP和真实服务器IP地址也配置成功。
在备用服务器上通过上述命令没有看到任何结果,没有启动eth0:8的网卡 ,但是会监听真实服务器情况
通过浏览器不断刷新也可以实现轮询方式访问真是服务器
ipvsadm -lnc
可以查看访问轨迹
5.2 模拟其中一台服务器宕掉
将62服务器上的httpd停掉
service httpd stop
再回到主负载均衡器上,查看服务器群情况,由于62已经被停掉,不再有效,keepalive监测到后,将其
从服务器群众剔除掉,只剩下65
并且备用负载均衡服务器也会实时监听,真实服务器情况,即备用负载均衡服务器上62也会被剔除
页面上正常访问的地址为65,也不会出现卡顿情况。
5.3 模拟主负载均衡服务器宕机
将主负载均衡服务器keepalived停掉。
service keepalived stop
或者 需要重新进VM中 eth0 up 才能通过ssh连接
ifconfig eth0 down
发现页面也能正常访问
再回到备用负载均衡器上查看网卡以及服务器群情况
ifconfig
ipvsadm -ln
可以看到备用负载均衡器已经正常启用eth0:8
6、问题
在主负载均服务器上查看keepalived进程
ps -ef|grep keepalived
父进程1556接收并转发请求,子进程1558和1559是分别长链接,用于监听RS的状态。
当我们把这三个进程杀掉时,按正常逻辑此时主负责均衡服务器也不能正常提供服务器,不能监听RS的情况。
ifconfig
看到虽然把keepalived相关进程杀掉,但是负载均衡服务器依然正常提供服务,没有让给备用负载均衡服务器。