Proxmox VE Cluster IP 更新與配置同步經驗談

在實際操作 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)的過程中,曾遇到多個服務未立即反映新設定的狀況,以下是我的解決流程。

修改前的準備

  1. 備份原始配置
    在主要節點上,首先備份 /etc/pve/corosync.conf 以防止變更失誤時能夠快速回滾:cp /etc/pve/corosync.conf /etc/pve/corosync.conf.bak
  2. 確認網卡配置
    確認所有節點的網卡設定已同步更新為新的 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,並且讓所有節點正確同步更新。

    參考資料