环境说明:
DB:MySQL 8.0.x,MySQL 5.7.x
架构:MySQL双主+Keepalived
OS:Kylin Linux v10 SP1
问题现象:
将MySQL数据库从Redhat操作系统迁移到银河麒麟Kylin Linux v10后,执行MySQL数据库切换和回切。回切后,发现VIP地址无法ping通,应用无法通过VIP地址连接数据库。
问题分析:
Redhat系统没问题,在银河麒麟Kylin v10可以稳定重现。
最开始怀疑VIP漂移后,服务器arp缓存没有更新,手动执行了arp广播,问题依然存在。
难道是keepalived的问题,尝试关闭keepalived服务,通过手动执行ifconfig命令添加VIP,然后arp广播,问题仍然可以重现,显然不是keepalived的问题。
尝试重启network.service服务,恢复正常。
root@cjc-db-01:/cjc#systemctl restart network.service
联系厂商排查原因。
问题原因:
收集了sosreport日志,发现route local表出现异常,问题环境比正常环境多了以ip开头的路由信息:
查询:
ip route show table local
结果如下:不应该出现IP开头的路由。
broadcast 192.0.0.0 dev enpxxx proto kernel scope link src 192.0.0.101
local 192.0.0.101 dev enpxxx proto kernel scope host src 192.0.0.101
192.0.0.101 dev enpxxx proto kernel scope host src 192.0.0.101
正常环境下,table local中没有以ip开头的条目
broadcast 192.0.0.0 dev enpxxx proto kernel scope link src 192.0.0.101
local 192.0.0.101 dev enpxxx proto kernel scope host src 192.0.0.101
该问题属于Kylin Linux v10操作系统NetworkManager软件1.16.0-7.p08.ky10.x86_64版本已知bug。
p08版本在代码修改过程中新增了一个向local表添加路由的函数,在使用P08版本NetworkManager软件包时,进行重启NetworkManager服务操作后,local表会新增一条以ip开头路由条目,进而引发了问题。
而p07和p09都没有这个问题,只有p08版本有这个问题。
解决方案:
升级NetworkManager版本
rpm -qa|grep NetworkManager
rpm -qa|grep NetworkManager-config-server
yum update NetworkManager
yum update NetworkManager-config-server
重启服务
systemctl restart NetworkManager.service
systemctl restart network.service
注意:仅供参考
###chenjuchao 20250102###
欢迎关注我的公众号《IT小Chen》