在實際操作 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