クラスタを組んだProxmoxのIPアドレスを変更したい!!
Proxmox VE(PVE)でクラスタを組んでいる環境のノードIPアドレスを変更する手順をまとめました。
単に /etc/network/interfaces を書き換えるだけでは不十分で、/etc/hosts と Corosync(/etc/pve/corosync.conf) も更新する必要があります。
pmxcfs のロックにより直接編集できない場合の安全な編集手順も掲載します。
対象読者 / 前提
- Proxmox VE で クラスタ(pvecm) を利用中
- 各ノードの管理IP(例:vmbr0)を新しいセグメントに変更したい
- 変更作業はすべてのノードで実施する想定
- 作業はコンソール推奨(SSHはIP切替で切断されがち)
変更の全体フロー
-
ネットワークインターフェース(
/etc/network/interfaces)を新IPへ更新 - /etc/hosts を全ノードで更新
-
Corosync設定(
/etc/pve/corosync.conf)のネットワークを更新 - 再起動して新設定でクラスタ起動
-
動作確認(
pvecm status/ Web UI など)
重要:複数ノードでは全ノードの設定編集が完了してから順次再起動する。片方だけ変えると quorum 喪失の可能性あり。
1. ネットワークインターフェースを更新(全ノード)
/etc/network/interfaces を編集し、新しいIPアドレス/ゲートウェイに変更します。
例(旧: 192.168.1.10/24 → 新: 192.168.2.10/24):
# /etc/network/interfaces
auto vmbr0
iface vmbr0 inet static
address 192.168.2.10/24
gateway 192.168.2.1
bridge_ports eno1
bridge_stp off
bridge_fd 0
編集後に反映する場合は、クラスタ環境ではまとめて再起動下方が良い。
(個別に ifreload などで切り替えると到達不能になることがあります)
2. /etc/hosts を更新(全ノード)
ノード名解決を新IPに合わせます。クラスタ内のすべてのノード分を記載してください。
例(旧: 192.168.1.10/24 → 新: 192.168.2.10/24):
# /etc/hosts
192.168.2.10 node1.example.com node1
3. Corosync(/etc/pve/corosync.conf)を更新
Corosync はクラスタ間通信に使用されます。
設定ファイルは pmxcfs 配下(/etc/pve)にあり、そのままでは編集できない場合があります。
以下の手順でロックを外して安全に編集します。
3.1 pmxcfsロック解除手順(1ノードずつ実施)
作業はメインのコンソールで行い、手順3の実行中はクラスタ操作を控えることを推奨。
# 1) pve-cluster を停止
systemctl stop pve-cluster
# 2) corosync を停止
systemctl stop corosync
# 3) pmxcfs をロック解除モードで起動(フォアグラウンド)
pmxcfs -l
上記 pmxcfs -l を実行したままにして、別セッションで設定を編集します。
3.2 corosync.conf を編集
nano /etc/pve/corosync.conf
ポイント: bindnetaddr は「ネットワークアドレス」を設定します(例:192.168.2.10/24 なら 192.168.2.0)。
~~~~~~
nodelist {
node {
name: node1
nodeid: 1
# 必要に応じて新IPへ更新(udpuなら ring0_addr など)
ring0_addr: 192.168.2.10
}
node {
name: node2
nodeid: 2
ring0_addr: 192.168.2.11
}
# 以降同様
}
~~~~~~
編集が終わったら、pmxcfs -l を実行しているセッションで Ctrl + C で終了。
4. 再起動(ノードごと)
最終的にノードを再起動すると、pve-cluster と corosync が自動起動し新設定が反映されます。
reboot
実運用では「全ノードで手順1〜3を完了 → メンテナンス順に再起動」の流れが安全です。
5. 動作確認
# クラスタステータス
pvecm status
# corosync の状態
systemctl status corosync
# pve-cluster の状態
systemctl status pve-cluster
- Web UI が 新しいIP で開けるか
-
pvecm statusの Quorate: Yes を確認 - ノード間の リングアドレス が新IPになっているか
トラブルシュート
-
rootでもパーミッションエラー
-
/etc/pveは pmxcfs 管理配下。手順3の「pmxcfs -l」モードで編集すると解決する -
systemctl status pve-cluster/systemctl status corosyncで状態確認 -
lsattr /etc/pve/corosync.confで不可変属性(i)が付いていないか確認
-
-
クラスタ分断(Quorum Loss)
- まだ未変更のノードが混在していないか確認
- すべてのノードの
/etc/hostsとcorosync.confを新セグメントに統一
-
bindnetaddr の設定ミス
- アドレスではなくネットワークアドレスを書く(例:
192.168.2.0/24)
- アドレスではなくネットワークアドレスを書く(例: