nginx-7:高可用主备模式
参考:https://blog.csdn.net/ljx1528/article/details/82842194
1. 原理
VRRP 协议,全程 Virtual Router Redundancy Protocal,中文名为虚拟路由冗余协议,VRRP 的出现是为了解决静态路由的单点故障。
VRRP 是用 IP 多播的方式(默认多播地址 224.0.0.18)实现高可用对之间通信的。
工作时,主节点发包,备用节点接包,当备用节点接收不到主节点发的数据包的时候,就启动接管程序接管主节点的资源。备用节点可以有多个,通过优先级竞选,但一般 keepalived 都是使用一对。
2. 配置
略
3. keepalived 产生脑裂的原因与解决方法
脑裂指在一个高可用(HA)系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱,数据损坏。
一般来说,脑裂的发生,有一下几种原因:
1)高可用服务器对之间心跳线路发生故障,导致无法正常通信
- 因心跳线坏了(包括断了,老化)
- 因网卡及相关驱动坏了,ip 配置及冲突问题
- 因心跳线连接的设备故障(网卡及交换机)
- 因仲裁的机器出现问题(采用仲裁的方案)
2)高可用服务器上开启了防火墙阻挡了心跳消息传输
3)高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败
4)其他服务器配置不当等原因,如心跳方式不同,心跳广插冲突
5)keepalived 配置里同一 VRRP 实例,如果 virtual_router_id 两端参数配置不一致也会导致裂闹问题发生
常见的解决方案
1)同时使用串行电缆和以太网电缆连接,同时用两条心跳线路,这样一条线路坏了,另一个还是好的,依然能传送心跳消息
2)当检测到裂闹时强行关闭一个心跳节点(这个功能需要特殊设备支持,如果 Stonith、feyce)。相当于备用节点接收不到心跳消息,通过单独的线路发送关机命令关闭主节点电源
3)做好对裂脑的监控报警(如邮件或手机短信或值班)。在问题发生时人为第一时间介入仲裁,降低损失。