centos 7 防止及解决keepalive脑裂现象(主备均有vip)
关于ARP信息介绍:
ARP表是一个动态表,存储在计算机当中,目的是做一个ip地址与mac地址的对应。
假设在同一子网段,计算机A与计算机B通信
计算机A的ip地址: 192.168.0.11 MAC地址AA-AA-AA-AA-AA-AA
计算机B的ip地址: 已知192.168.0.12 MAC地址未知
那么计算机A就要发起一个ARP查询,“谁能告诉我,192.168.0.12的MAC地址是多少?”
很显然通过交换机的时候,交换机并不能看懂ip地址,所以要广播这个信息,就把这个查询信息发到除发送端的其它所有端口。(当然,交换机还要记住192.168.0.11主机的mac地址)
其它所有的计算机看到这个广播发现目的ip不是自己,就把这个数据丢弃,只有192..168.0.12的计算机B会响应,并发送回执,告诉计算机A,“我是192.168.0.12,我的MAC地址是AA-AA-AA-AA-AA-AB”当通过交换机,交换机记住从计算机B端口过来的MAC地址,并通过已知的A计算机MAC地址,发动到连接计算机A的端口。(此时不再广播)计算机A与计算机B都知道对方的ip和MAC地址,开始通信。
假设在同一子网段,计算机A与计算机B通信
计算机A的ip地址: 192.168.0.11 MAC地址AA-AA-AA-AA-AA-AA
计算机B的ip地址: 已知192.168.0.12 MAC地址未知
那么计算机A就要发起一个ARP查询,“谁能告诉我,192.168.0.12的MAC地址是多少?”
很显然通过交换机的时候,交换机并不能看懂ip地址,所以要广播这个信息,就把这个查询信息发到除发送端的其它所有端口。(当然,交换机还要记住192.168.0.11主机的mac地址)
其它所有的计算机看到这个广播发现目的ip不是自己,就把这个数据丢弃,只有192..168.0.12的计算机B会响应,并发送回执,告诉计算机A,“我是192.168.0.12,我的MAC地址是AA-AA-AA-AA-AA-AB”当通过交换机,交换机记住从计算机B端口过来的MAC地址,并通过已知的A计算机MAC地址,发动到连接计算机A的端口。(此时不再广播)计算机A与计算机B都知道对方的ip和MAC地址,开始通信。
服务器网络环境中,因为路由交换层禁用了ARP的广播限制,造成KEEPALIVE主备协议无法通过广播的方式进行通信,造成主备两台服务器都强占HAVIP地址,出现同时两台服务器都有VIP地址的情况出现,必须通过配置来指定IP的两台服务器间进行通讯。
解决方法:
一 防火墙设置:
a) firewalld 开启vrrp 协议
firewall-cmd --direct --permanent --add-rule ipv4 filter INPUT 0 --in-interface eth0 --destination 224.0.0.18 --protocol vrrp -j ACCEPT
注释: eth0 为设备网卡, 224.0.0.18 为vrrp组播地址
firewall-cmd --reload
b)iptables
master(本地:192.168.0.11)
-A INPUT -i em1 -p vrrp -s 192.168.0.12 -j ACCEPT #(192.168.0.12 对端IP)
backup (本地:192.168.0.12)
-A INPUT -i em1 -p vrrp -s 192.168.0.11 -j ACCEPT #(192.168.1.11 对端IP)
二 keepalived 来指定IP的两台服务器间进行通讯。
添加配置如下:
priority 100 ##主服务100 备服务90只要小于100就可以
unicast_src_ip 192.168.0.11##(本地IP地址)
unicast_peer {
192.168.0.12##(对端IP地址)此地址一定不能忘记
}
unicast_src_ip 192.168.0.11##(本地IP地址)
unicast_peer {
192.168.0.12##(对端IP地址)此地址一定不能忘记
}
本文来自博客园,作者:六月OvO,转载请注明原文链接:https://www.cnblogs.com/chenlifan/p/13773723.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~