Proxmox VE で LINSTOR コントローラ の HA 化


前回のブログで Proxmox VE で DRBD を使用した仮想環境 を紹介しましたが、今回はこの環境の Guest OS に LINSTOR コントローラ をインストールして、 Proxmox の VM の HA 機能を使用して LINSTOR コントローラノードの可用性を向上しようという試みです。DRBD 領域に置かれたコントローラ VM に、起動時に linstor を使わず DRBD インターフェースで如何にしてアクセスするかというのがポイントになります。

前提条件

前提条件として、

  • 3台のノードを用意し、すべてのノードに Proxmox VE 5.2 がインストール済み
  • すべてのノードに DRBD/LINSTOR パッケージがインストール済み
  • PVE クラスタ、LINSTOR はすでに構成済み
  • そのうち 1 台の Guest OS に drbdstorage を使用したCentOS7.5 がインストール済み
  • Guest OS のノード間のライブマイグレーション動作は確認済み

とします。前回のブログで紹介した環境があれば、1 台ノードを用意して、 pvecm add <new node> でノードを追加するだけです。クォーラムの動作に 3 ノード構成が必要になるので今回は 3 ノード使用します。

ソフトウェア

今回使用したソフトウェア情報を以下に記載します。

  • linstor-common 0.6.4-1
  • linstor-controller 0.6.4-1

Proxmox の各ノードのパッケージ更新

LINSTOR 関連のパッケージは頻繁にバグフィックスが入っているので、各ノードのパッケージを最新にしておきます。

Guest OS に LINSTOR コントローラをインストール

基本的に 6.5 コントローラの高可用性 に従って設定していけばよいです。ドキュメントでは LINBIT アプライアンスイメージを使用していますが、LINSTOR コントローラが動作する OS ならなんでもよいようで、ここでは CentOS 7.5 を使用します(LINBIT 専用のパッケージが使用できる Proxmox を使ってもよいです)。 CentOS 7.5 をインストール後、linstor-controller, linstor-common パッケージのみをインストールします(これらのパッケージの取得方法は、 DRBD9 LINSTOR 構築手順書 を参照ください)。

また、firewalld を止めるか、LINSTOR が使用するポート 3376 も空けておきます。

新規コントローラノードの登録

まず、LINSTOR ノードに新規コントローラのノードを追加します。現在のコントローラノードで以下を実行します。

続いて、各 PVE ノードが新規コントローラ VM にアクセスできるようにします。この例では、tate-z132 が vm-100-disk-1 リソースにアクセスできてないので、追加します。ディスクレスでも問題ありませんがここでは冗長化を増やします。

起動時のコントローラ VM アクセス

次に各 PVE ノードで drbd サービスを有効にします。これは LINSTOR コントローラが起動する前に DRBD 領域として vm-100-disk-1 にアクセスできなければならないので、その対応として drbd サービスをスタートしておきます。これにより、起動時に DRBDリソースに対して drbdadm で設定が行われ、LINSTOR なしで /dev/drbd1000 などの DRBD ブロックデバイスにアクセスできるようになります。

さらに linstor-satellite のサービスに –keep-res=vm-100 を追加します。ここで、番号 100 は VM ID で環境に合わせて変更します。linstor-satellite は起動時にすべてのリソースファイルを削除して、再度作り直すので、ここで指定した正規表現にマッチしたものは消さないようにさせるためです。

コントローラの切り替え

現在のコントローラノードで linstor-controller を止め、データベースを新しいコントローラのノードにコピーします。

新しいコントローラノードで linstor-controller を開始します。

各 PVE ノードで新しいコントローラを指定し、動作確認します。

最後に1つの PVE ノードで /etc/pve/storage.cfg を編集し、pve のコントローラを切り替えます。ここで最後の controllervm の追加が重要でこれにより、DRBDストレージの他のVMと異なる方法でコントローラVMを処理するようPVEに指示します。

Web UI にアクセスし、CentOS OS の VM から more -> Managed HA を選択し、VM を HA 化します (もしくは ha-manager add vm:100)。

HA 動作確認

ha-manager で動作確認します。以下の例は、vm:100 Guest OS は tate-z130 ノードで動作しています。

tate-z131 から vm:100 が動作しているノード tate-z130 を落として、vm:100 が他のノードに切り替わるか確認してみます。

vm:100 が tate-z131 で起動し、linstor コマンドが引き続き動作するのが確認できました。Pacemkaer のようなリソース単位の細かなチェックはないですが、ノード単位の障害に簡単に対応できるのでなかなか有効な方法と思います。

参考

以下を参考にしましたので、詳細はこちらを参照ください。