Proxmox VE で DRBD を使用した仮想環境


前回のブログで LINSTOR 経由で Kubernetes を使用するプラグインを紹介しましたが、今回は Proxmox VE で使用する linstor-proxmox プラグインを紹介します。

Proxmox は Debian ベースの仮想化プラットフォームの1つです。専用の CD image が用意されていて、インストール後すぐに WebGUI からアクセスして構成が可能で、複数の Proxmox ノードを組み合わせたクラスタも簡単に構築できます。 また、LINBIT は専用のレポジトリを用意していて、最新のソースからビルドされた LINBIT 提供パッケージがだれでもすぐに使えるというのも大きなメリットです。

以下に構築例として、2つのノードで Proxmox クラスタを構築し、DRBDで作られた Guest OS をノード間でライブマイグレートしてみます。

 

前提条件

前提条件として、

  • 2台のノードを用意し、すべてのノードに Proxmox VE 5.2 がインストール済み
  • 各ノードには DRBD 用のブロックデバイスを1つ準備

とします。1台のマシンで、Nested 環境を使用する場合は、Nested Virtualization を参照ください。

ソフトウェア

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

  • Proxmox VE 5.2-1
  • drbd-dkms/unknown,now 9.0.15-1
  • drbd-utils/unknown,now 9.5.0-1
  • linstor-client/unknown,now 0.6.0-1
  • linstor-common/unknown,now 0.6.2-1
  • linstor-controller/unknown,now 0.6.2-1
  • linstor-proxmox/unknown,now 2.9.0-1
  • linstor-satellite/unknown,now 0.6.2-1
  • python-linstor/unknown,now 0.6.0-1

Proxmox パッケージ更新

各ノードに最新のパッケージがインストールします。評価目的なので、 Package_Repositories の pve-no-subscription から使用します。

PVE クラスタの設定

Cluster_Manager に基づいて、1つノードが master で、残りが slave である PVE Clustor を設定します。これによりノード間で /etc/pve がシェアされます。

1つのノードで、

残りのノードで

を実行します。master ノードで確認します。

DRBD Volumes in Proxmox VE に基づいて、すべてのノードで DRBD, LINSTOR パッケージをインストールします。

ここで pve-headers は kernel と同じバージョンになるように install 前に必ず apt upgrade で最新の kernel にしておく必要があります。そうでない場合は DRBD9 ユーザーズガイド を参考に kernel のバージョンにあう pve-headers をインストールしてください。

LINSTOR の設定

DRBD9 LINSTOR 構築手順書 に従って LINSTOR ノードを設定します。PVE master ノードがコントローラに、全てのノードをサテライトに設定します。このとき全てのノードの node-type Combined にしておくと、将来コントローラを他のノードに変更する場合に node-type の変更が不要になるのでそうしておきます。

各ノードでストレージプールを作成します。

コントローラノードで、動作確認します。

問題がなければテストで作ったボリュームは削除します。

/etc/pve/storage.cfg で DRBD storage の設定

PVE master ノードの /etc/pve/storage.cfg に DRBD storage の設定を追加します。

controller の IP アドレスは環境に合わせて変えます。redundancy の2は複製の数です。/etc/pve は他のノードとシェアされてますのでコピーは不要です。

PVE master ノードで pvedaemon を再起動することで、 drbdstorage が各ノードから参照できるようになります。

WebUI の https://<PVE master node IP address>:8006/ にアクセスしてみます。

Guest VM 作成

Guest VM の作成は、まず Guest で使用する OS イメージをアップロードしておきます。この例では CentOS7.5 イメージをアップロードしています。

 

次に VM 作成を選択し、ハードディスクで drbdstorage を選択します。

このようにして Guest VM を作成し、起動すると linstor resource list は以下のようになります。

ライブマイグレーション

インストール後、 Guest VM のライブマイグレーションを実行してみます。tate-z130 で動作していた、Guest VM 100(tate-z135) を tate-z131 に移動してみます(移動する前にハードウェアで CD/DVD ドライブからメディアを外しておきます)。

 

 

無事移動できました。DRBD で複製されたディスクを使うので、8秒で終わりました。ユーザーズガイドには「コントローラの高可用性」というのもあるので、次回はこれをチャレンジしたいと思います。

参考

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