lvs集群当中的高可用架构只是针对调度器的高可用
基于vrrp来实现调度器的主和备
高可用的HA架构
主调度器和备调度器(多台)
在主调度器正常工作的时候,备完全处于冗余状态(待命),不参与集群的运转,只有当主调度器出现故障时,备才会承担主调度器的工作。主调度器恢复功能后,主继续做为集群的入口,备继续处于冗余状态(取决于优先级)
keepalive基于vrrp协议来实现lvs高可用的方案
1、组播地址:
224.0.0.18,根据组播地址来进行通信,主和备之间发送报文,确定对方是否存活
2、根据优先级的大小来确定主和备的位置
3、故障切换,主挂了,备来继续工作,主恢复了,备继续等待
4、主和备之间的切换是vip地址的切换
keepalive是专门为了lvs而出现的,但是不是lvs专用的
keepalive是调度器的高可用
vip地址主备之间的切换,主在工作时,vip地址只在主上,主停止工作,vip漂移到备服务器
在主备的优先级不变的情况下,主恢复工作,vip会漂移回到主服务器
1、配优先级
2、配置vip和真实服务器
3、主备的id要一致
4、主备的id要区分
keepalive也可以使用nginx,haproxy
keepalive+nginx实现高可用
*问:脑裂是什么?
HA架构(高可用架构)中的一个特殊现象,只要使用VIP地址代理的冗余模式的高可用,都有可能出现脑裂的问题。即主和备同时都有VIP地址。
主和备无法确定各自的身份,同时出现了VIP地址,两边都起来了,但两边都无法使用。
可能原因:
1、keepalive的配置文件问题
2、心跳线(网线)断了,老化
3、网卡问题(硬件),ip地址配置冲突
4、防火墙的策略,iptables的策略,屏蔽了组播的地址广播,屏蔽了vrrp协议的报文
5、两台服务器的时间不同步也可能导致
6、其他的服务配置对心跳线的检测造成了干扰
怎么解决脑裂?
1、检查硬件,网卡,网线等
2、查看主备节点的keepalived日志,查看具体报错信息,定位问题
3、检查端口冲突和监听设置,确保其他服务没有占用keepalived使用的VIP或者监控端口。
4、查看配置文件,检查IP地址配置、心跳线检测的间隔和超时时间等配置是否合理
5、查看防火墙策略,确定心跳线检测消息没有被屏蔽
6、查看服务器网络状态,以及时间是否同步
7、准备两条心跳线,这样一条坏了,另一条仍然能继续传送
keepalive实验:
test1 192.168.233.10 主
test2 192.168.233.50 备
vip 192.168.233.100
nginx1 192.168.233.20
nginx2 192.168.233.30
客户端 192.168.233.40
步骤
1.主和备都要同样操作
yum -y install ipvsadm keepalived
vim /etc/sysctl.conf
net.ipv4.ip_forward=0
net.ipv4.conf.all.send_redirects=0
net.ipv4.conf.default.send_redirects=0
net.ipv4.conf.ens33.send_redirects=0
sysctl -p
ipvsadm -C
ipvsadm -A -t 192.168.233.100:80 -s rr
ipvsadm -a -t 192.168.233.100:80 -r 192.168.233.20:80 -g
ipvsadm -a -t 192.168.233.100:80 -r 192.168.233.30:80 -g
ipvsadm-save >/etc/sysconfig/ipvsadm
systemctl restart ipvsadm
ipvsadm -ln
2、修改主的配置文件
cd /etc/keepalive
vim keepalived.conf
3、修改备的配置文件
实验结果:
keepalive+nginx实现高可用(主备切换)
数据流向:
实验步骤:
1.vim check_nginx.sh
写一个check_nginx.sh的脚本
#!/bin/bash
/usr/bin/curl -I http://localhost &> /dev/null
if [ $? -ne 0 ]
then
systemctl stop keepalived
fi
2、主的配置
chmod 777 check_nginx.sh
cd /etc/keepalived/
vim keepalived.conf
script "/opt/check_nginx.sh"
调用脚本内容,检测nginx的状态
interval 5
检测的间隔时间是5s
可以删除这个后面的所有内容并添加监控配置
重启
systemctl restart nginx
systemctl restart keepalived
3、备的配置
把主的配置复制到备进行修改
scp root@192.168.233.20:/etc/keepalived/keepalived.conf /etc/keepalived/
cd /etc/keepalived/
vim keepalived.conf
实验结果
如果主nginx停止 keepalive也自动停止 备启用,vip偏移到备上