linux的防火墙对ipv6的配置里,如果将icmp包全部drop掉,将导致无法访问ipv6网络,本文介绍一例该原因导致的同步一直报错的现场运维案例。
目录导航
现场环境
3节点集群,客户发现有2个节点出现数据不一致的情况。其中前2个节点是初始安装的,第3个节点是后来扩容的。
排查过程
查看gcrecover.log
发现同步命令gc_sync_client一直返回错误 60
查看节点的数据同步日志
发现报错信息是无法连接到服务器 ::1,这个::1是本地的回路地址,和127.0.0.1是一样的,表示ipv6格式的本机。
尝试ping这个地址
发现无法ping通,数据包全部丢失
检查sysctl和ifconfig配置
一切正常,ipv6协议是开启的,没有被disable掉
检查防火墙
发现链路的icmp是被全部DROP的
打开防火墙关于ipv6的配置
再次尝试ping,可以连通了。
总结
此问题现场折腾了很久,因为ipv4是整行的。数据库之间连接也是正常的,但就是本地的::1地址不通。估计是操作系统管理员认为不需要ipv6,就安全加固了一下导致。