keepalived的群集IP能ping通,但是服务端口一会儿就不通【原创】
故障现象:keepalived的群集IP能ping通,但是服务端口一会儿就不通
处理方法:
1、修改keepalived配置,以下无效
1、修改keepalived配置,以下无效 vrrp_unicast_bind 10.70.X.X # 本机IP vrrp_unicast_peer 10.70.X.X # 对点IP
2、修改keepalived配置,以下无效
unicast_src_ip 10.70.X.X # 本机IP unicast_peer { 10.70.X.X # 对方IP }
参数说明
#在网卡上,用于绑定vrrpd的默认ip是主ip,如果你想隐藏本地vrrpd,可以使用这个ip作为多播和单播vrrp报文的源地址(如果是多么,vrrpd将会接收到数据包,无论使用什么样的源IP地址) mcast_src_ip <IPADDR> #指定多播源ip地址 unicast_src_ip <IPADDR> #指定单播源ip地址 version <2 or 3> #指定运行在这个网卡上的vrrp版本,默认使用的是全局配置的参数“vrrp_version” unicast_peer { #不通过vrrp组播群组发送vrrp广播报文。相反,通过单播的方式将广告发送到一下ip列表中。在某些不支持多播的网络环境中 <IPADDR> #使用VRRP FSM(Finite State Machine有限状态机)和功能也是不错的。 ... #指定的ip可以是IPV4 和IPV6 }
vrrp_strict: 慎用,严格遵守VRRP协议。下列情况将会阻止启动Keepalived:1. 没有VIP地址。2. 单播邻居。3. 在VRRP版本2中有IPv6地址。
keepalived的原理
在传统的物理网络中,可以通过 keepalived 的 VRRP 协议协商主备状态,其原理是:主设备周期性发送免费 ARP 报文刷新上联交换机的 MAC 表或终端 ARP 表,触发 VIP 迁移到主设备上。
开启组播功能 打开 VPC 组播开关;同时在 keepalived 配置文件中无需配置对端设备的 IP 地址,即不配置 “unicast_peer” 参数
#单播模式需要关闭vrrp_strict,严格遵守vrrp协议这个选项 单播需要在VIP实例配置段加入单播的源地址和目标地址
推荐
! Configuration File for keepalived global_defs { router_id LVS_IBE } vrrp_script chk_http_port { script "/etc/keepalived/chk.sh" interval 2 ###监控时间 weight 3 } vrrp_instance VI_1 { # state MASTER #状态,位主,从机使用BACKUP state BACKUP interface eth1 #绑定虚拟IP的网络接口 virtual_router_id 114 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组 priority 70 #权重,哪权重高,那个就是主的,所以MASTER的权重必须高于BACKUP advert_int 1 #组播信息发送间隔,两个节点设置必须一样 nopreempt #非争抢机制 unicast_src_ip 10.0.69.96 unicast_peer { 10.0.69.95 } authentication { auth_type PASS #主从机子通信的加密方式,两台必须一样 auth_pass 1070 #主从机子通信的加密密码,两台必须一样 } virtual_ipaddress { 10.0.69.89/24 #指定虚拟IP, 两个节点设置必须一样 } track_script { chk_http_port #监控脚本,chk_http_port对应的是第3行的vrrp_script chk_http_port } }
网上参考
[root@node1 ~]# cat /etc/keepalived/keepalived.conf ! Configuration File for keepalived global_defs { notification_email { acassen@firewall.loc failover@firewall.loc sysadmin@firewall.loc } } vrrp_script checkhaproxy { #script "/etc/keepalived/do_sth.sh" # 检测业务进程是否运行正常。其中“do_sth.sh”文件为用户自定义的业务进程检测脚本,请根据业务需要来执行,执行时“do_sth.sh”更换为实际的脚本名称。 script "/usr/bin/curl -s http://10.0.22.16:8008/leader -v 2>&1|grep '200 OK' >/dev/null" interval 5 } vrrp_instance VI_1 { # 注意主备参数选择 state BACKUP # 设置初始状态均为“备“ interface eth0 # 设置绑定 VIP 的网卡 例如 eth0 virtual_router_id 51 # 配置集群 virtual_router_id 值 nopreempt # 设置非抢占模式, # preempt_delay 10 # 仅 state MASTER 时生效 priority 100 # 两设备是相同值的等权重节点 advert_int 5 authentication { auth_type PASS auth_pass 1111 } unicast_src_ip 10.0.22.16 # 设置本机内网IP地址 unicast_peer { 10.0.22.6 # 对端设备的 IP 地址 10.0.22.17 } virtual_ipaddress { 10.0.22.144 # 设置高可用虚拟 VIP } garp_master_delay 1 # 设置当切为主状态后多久更新 ARP 缓存 garp_master_refresh 5 # 设置主节点发送 ARP 报文的时间间隔 track_interface { eth0 # 使用绑定 VIP 的网卡 例如 eth0 } track_script { checkhaproxy } }
keepalived推荐使用单播方式进行 VRRP 通信 - littlevigra - 博客园
https://www.cnblogs.com/hixiaowei/p/16181822.html
其中还查到涉及到改net.ipv4.tcp_timestamps = 1参数,查看别的服务器这参数都是打开的,所以人为错误忽略此修改
Linux服务器可以ping,但是telnet端口超时,网站wget超时,访问超时的解决办法 - 百度文库
https://wenku.baidu.com/view/7e1de8f0b3717fd5360cba1aa8114431b80d8e64.html?_wkts_=1678326045695
3、最后发现是群集IP配置错误,与其他服务器IP相同
4、避免此类问题方法
1)部署keepalived前,先ping 所给的vip,看是否通,如果通则有可能已被使用
2)让开发转云平台所分配的订单邮件,订单上会有群集IP是多少,避免手误发错。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2017-03-08 linux中Shell标准输出错误 >/dev/null 2>&1 分析【转】
2016-03-08 WebSphere MQ 入门指南【转】
2016-03-08 MQ日常维护操作手册