开源负载均衡LVS随机自启动异常诊断案列分析
为响应国家的号召,倡导IT信息系统软硬件设施的的安全、自主与可控性,我们公司也在着力推进IT软硬件的国产化与开源化。也因此引入了开源负载均衡软件LVS且在生产中部署了多套LVS系统。在使用过程中发现一个比较奇怪的问题,部分LVS系统在配置随机自启动后,在操作系统重启可以正常随服务器启动但其中有一套系统却无法随操作系统自启动服务。为了解决这个问题,所以才有了下文。
一、问题现象
这套LVS的故障具体现象如下:
已正常将LVS配置为系统服务并且设置为2345开机自启动,但重启服务器后发现服务并未按照预期启动。通过查看系统的诊断日志tail –f /var/log/messages,发现ipvs频繁刷日志到messages文件。
具体错误信息如下:Keepalived_healthcheckers: IPVS: Can't initialize ipvs: Protocol not available。手动执行ipvsadm -Ln后服务恢复正常。
二、分析过程:
1.通过诊断日志提示我们可以确认产生该问题的根本原因在于ipvs模块在系统重启时没有被正常加载
2.通过执行如下命令lsmod|grep ip_vs也进一步印证了相应module没有被加载到kernel之中
那么到底是什么原因导致ipvs模块没有被加载进到linux的内核中的呢?
三、Debug的具体思路:
1.测试设置重启先不启动keepalived,只启动ipvsadm查看能否启动,重启后问题依旧,说明问题暂时不在keepalived上;
2.更换高一点版本的ipvsadm,换成1.25,测试后问题依旧;
3.开始怀疑是安装顺序的原因,于是ipvsadm两个版本都测试与keepalived不同的安装顺序,配合启动的顺序,问题依旧;
4.偶然使用/etc/init.d/ipvsadm start命令启动ipvs服务后再次重启操作系统,ipvsadm成功被系统拉起来了,立即保存快照。
5.于是检查ipvsadm的启动脚本,脚本比较繁琐,涉及到很多文件,发现一配置文件/etc/sysconfig/ipvsadm。突然来了灵感,是不是配置文件有问题。在搜索ipvsadm文件后,发现了问题,在/etc/sysconfig下少一个配置文件;
6.手工建立ipvsadm配置文件 touch ipvsadm,然后重启系统,ipvsadm服务成功启动
四、最佳解决方案
在部署并配置完成LVS后执行service ipvsadm save命令
五、产生该问题的原因
相关部署人员没有按照部署手册实施漏掉相关步骤导致而ipvs的随机自启动恰好依赖于相关的配置文件。