nginx+keepalive:
调度器的高可用
vip地址主备之间的切换,主在工作时,p地址只在主上,主停止工作,p飘移到备服务器。
在主备的优先级不变的情况下,主恢复工作,vp会飘回到主服务器。
1、配优先级
2、配置vp和真实服务器
3、主备的id要一致
4、主备的id要区分
keepalive是专门为了lvs而出现的,但是不是lvs专用的。
keepalive也可以使用nginx,haproxy(用的少)
keepalive+nginx实现高可用
先关闭防火墙和安全机制
配置web服务器RS1(nginx1)
vim /keepalived/keepalived.conf
vrrp_script check_nginx {
script "/opt/check_nginx.sh"
调用脚本内容,检测nginx的状态
interval 5
检测的间隔时间是5秒
}
重启keepalive
systemctl restart keepalived
查看一下ip地址
ip addr
配置web服务器RS2(nginx2)
[root@test1 ~]# scp root@192.168.124.40:/etc/keepalived/keepalived.conf /etc/keepalived/
The authenticity of host '192.168.124.40 (192.168.124.40)' can't be established.
ECDSA key fingerprint is SHA256:CPfJiazvOOPNVRkdUgD/NjBZIbLOZ0cCos7KzWKxhoA.
ECDSA key fingerprint is MD5:91:c5:ed:31:8f:76:72:95:42:4d:d6:e7:f3:5f:72:11.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.124.40' (ECDSA) to the list of known hosts.
root@192.168.124.40's password:
keepalived.conf 100% 789 154.7KB/s 00:00
把nginx1的keepalived.conf里面的文件复制到nginx2的keepalived.conf里面
在更改里面的配置
更改他的唯一的id号 , 还有备服务器的名称以及他的优先级
查看一下他的ip地址有没有vip地址,如果有就会形成脑裂
没有vip地址,现在我们实验停止nginx1的nginx,看一下他的vip地址会怎么样
客户端访问一下
vip地址没有了,查看一下nginx2里面有没有
vip地址飘到nginx2里面了,我们在恢复nginx1的nginx
我们客户端访问一下
现在主的服务器又能运作了
这就是nginx+keepalive
脑裂的原因是什么?怎么解决?
原因:
1、keepalive的配置文件问题(90%都是配置问题)
2、心跳线(网线)断了,老化。
3、网卡出了问题(硬件),ip地址配置冲突。
4、防火墙的策略,iptables的策略,屏蔽了组播地址广播,屏蔽了vrrp协报文
5、两台服务器的时间不同步也可能导致。
6、其他服务配置对心跳线的检测造成了干扰。
怎么解决:
1、keepalive的配置文件问题:
检查配置文件的语法错误:仔细检查配置文件中的各项参数设置,确保没有拼写错误、遗漏或不正确的语法
router_id 确保每个 keepalived 节点的 router_id 是唯一的。
virtual_router_id: keepalived 节点值必须相同。
priority:根据实际需求设置主节点和备份节点的优先级。
2、心跳线(网线)断了,老化:
检查网络连接和心跳线:脑裂问题可能是由于心跳线链路故障导致的。确保高可用服务器对之间心跳线链路正常,检查心跳线是否损坏、老化。配置一条冗余的心跳线出现异常更换。
3、网卡出了问题(硬件),ip地址配置冲突。
virtual_ipaddress 确认虚拟 IP 地址的设置是否与其他配置的 IP 存在冲突。
4、防火墙的策略,iptables的策略,屏蔽了组播地址广播,屏蔽了vrrp协报文
在keepalive.conf配置文件中添加一条vrrp_iptables,或者iptables -F 清空策略
5、两台服务器的时间不同步也可能导致。
修改服务器的时间,或创建定时任务。
6、其他服务配置对心跳线的检测造成了干扰。
暂停或关闭干扰的服务,更改干扰服务与keepalive的优先级,重新配置干扰服务。