首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

LVS 開機自啟動失效診斷實錄:缺失 /etc/sysconfig/ipvsadm 配置文件導致 ipvs 模塊未加載

     編輯:PHP 相關知識

LVS 重啟不自啟?一個缺失配置文件引發的「鬼故事」

生產環境多套 LVS 負載均衡節點,配置相同的 chkconfig --level 2345 ipvsadm on,唯獨一台重啟後 ipvs 模塊未加載、服務掛起。日志報 IPVS: Can't initialize ipvs: Protocol not available,手動 ipvsadm -Ln 卻能恢復。本文記錄排查全過程,直指核心原因:缺失 /etc/sysconfig/ipvsadm 配置文件。

故障現象

  • OS:CentOS 6/7,LVS + Keepalived 架構。
  • 已執行 service ipvsadm save 並 chkconfig ipvsadm on。
  • 重啟後 lsmod | grep ip_vs 為空,模塊未加載。
  • /var/log/messages 狂刷 Keepalived_healthcheckers: IPVS: Can't initialize ipvs: Protocol not available。
  • 手動 ipvsadm -Ln 或 /etc/init.d/ipvsadm start 後恢復正常。

排查邏輯鏈

  1. 鎖定現場:日志明確提示 Protocol not available → 內核 ip_vs 模塊未加載。
  2. 驗證模塊:lsmod | grep ip_vs 確認無模塊。
  3. 排除軟件版本:升級 ipvsadm 到 1.25、調整安裝順序、調整啟動順序,問題依舊 → 非版本/順序問題。
  4. 關鍵突破口:嘗試 /etc/init.d/ipvsadm start 後再重啟,**竟然自啟動成功了** → 啟動腳本執行過程中產生了關鍵文件/狀態。
  5. 定位腳本依賴:閱讀 /etc/init.d/ipvsadm 啟動腳本,發現其依賴配置文件 /etc/sysconfig/ipvsadm。
  6. 驗證缺失:ls /etc/sysconfig/ipvsadm → 文件不存在!
  7. 修復驗證:touch /etc/sysconfig/ipvsadm 創建空文件 → 重啟 OS → ipvsadm 服務正常自啟動,lsmod 顯示模塊已加載。

根因分析

ipvsadm 服務腳本啟動邏輯大致為:

  1. 讀取 /etc/sysconfig/ipvsadm 獲取保存的規則/參數。
  2. 調用 ipvsadm --restore 或直接 modprobe ip_vs 加載模塊並應用規則。
  3. 若配置文件**不存在**,腳本判定「無需啟動」或直接退出,**不執行模塊加載**。

而 service ipvsadm save 正是將當前規則寫入該配置文件的命令。**部署人員漏執行此步驟**,導致文件缺失,重啟時服務靜默失敗。

最佳實踐:標準化部署 SOP

# 1. 安裝軟件
yum install ipvsadm keepalived -y

# 2. 配置 LVS 規則 (ipvsadm -A -t ...)
# 3. **關鍵步驟:保存規則到配置文件**
service ipvsadm save
# 產出 /etc/sysconfig/ipvsadm

# 4. 設置開機自啟
chkconfig ipvsadm on
chkconfig keepalived on

# 5. 驗證
reboot
lsmod | grep ip_vs   # 必須有輸出
ipvsadm -Ln          # 規則正常

舉一反三:其他服務同類問題

  • iptables:需 service iptables save 生成 /etc/sysconfig/iptables,否則重啟規則丟失。
  • docker:若不配置 --restart=always 或 systemd unit,容器不會自啟動。
  • 所有 /etc/init.d/ 腳本依賴 /etc/sysconfig/ 下同名配置文件的服務,均需執行 save 步驟。

總結

「配置了自啟動卻不自啟」,90% 是**啟動腳本前置條件未滿足**(配置文件缺失、目錄權限錯、依賴服務未起)。養成 service xxx save 肌肉記憶,部署文檔落紙為證,才能杜絕此類低級故障。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved