在實際操作 Proxmox VE 集群時,如何變更 cluster IP 並讓所有節點正確同步更新,是一個常見但又需要謹慎處理的課題。本文將分享我在變更集群內部通訊 IP、更新 /etc/pve/corosync.conf
以及後續重啟服務、檢查狀態過程中的經驗與步驟,期望對有類似需求的朋友有所幫助。
前言
在 Proxmox VE 集群中,corosync 配置檔案控制著節點間的通訊。由於此檔案透過 /etc/pve
集群文件系統進行共享與同步,因此任何修改都應該在這裡進行,而非單獨在某一節點上修改 /etc/corosync/corosync.conf
。在我進行網段調整(例如從 192.168.2.x
變更為 192.168.3.x
)的過程中,曾遇到多個服務未立即反映新設定的狀況,以下是我的解決流程。
修改前的準備
- 備份原始配置
在主要節點上,首先備份/etc/pve/corosync.conf
以防止變更失誤時能夠快速回滾:cp /etc/pve/corosync.conf /etc/pve/corosync.conf.bak
- 確認網卡配置
確認所有節點的網卡設定已同步更新為新的 IP(192.168.3
.x),並檢查/etc/hosts
等檔案,確保節點名稱能正確解析到新的 IP。
修改 /etc/pve/corosync.conf
由於 /etc/pve/corosync.conf
是集群內共享的配置檔,所以必須在此直接進行編輯。以我的設定為例,我將原先的 nodelist 中的 IP 更新為新的網段,同時增加了 config_version
(例如從 3 變更為 4),確認所有節點配置一致。修改後的設定範例如下:
logging { debug: off to_syslog: yes } nodelist { node { name: pve-03 nodeid: 3 quorum_votes: 1 ring0_addr: 192.168.3.3 } node { name: pve-01 nodeid: 1 quorum_votes: 1 ring0_addr: 192.168.3.1 } node { name: pve-02 nodeid: 2 quorum_votes: 1 ring0_addr: 192.168.3.2 } } quorum { provider: corosync_votequorum } totem { cluster_name: cluster config_version: 4 interface { linknumber: 0 } ip_version: ipv4-6 link_mode: passive secauth: on version: 2 }
重啟服務(非必要)與檢查同步狀態
完成 /etc/pve/corosync.conf
的修改後,接下來需要重啟相關服務,以便讓新的設定生效並同步至所有節點:
重啟 pve-cluster 與 corosync
在所有節點上執行:
systemctl restart pve-cluster systemctl restart corosync
重啟 pveproxy
為了確保 Web 介面(Port 8006)能夠顯示正確資訊,也建議重啟 pveproxy:
systemctl restart pveproxy
檢查狀態
使用 pvecm status
指令檢查集群狀態,確認 config_version 已更新,以及節點 IP 是否皆正確顯示:
$ pvecm status Cluster information ------------------- Name: cluster Config Version: 4 Transport: knet Secure auth: on
如果發現集群狀態中的 config_version 還是舊的,表示修改尚未同步,需要再次確認 /etc/pve/corosync.conf
是否正確被更新。
清除瀏覽器快取
有時候瀏覽器快取也可能導致顯示資訊不更新,使用無痕模式或清除快取再試一次。
常見問題與排查
- 配置不同步
如果在/etc/pve/corosync.conf
中仍顯示舊的設定,可能是因為修改在非主要節點進行。請確保在主要節點上直接修改集群共享的檔案。 - 服務未正確重啟
修改後一定要重啟 pve-cluster、corosync 及 pveproxy,否則新設定不會生效。 - 網卡與 DNS 設定
確認所有節點的網卡 IP 以及 /etc/hosts 都已更新,否則可能出現網路解析錯誤的狀況。
結語
透過上述步驟,我最終成功地將 Proxmox VE 集群的內部 IP 從 192.168.2.x
更新到
,並且讓所有節點正確同步更新。192.168.3
.x
參考資料
《AWS CDK 完全學習手冊:打造雲端基礎架構程式碼 IaC》
第 12 屆 iT 邦幫忙鐵人賽 DevOps 組冠的《用 CDK 定 義 AWS 架構》
第 11 屆 iT 邦幫忙鐵人賽《LINE bot 好好玩 30 天玩轉 LINE API》
一個熱愛分享的雲端工程師!