開源負載均衡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的隨機自啟動恰好依賴於相關的配置文件。