背景:2019一月份我对我们项目的开发环境及测试环境,做了一次数据库灾备及高可用方案,MYSQL采用的是主主复制+keepalived机制(虚拟IP采用的是:xxx:xxx:xxx:225),MongoDB采用的是复制集模式。
问题:从1月20号上测试环境至3月27都没出现任何问题。结果3月28日早上,相继有人告诉我,虚拟IPxxx:xxx:xxx:225无法使用。
现象:1.xxx:xxx:xxx:225,此IP可以ping通,但是mysql的端口无法netstat
2.重启keepalived过后,所有服务恢复正常,IP可以ping通,mysql的端口3306也可以netstat;但是,过后不一会,又会出现只能ping通,但是mysql的端口无法netstat;反反复复
尝试:1.keepalived重启,不能持续解决问题;
2.升级keepalived至2.0.0版本,依旧无法解决;
3.linux配置设置及keepalived的配置修改等……
依旧无法解决……
最终:最后经过层层排查,才发现真正问题,原来是我的虚拟IP被物理服务器抢占了。之前我做虚拟IP设置时,225没人申请和使用,3月28号有人注册了225的物理IP服务器……
这问题回头来看,其实很简单,通过仔细分析问题的现象,多做下问题分析可能会更早的解决,而我却走偏了道,以为是版本或者服务器配置问题导致的,花了我大半天时间……
希望他人有遇到这样情况的,能吸取经验教训!