上一篇文章介绍了lvs如何做负载均衡,传送门
lvs做好负载均衡以后,一旦lvs 挂掉了另外一个备份需要启动协助工作,直到主lvs修复。这就是主备的保障,我们通过keepalive来实现,当然这块的东西也可以用zookeeper来做。当主服务器挂掉了,keepalived 会通知从lvs服务器,通过keepalived将访问ip自动漂移到从lvs上面,此时从lvs接替主lvs进行负载均衡。当主lvs服务器恢复以后,keepalived又会切换回主lvs。
准备
四台虚拟机
主lvs 192.168.146.101
从lvs 192.168.146.104
RS1 192.168.146.102
RS1 192.168.146.103
VIP 192.168.146.100
清空ipvsadm 中的配置
ipvsadm -C
ipvsadm -ln
清除ifconfig中的VIP端口配置,在清除之前通过ifconfig命令看看,哪个端口设置了VIP
我这里看到的是eth0:0,所以就关掉他就好了。
ifconfig
ifconfig eth0:0 down
安装配置keepalived
yum install keepalived -y
安装完毕以后到keepalived 配置文件的目录,对配置文件先进行一个备份再进行修改。以免手滑改错好恢复。
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vi keepalived.conf
这里我们指定了100 为主lvs ,104 为备用服务器。所以,在配置文件中找到一个vrrp_instance_VI_1的节点,其中修改 state MASTER。指定100为主lvs服务器,稍后再去104上面把这个值修改成BACKUP就行了。
设置默认的优先级
priority 100
保证master的优先级高于备份服务器,在备份服务器上面配置priority 50 就好了。
注意这里如果对keepalived.conf 文件配置不清楚,可以通过帮助手册查询。
man 5 keepalived.conf
继续在keepalived服务器中配置virtual_ipaddress
virtual_ipaddress {
192.168.146.100/24 dev eth0 label eth0:3
}
vip配置完毕以后,配置virtual server 和对应的real server (RS1,RS2)。也就是lvs服务器和要做负载均衡的服务器。找到 virtual_server 节点。
virtual_server 192.168.146.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.146.102 80 {
weight 1
HTTP_GET {
url {
path /
status_code 200
}
}
}
}
上面的配置注意几点
lb_algo rr:配置负载均衡轮询机制
lb_kind DR:配置的lvs的DR模型,这个之前的文章中介绍过。
persistence_timeout 0:这个是每个连接持续的时间,生产环境可以配置一个数值例如:50,这里为了好测试结果我们填写0.
然后如法炮制把另外一个RS服务器也这么配置。就是在 real_server 192.168.146.103后面加上和102 一样的配置内容。
这样主lvs服务器的keepalived的配置就做好了。那么只需要把这个配置文件copy到从lvs服务器上面再做一下修改就好了。命令如下
cd /etc/keepalived/
scp ./keepalived.conf root@192.168.146.104:`pwd`
copy过去以后到从lvs下面修改
state BACKUP
priority 50
启动keepalived 服务
service keepalived start
ipvsadm -ln
这个操作需要再主从lvs上面都做一次。
检查主从lvs中的负载均衡配置表
ipvsadm -ln
把两个RS 都加入到负载均衡表里面了。
现在模拟把主机关掉或者断开 ,keepalived会自动把VIP 192.168.146.100 漂移到了从lvs。