Proxmox Virtual Environment(Proxmox VE)での入れ子になった仮想化環境でライブマイグレーションを行う

はじめに

三菱総研DCS株式会社 クラウドテクノロジー部、入社3年目の楠本です。

今回、オープンソースであり、サーバー仮想化プラットフォームの一つである「Proxmox Virtual Environment」(以下、Proxmox VE)を使用して、ライブマイグレーションの検証を行いました。

また、本検証は入社2年目の永井と共同で実施いたしました。

この検証を行おうとした理由としては以下2点です。

・広く利用されているサーバー仮想化ソフトウェアのライセンスが変更され、価格が大幅に上がったため。そこからオープンソースのサーバー仮想化プラットフォームが注目されるのではないかと考えたこと。

・より仮想化技術への知見を深めたいと考えたため。

また、検証環境としては非常に便利な入れ子になった仮想化環境(構成については後述)を利用することによって、1台のハードウェア上でライブマイグレーションの検証を実施いたしました。

入れ子になった仮想化環境は本番運用に用いることは難しい(正常な運用が保証されない、サポート適用外、リソースに無駄が生じるなど)ですが、こうした検証に利用するには色々と便利な環境かなと思います。

以下目次に沿ってご説明いたします。

  1. ライブマイグレーションとは
  2. 検証環境を構築する
  3. クラスタを組む
  4. クラスタ共有ボリューム作成
  5. ライブマイグレーション
  6. おわりに

ライブマイグレーションとは

まず、今回の検証目標であるライブマイグレーションについて簡単に説明します。

ライブマイグレーションは、仮想マシン(VM)を停止させずに動作中のまま他の物理ホストに移行させる技術です。

この技術は、システムの可用性を向上させるために欠かせません。例えば、ホストマシンのメンテナンスを実施する際、仮想マシンを停止させることなく別のホストに移行させることができます。

これにより、サービスのダウンタイムを最小限に抑え、運用への影響を軽減することができます。

検証環境を構築する

はじめまして。三菱総研DCS株式会社 クラウドテクノロジー部の永井です。

現在、自社クラウドシステムである、FINEQloudの運用・保守を担当しています。

(FINEQloudの詳細はこちら)

今回はクラウドシステムの利点を活かした技術である、ライブマイグレーションについて知識を深めるチャンスだと思ったため、企画に参加しました。自分が得た知見が少しでもお役に立てればと思います。

さて、今回はサーバー仮想化ソフトウェアのProxmox VEを利用します。

Proxmox VEを選択した理由は以下の通りです。

・無料使用範囲内で、ライブマイグレーションが検証できるため。

・日本語にも対応しており、Proxmox VEを使用した環境構築の手順について説明しているサイトも多数あるため。

「クラウド技術について自宅で試してみたい!」や「クラウド技術についての知識を深めたい!」といった環境構築の初めの一歩として適しているかと思います。

今回はライブマイグレーションに焦点を当てたいため、インストールの方法や初期設定については割愛させていただきますが、大まかに以下の流れで構築します。

①Proxmox VEのインストール

②ユーザーの作成

③ネットワークの設定

④ブラウザからのログイン

その後、ライブマイグレーションを実施する環境を構築していきます。

通常、ライブマイグレーションは別の物理的なコンピュータへ移行しますが、今回は同一ハードウェア上、別Proxmox VE環境上へ移行するため入れ子になった仮想環境を構築します。下記構成図をご覧ください。

仮想マシンの作成は以下3ステップで非常に直感的に行えます。

1,Proxmox VEのUI右上に存在する、「VMを作成」ボタンをクリックし、「作成:仮想マシン」ウィンドウを表示させます。

2,全般、OS等のタブを選択し、それぞれ任意の数値を設定します。今回は検証のため、ほぼ規定値で実施しています。ゲストProxmox VEを作成する際は、ノードに「ホストProxmox VE」を選択してください。

3,すべて設定出来た状態で確認タブに遷移し、「完了」ボタンをクリックしてVMを作成します。その際、「作成後に起動」にチェックを入れているとVMが自動的に起動状態になります。

ステップが完了すると、ブラウザ上の別タブに作成したVMの情報が表示されます。

VMの作成が完了したら、VMの設定を編集していきます。

Proxmox VE上で新規作成したVMは、参照するリポジトリが有償版になっていますので、無償版のリポジトリを追加します。

・アップデート>リポジトリを選択し、「追加」ボタンをクリックします。

・リポジトリからNo-Subscriptionを選択して、「追加」ボタンをクリックします。

無償版リポジトリのため、リポジトリの状態が「警告」になってしまいますが、検証環境での使用であれば問題ありません。

クラスタを組む

