心跳网口的子网掩码不一致导致HA双主

发布时间:  2013-09-26 浏览次数:  670 下载次数:  0
问题描述
A项目,在进行过“将一个MDS删除后、通过扩容加入系统”的测试后,出现HA双主被抑制的情况(MDS1上的Heartbeat服务被停止,MDS2为系统中主MDS)。
告警信息
云存储域监测到两个主MDS服务
HeartBeat双主,一个MDS被关闭
处理过程
修改MDS1心跳网口的子网掩码,与主MDS保持一致(255.255.0.0)。然后启动被抑制的MDS上的heartbeat服务,启动成功后系统的HA状态恢复正常。
1、 不重启网络的前提下,修改子网掩码。
1) 执行命令:ifconfig bond1 192.168.0.x netmask 255.255.0.0
2) 修改配置文件:/etc/sysconfig/network/ifcfg-bond1
2、 启动MDS1上的heartbeat服务
执行命令:/etc/init.d/heartbeat start
3、等待1分钟, 确认系统中HA状态正常
 在MDS1和MDS2分别执行命令:mdsmml mds hastatus
主MDS状态为:Primary MDS,备MDS状态为:Secondary MDS。
根因
1) 经检查,两个MDS间的心跳直连线状态正常,心跳IP可互相ping通。但分析HA的日志,Heartbeat软件始终认为对方无法ping通,进而出现了系统双主的现象。
2) Heartbeat通过心跳网口向对端发送UDP广播包,来确认节点心跳是否正常。
3) 现网进行扩容测试(将MDS1节点停止后、再扩容至系统)时,“心跳—子网掩码”项填写为了255.255.255.0,与最初部署时的配置(255.255.0.0)不一致。扩容后两个MDS的IP地址及掩码为:MDS1—192.168.0.x/24;MDS2—192.168.0.y/16。
4) 在子网掩码不一致的情况下,虽然可ping(实际进行的是ICMP ping)通,但实际HA ping(实际进行的是UDP ping)失败,所以出现了双主现象,进而被HA监控脚本抑制。
子网掩码不一致,会导致HA心跳网口通信失败,进而导致双主。
建议与总结
在进行部署、扩容时,要特别注意两个MDS心跳网口的子网掩码保持一致。

END