问题现象
服务器路由变更导致集群节点无法接收 sql 任务:某个服务器( ip 为 45 的节点)重启后, gcadmin 和数据同步均正常,各 event 均为 0。但是执行语句时报该节点查询返回失败,且该节点的 gn 层 show processlist 显示没有集群层下发的语句进来。
express 日志报错:
gns_host:10.174.20.32 can't get datasession:Failed to connect to:10.174.18.45,Details:last_errno:20 03(failed to connect to host) |
原因分析
通过 route 检查路由列表发现该节点重启后 default 路由变成了非集群所用 IP 所用的路由。
#route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.174.18.0 * 255.255.255.0 U 0 0 0 bond1
10.174.64.0 * 255.255.255.0 U 0 0 0 bond0
link-local * 255.255.0.0 U 1008 0 0 bond0
link-local * 255.255.0.0 U 1009 0 0 bond1
default 10.174.64.254 0.0.0.0 UG 0 0 0 bond0
处理方法
执行 route del 删除和 route add 新增更换路由得以处理,同时建议系统维护厂商将正确路由和网关写入配置文件让其长期有效。
修改命令:
route del -net 10.174.64.0 netmask 255.255.255.0 dev bond0
route del default gw 10.174.64.254
route add default gw 10.174.18.1
示例
#route
Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10.174.18.0 * 255.255.255.0 U 0 0 0 bond1 link-local * 255.255.0.0 U 1002 0 0 eth0 link-local * 255.255.0.0 U 1009 0 0 bond1 1.0.0.0 * 255.0.0.0 U 0 0 0 eth0 default 10.174.18.1 0.0.0.0 UG 0 0 0 bond1