次にクラスタの構築に入っていきます。

クラスタを組むことで、障害が発生した場合でも他のノードが作業を引き継げるため、システム全体のダウンタイムを最小化できます。

①クラスタの作成

②Join情報の取得

③他ノードの参加

④クラスタの確認

上記の流れでクラスタを組んでいきます。

ゲストProxmox VEの「データセンター」を選択すると、メニューにクラスタのタブが表示されます。

クラスタ情報から、「クラスタを作成」ボタンをクリックすることで、クラスタを作成することが出来ます。

ウィンドウが表示されたら、任意のクラスタ名を入力してください。クラスタネットワークは規定値のままで問題ありません。

「作成」ボタンをクリックすると、「クラスタを作成」ボタンが選択できなくなり、「Join情報」ボタンが選択できるようになります。

「Join情報」ボタンをクリックすることで表示されたクラスタJoin情報ウィンドウ左下の、「情報をコピー」ボタンより、クラスタ参加に必要な情報をコピーします。

クラスタを作成していないVMのタブに移動します。

同様にゲストProxmox VEの「データセンター」を選択し、クラスタ情報を表示させてください。

今度は「クラスタに参加」をクリックします。左上のチェックボックスにチェックを入れ、先程コピーしたjoin情報を貼り付けます。

VMログインパスワードを記入して、「Join 'クラスタ名'」のボタンをクリックします。

画面に「Join request OK, finishing setup locally」と表示されたことを確認して、クラスタに参加ウィンドウを閉じてください。

クラスタを作成したタブを見ると、先程参加させたノードが表示されているはずです。問題なければ3台目のゲストProxmox VEもクラスタに参加させてください。

3台でクラスタを構成すると、下記の画像のように一つのタブにまとまります。

クラスタ共有ボリューム作成

ここからは楠本が担当いたします。

まずはライブマイグレーションを行う上で必要となる、クラスタ共有ボリュームを作成します。

Proxmox VEではCephというオープンソースの分散ストレージシステムを利用します。

ゲストProxmox VE1~3号機にはまだCephがインストールされていませんので、それぞれにインストールします。

Cephは別途インストーラーなどを用意する必要はなく、Proxmox VEのコンソール上からインストールすることが可能です。

インストールが完了しましたら、Ceph > モニタにて、ゲストProxmox VE3台にモニタを作成します。

このモニタはクラスタの状態管理など行うものになり、作成すると以下のようになるかと思います。

次に、データの同期更新を互いに行うCeph OSDストレージをそれぞれに作成します。ストレージに利用するディスクを選択し、「作成」をクリックします。

作成が完了するとCephのヘルスチェックがOK状態かつ、OSDsのUp状態3台になっているかと思います。

VMの保存先となるプールを作成することで、VM作成時の保存先として設定することができるようになります。

ライブマイグレーション

次にライブマイグレーションを行うVMを作成するのですが、デフォルト設定のまま作成するとOS(AlmaLinux)インストールに失敗しました…

調べたところ、プロセッサの種別が初期値だと「既定(kvm64)」となっているようですが、「host」に設定する必要がありそうでした。

参照元:Proxmox FORUMS [SOLVED] Kernel panic installing rocky or almalinux(https://forum.proxmox.com/threads/kernel-panic-installing-rocky-or-almalinux.114885/)

これはホストProxmox VE・ゲストProxmox VEでも設定する必要があるようです。

(すべてプロセッサの種別を「host」にすれば問題なく起動しました。)

全て「host」に統一(Proxmox VEがインストールされているVM含めて)して、再度起動すると成功しました。

さて、やっと目的のライブマイグレーションを行います。

ライブマイグレーションを行うVMを右クリックし、「マイグレート」を選択します。

今回はゲストProxmox VE1号機から2号機へマイグレートします。

この時、VM上の通信が停止せず、移行が行えていることを確認するため、VMからゲストProxmox VE3号機にPingを飛ばし続けながらマイグレートを行います。

同一ハードウェア上に環境があるせいか、15秒ほどでマイグレーションが完了していますが、15秒の間の移行タスク実行中に、通信が停止していないことがわかるかと思います。

無事通信が途切れることなく2号機に移行することができました!

おわりに

いかがでしたでしょうか。

普段から仮想化基盤を使用した業務に従事していますが、細かな仕様について理解できていなかった部分が、今回の検証を通して理解することができました。

また機会があれば、別のハイパーバイザーも触ってみたいと思います。

参照元:SHIFT Group 技術ブログ Proxmox VEでCephを使ったクラスタ環境を作ってみた(https://note.shiftinc.jp/n/n3dbf38a4affd?gs=2c1914a5d502)