見出し画像

Proxmox HAクラスタを壊した

色々と試していたらProxmoxHAクラスタを構成していたサーバを1台壊して起動できない状態に陥った。起動ディスク(USBメモリ)自体が破損したらしい。事前にバックアップとってなかったので再構築することに。

これは後で別エラーで取得した画面なのでノード名が違うけどこんな感じのエラー状態になる
こんな感じに見つからないと怒られる

ちなみにProxmox自身のバックアップを取得する機能は実装されていないらしく、手動で地道に設定をとるかスクリプトでやるしかない。手でやるのもあれなので公開されているスクリプトを活用するのがベストな選択かな。

話をもどしてこのメッセージに対処しないと先に進めない。
「hostname lookup 'proxmox' failed - failed to get address info for: proxmox: Name or service not known (500)」

この対処で正解なのかは不明だが、この方法で先に進めた。HAクラスタの構成を管理しているファイルがこれ。

root@proxmox2:/etc/pve# cat corosync.conf
logging {
  debug: off
  to_syslog: yes
}

nodelist {
  node {
    name: proxmox
    nodeid: 1
    quorum_votes: 1
    ring0_addr: 192.168.1.233
  }
  node {
    name: proxmox2
    nodeid: 2
    quorum_votes: 1
    ring0_addr: 192.168.1.234
  }
  node {
    name: proxmox3
    nodeid: 3
    quorum_votes: 1
    ring0_addr: 192.168.1.235
  }
  node {
    name: proxmox4
    nodeid: 4
    quorum_votes: 1
    ring0_addr: 192.168.1.236
  }
}

quorum {
  provider: corosync_votequorum
}

totem {
  cluster_name: ProxmoxHA
  config_version: 4
  interface {
    linknumber: 0
  }
  ip_version: ipv4-6
  link_mode: passive
  secauth: on
  version: 2
}

そこで思い切って死んだノード(Proxmox)行をエディタでサクッと削除してみた。削除したのはここね↓

  node {
    name: proxmox
    nodeid: 1
    quorum_votes: 1
    ring0_addr: 192.168.1.233
  }

削除後はこんな感じ。

root@proxmox2:/etc/pve# cat corosync.conf
logging {
  debug: off
  to_syslog: yes
}

nodelist {
  node {
    name: proxmox2
    nodeid: 2
    quorum_votes: 1
    ring0_addr: 192.168.1.234
  }
  node {
    name: proxmox3
    nodeid: 3
    quorum_votes: 1
    ring0_addr: 192.168.1.235
  }
  node {
    name: proxmox4
    nodeid: 4
    quorum_votes: 1
    ring0_addr: 192.168.1.236
  }
}

quorum {
  provider: corosync_votequorum
}

totem {
  cluster_name: ProxmoxHA
  config_version: 4
  interface {
    linknumber: 0
  }
  ip_version: ipv4-6
  link_mode: passive
  secauth: on
  version: 2
}

クラスタに参加しているノード全部で削除しないといけないのかと思って他のサーバを見に行ったら、このファイルはクラスタ内で同期するらしくすでに削除されていた。クラスタのサービスを再起動なんてことも不要みたいだ。もう一度、ここでクラスタ情報を見に行くと・・・

しっかりとProxmoxが削除されている

エラーは解消されており新しいノード追加に必要な「Join情報」にアクセスできる状態となっている。

ちなみにHAクラスタに参加しているノード情報はここに保管されている。ここでゴミ掃除しないとデータセンター(ProxmoxHA)にゴミノードが残り続けるらしい。

root@proxmox2:/etc/pve/nodes# ls -la
total 0
drwxr-xr-x 2 root www-data 0 Jul  2 17:46 .
drwxr-xr-x 2 root www-data 0 Jan  1  1970 ..
drwxr-xr-x 2 root www-data 0 Jul  2 17:46 proxmox
drwxr-xr-x 2 root www-data 0 Jul  8 19:00 proxmox2
drwxr-xr-x 2 root www-data 0 Jul 10 15:35 proxmox3
drwxr-xr-x 2 root www-data 0 Jul 30 08:21 proxmox4
root@proxmox2:/etc/pve/nodes# 

そういうわけで、サクッと削除する。

root@proxmox2:/etc/pve/nodes# rm -rf proxmox
root@proxmox2:/etc/pve/nodes# ls -la
total 0
drwxr-xr-x 2 root www-data 0 Jul  2 17:46 .
drwxr-xr-x 2 root www-data 0 Jan  1  1970 ..
drwxr-xr-x 2 root www-data 0 Jul  8 19:00 proxmox2
drwxr-xr-x 2 root www-data 0 Jul 10 15:35 proxmox3
drwxr-xr-x 2 root www-data 0 Jul 30 08:21 proxmox4
root@proxmox2:/etc/pve/nodes# 

あとは単純作業である。「Join情報」をコピーして再作成したProxmoxに情報を貼り付けてクラスタに参加させる。

ここで問題発生。追加するノードを慌てて作っていたので最新版までアップデートしていなかったのがいけなかったのか・・・エラーが発生してうまくクラスタに対して参加が完了しない。WebGUIからはシェルも開かないのでコンソールからアップデートを試みる。

色々壊れてきた(笑)アップデート実施後の再起動でうまく起動できず起動情報が破損。fsckコマンドで修復するはめに・・・。

クラスタもなぜかロック状態になったので、コマンド叩いて1台で起動できるように修正。

root@proxmox2:~# pvecm expected 1
root@proxmox2:~# pvecm status

クラスタのロックが解除されたのでProxmox1の情報を削除する。
・/etc/pve# vi corosync.conf
・/etc/pve/nodes#rm -rf proxmox1

逆にProxmox1ではクラスタ構築前としたいのでファイルをリネーム。
・/etc/pve# mv corosync.conf corosync.conf.bak
クラスタ関連の情報も削除
・rm -rf /etc/corosync
サービスも止める
・systemctl stop corosync
クラスタとしてのノードは全て削除
・/etc/pve/nodes#rm -rf proxmox*
念のため再起動しておく。

元に戻って「Join情報」をコピーしてProxmox1に情報を貼り付けてクラスタに参加させる。今回は問題ないようだ。

無事に参加できた

ここで今一度クラスタ内の各ノードでアップデートを実施してレベル感を合わせておくと良い。

あとはHAのグループ機能を使ってる場合は各ゲストに紐づくノード名や重みづけに変更がないか確認しておく。

この記事が気に入ったらサポートをしてみませんか?