nginx;keepalived配置出现主主的解决方法(脑裂问题)

时间:2022-02-24 14:41:29

1.查看日志

tail -f  /var/log/messages

发现master和backup机都是mastaer模式启动的

nginx;keepalived配置出现主主的解决方法(脑裂问题)

通过查看别人的经历,发现VRRP基于报文实现的。master设置一定时间发送一个报文给backup如果backup没有收到就自己成为master。可推出导致问题的原因是因为backup没有收到文

所以自己成为了master。

VRRP控制报文只有一种:VRRP通告(advertisement)。它使用IP多播数据包进行封装,组地址为224.0.0.18,发布范围只限于同一局域网内。这保证了VRID在不同网络中可以重复使用。为了减少网络带宽消耗只有主控路由器才可以周期性的发送VRRP通告报文。备份路由器在连续三个通告间隔内收不到VRRP或收到优先级为0的通告后启动新的一轮VRRP选举。

------------以下转载别人的博客

  centos7安装keepalived后,不关闭防火墙,虚拟ip不能实现漂移,双机都为master,不能实现双机热备的效果。原因是防火墙中没有方形vrrp的组播 IP 244.0.0.18。centos7下使用的防火请是firewall,本人不会使用centos7默认的防火墙放行组播IP,所以禁用掉centos7默认的防火墙,使用iptables防火墙。

     


1、关闭默认的firewall防火墙
#systemctl stop firewalld.service停止firewalld服务
#systemctl disable firewalld.service进制开机自启动

2、开启iptables
#yum install iptables(根据centOS7的版本和内核,有些版本已经装过,可以跳过此命令)

#yum install iptables-services


3、编辑iptables文件
#vim /etc/sysconfig/iptables
在文件中添加一下内容
-A OUTPUT -o eno16777736 -d 224.0.0.18 -j ACCEPT    注解:eno16777736 是网卡名称
-A OUTPUT -o eno16777736 -s 224.0.0.18 -j ACCEPT
-A INPUT -i eno16777736 -d 224.0.0.18 -j ACCEPT
-A INPUT -i eno16777736 -s 224.0.0.18 -j ACCEPT

4、开启服务,设置开机自启动
#service iptables restart

#chkconfig iptables on或者systemctl enable iptables.service开机自启

此时就能实现虚拟ip的漂移,当master(keepalived)挂掉时,虚拟ip会漂移到backup(keepalived)上,master启动后虚拟ip又飘逸回来。
---------------------
原作者:王旭光
来源:CSDN
原文:https://blog.csdn.net/qq_25331821/article/details/54602143