💛

Proxmox VE のライブマイグレーションの実力を試す(Proxmox VE インストール ~ ライブマイグレーション実行まで)

に公開

はじめに

Broadcom 社による VMware 買収に伴うライセンス体系の大幅な変更を受け、VMware ESXi からの移行を検討せざるを得ない状況に直面しました。

移行先を選定する上で、仮想マシン(VM)を無停止で別ホストへ移動させるライブマイグレーション機能は、サービスを維持するための重要な評価基準の一つです。

この記事では、移行先の有力候補である Proxmox VE のライブマイグレーション機能が実運用に耐えうるものなのかを検証します。
その第一歩として、3 台の物理マシンを使った検証環境の構築手順を記録します。

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

仮想マシンを稼働させたまま、物理ホスト間を移動させる技術です。Red Hat 社の記事では、以下のように説明されています。

ライブマイグレーションは、仮想マシン (VM) へのアクセスを中断することなく、VM をあるホストから別のホストに移動するプロセスです。古い VM を一時停止してから新しい VM を起動するまでの時間が短いため、移行中のサービスの中断を回避できます。ライブマイグレーションは、計画的なメンテナンスなどの状況で、またはワークロードリソースのバランスを取るために使用されます。ライブマイグレーションでは、VM メモリー、ネットワーク接続、およびストレージをクラスタ内の新しい宛先に転送します。

引用: ライブ・マイグレーションとは (Red Hat)

計画メンテナンス時などに、VM 上のサービスを停止させることなくインフラの作業を行えるため、非常に重要な機能です。

今回の検証環境

理想はサーバーマシンを用意することですが、今回は Windows 11 へのアップグレード要件を満たさなかったノート PC を 3 台活用して環境を構築します。

物理ホスト (3 台共通)

パーツ 詳細 備考
CPU Intel Core i7 (第 7 世代)
メモリ 16GB
ストレージ 1 (OS 用) 256GB SSD Proxmox VE をインストール
ストレージ 2 (Ceph 用) 512GB SATA SSD 各 PC に 1 台ずつ増設
ネットワーク 有線 LAN ポート ×1

ストレージ構成

ライブマイグレーションの前提条件として、全ホストからアクセス可能な共有ストレージが必要です。
NASなど使う方法などもありますが、今回は、各ホストに増設した 512GB の SSD を利用して、Proxmox VE に統合されている分散ストレージ技術「Ceph」を構築し、共有ストレージとして使用します。

1. Proxmox VE インストールメディアの作成

まず、Proxmox VE をインストールするための USB メモリを作成します。

1.1. ISO ファイルのダウンロード

公式サイトのダウンロードページから、最新の Proxmox VE の ISO ファイルをダウンロードします。

https://www.proxmox.com/en/downloads

1.2. 書き込みツールの準備

ISO ファイルを USB メモリに書き込むためのツールを用意します。今回は、定番の「Rufus」を使用します。

https://rufus.ie/ja/

1.3. インストール用 USB の作成

  1. Rufus を起動し、以下の手順でブータブル USB メモリを作成します。

  2. [デバイス]で書き込み先の USB メモリを選択します。

  3. [ブートの種類の選択] でダウンロードした Proxmox VE の ISO ファイルを選択します。

  4. 他の設定は基本的にデフォルトのままで問題ありません。

  5. [スタート] をクリックして書き込みを開始します。

2. Proxmox VE のインストール (1 台目)

作成した USB メモリを使い、1 台目の PC に Proxmox VE をインストールします。

  1. PC にインストール用 USB メモリを接続し、USB から起動します。

  2. Proxmox VE のインストーラーが起動したら [Install Proxmox VE (Graphical)] を選択します。

  3. 使用許諾契約を確認し、[I agree] をクリックします。

  4. インストール先ディスクを選択します。今回は OS 用の 256GB SSD を指定します。

  5. Country に Japan と入力すると、タイムゾーンとキーボードレイアウトが自動で設定されます。

  6. root ユーザーのパスワードと管理者用のメールアドレスを設定します。メールアドレスは通知等に使われますが、[admin@example.com]のようなダミーでも構いません。

  7. ネットワーク設定は、以下の設定にします。

    項目 内容 詳細
    Hostname (FQDN): 任意のホスト名を指定します (例: pve01.local)
    IP Address (CIDR): 固定 IP アドレスを CIDR 形式で設定します (例: 192.168.30.3/24)
    Gateway: ルーターの IP アドレスを指定します (例:192.168.30.2)
    DNS Server: 名前解決ができる DNS サーバーを指定します 不明な場合は 8.8.8.8 (Google Public DNS) などで構いません
  8. 設定内容の最終確認画面が表示されるので、問題がなければインストールを開始します。

  9. インストール完了後、自動的に再起動します。コンソールに以下のメッセージが表示されたら、インストールは成功です。

    Welcome to the Proxmox Virtual Environment. Please use your web browser to
    configure this server - connect to:
    https://(設定した IP アドレス):8006/
    

3. 初期設定 (1 台目)

Web ブラウザから管理画面にアクセスし、初期設定を行います。

3.1. Web UI へのログイン

同じネットワーク上の別の PC から、https://(設定した IP アドレス):8006/ にアクセスします。

項目 入力値
ユーザー名 root
パスワード (インストール時に設定したパスワード)
レルム Linux PAM standard authentication
言語 日本語

3.2. サブスクリプションリポジトリの設定

初期状態では有償のエンタープライズリポジトリが有効になっています。今回は無償で利用するため、これを無効化し、無償版(No-Subscription)リポジトリを追加します。

  1. サイドメニューから [データセンター] → [pve01] → [アップデート] → [リポジトリ] を選択します。

  2. [URLs]に enterprise.proxmox.com を含むリポジトリを選択し、 [無効化] をクリックします。

  3. [追加] をクリックし、表示されるダイアログでリポジトリとして [No-Subscription] を選択して追加します。

  4. 同様に、Ceph 用のリポジトリも追加します。再度 [追加] をクリックし、 [Ceph Reef No-Subscription] を選択して追加します。

3.3. システムのアップデート

リポジトリ設定後、システムを最新の状態に更新します。

  1. サイドメニューの [アップデート] を選択します。

  2. [再表示] ボタンをクリックし、パッケージリストを更新します (apt update 相当)。

  3. パッケージリストの更新が終わったら、 [アップグレード] ボタンをクリックします (apt dist-upgrade 相当)。

  4. コンソールウィンドウが開くので、Y を入力して Enter キーを押し、アップグレードを実行します。

3.4 Ceph 用ディスクの初期化

  1. サイドメニューから[データセンター] → [pve01] → [ディスク]を選択します。

  2. ディスクとして増設した 512GB の SSD(今回は"/dev/sda") を選択し、上にある[ディスクの消去]をクリック。

  3. 初期化を行ってください。

4. 全ノードの準備

残りの 2 台の PC にも、上記の手順 2〜3 を繰り返し実行し、Proxmox VE のインストールと初期設定を完了させてください。
 その際、ホスト名と IP アドレスは必ず違うなものを設定してください (例: pve02.local, 192.168.10.12)。

5. Proxmox VE クラスタの構築

3 台のノードを 1 つのクラスターとして統合します。この作業は 1 台のノードの Web UI から行います。

5.1. クラスタの作成 (pve01 にて)

  1. pve01 の Web UI で、 [データセンター] → [クラスタ] → [クラスタを作成] をクリックします。

  2. クラスタ名 を入力します (例: pve-cluster)。

  3. ネットワークはデフォルトのままで問題ありません。 [作成] をクリックします。

5.2. 他ノードのクラスタ参加 (pve02, pve03 にて)

  1. pve01 の Web UI で、 [クラスタ] → [Join 情報] をクリックし、表示された接続情報をコピーします。

  2. 次に、pve02 の Web UI にアクセスします。

  3. [データセンター] → [クラスタ] → [クラスタに参加] をクリックします。

  4. [情報] の欄に、先ほどコピーした接続情報を貼り付けます。

  5. pve02 root パスワードを入力します。

  6. [Join 'pve-cluster'] をクリックします。

  7. しばらく待つと、pve01 の Web UI のサイドメニューに pve02 が表示されます。

  8. pve03 も同様の手順でクラスタに参加させます。

  9. 最終的に、いずれかのノードの Web UI から 3 台すべてのノードが見える状態になれば成功です。

6. ネットワーク (SDN) の設定

VM がどのホストに移動しても同じネットワーク設定を維持できるよう、SDN 機能を利用して仮想ネットワークを構築します。今回は EVPN を使用します。

6.1. EVPN コントローラーとゾーンの作成

  1. [データセンター] → [SDN] を選択します。

  2. [コントローラー] → [追加] → [EVPN] をクリックします。

  3. 以下のように設定します。

    項目 詳細
    ID 任意の ID 名を入力(今回は"evpnct1"と入力するとする)
    ASN #: 65000
    Peers: 3 台すべてのノードの IP アドレスをカンマ区切りで入力します(例"192.168.30.2,192.168.30.3,192.168.30.4")


4. [ゾーン] → [追加] → [EVPN] をクリックします。
5. 以下のように設定します。

項目 詳細
ID 任意の ID (例: evpn01)
コントローラー 先ほど作成した evpnct1 を選択
VRF-VXLAN Tag 20000
VNet MAC アドレス auto
ノードから抜ける サイドバーに表示されているノードをコンマ区切りで入力する(例"pve1,pve2,pve3")
プライマリ Exit ノード 最初に作成した 1 台目のノードを入力(例"pve1")

6.2. VNet とサブネットの作成

  1. [VNets] → [作成] をクリックします。

  2. 以下のように設定します。

    項目 詳細
    名前 任意の名前 (例: evnet01)
    ゾーン 先ほど作成した"evpn01"を選択する
    タグ 任意の VLAN タグ (例: 21000)
  3. 作成した "evnet01" を選択した状態で、右側のペインで [サブネット] → [作成] をクリックします。

  4. 以下のように設定します。

    項目 詳細
    サブネット VM が使用するプライベート IP ネットワークアドレスを CIDR 形式で指定します (例: 10.1.1.0/24)
    ゲートウェイ ゲートウェイ IP アドレスを指定します (例: 10.1.1.1)
    SNAT VM が外部(インターネット)と通信できるように、チェックを入れます

7. 共有ストレージ (Ceph) の構築

3 台のノードに増設した SSD を使い、分散ストレージ Ceph を構築します。

7.1. Ceph のインストール

3 台すべてのノードで、以下の手順を実行します。

  1. ノードを選択し、 [Ceph] → [インストール] をクリックします。

  2. リポジトリは [No-Subscription] を選択し、インストールを開始します。

  3. ネットワーク設定では、Public Network にノードの IP アドレス範囲 (例: 192.168.10.0/24) を指定します。今回は Cluster Network は空欄のままとします。

  4. [完了] をクリックします。

7.2. Monitor と Manager の作成

Ceph クラスターを管理するコンポーネントを作成します。3 台すべてに配置します。

  1. pve01 で [Ceph] → [モニタ] を選択し、[作成] から pve01, pve02, pve03 を順番に追加します。

  2. 同様に、 [Ceph] → [マネージャ] を選択し、[作成] から 3 台のノードを追加します。

7.3. OSD の作成

各ノードの物理ディスクを Ceph のストレージユニット(OSD)として追加します。

3 台すべてのノードで、以下の手順を実行します。

  1. ノードを選択し、 [Ceph] → [OSD] を選択します。

  2. [作成] をクリックし、ディスクとして増設した 512GB の SSD を選択します。

すべての設定が完了すると、Ceph のダッシュボードのステータスが HEALTH_OK になります。

7.4. Ceph プールの作成

VM の仮想ディスクを格納するための「プール」を作成します。

  1. 一台目のノードを選択し、[Ceph] → [Pools] を選択し、 [作成] をクリックします。

  2. 以下のように設定します。

    項目 詳細
    名前 任意の名前 (例: vm-storage)
    サイズ 3 (3 台構成なので 3 が推奨)
    ストレージとして追加 チェックを入れる
  3. [作成] をクリックすると、Proxmox VE のストレージとして利用可能になります。

8. ライブマイグレーション用 VM の作成

いよいよ、テストに使う VM を作成します。OS はお手軽な AlmaLinux を使用します。

8.1. ISO イメージのアップロード

  1. AlmaLinux の公式サイトから ISO イメージをダウンロードしておきます。

  2. 任意のノード (例: pve01) を選択し、 [local (pve01)] → [ISO イメージ] を開きます。

  3. [アップロード] をクリックし、ダウンロードした ISO ファイルを選択してアップロードします。

8.2. VM の作成

  1. Web UI 右上の [VM を作成] をクリックします。

  2. [一般]ノード (pve01) と VM 名を設定します。

  3. [OS] アップロードした AlmaLinux の ISO イメージを選択します。

  4. [システム] 基本的にデフォルトのままで構いません。

  5. [ディスク]

    • ストレージ: 先ほど作成した Ceph プール (vm-storage) を選択します。
    • ディスクサイズ: 32GB 程度で十分です。
  6. [CPU]

    • コア: 2
    • 種別: host を選択します(既定(kvm64)だとカーネルパニックを起きて動きません。)
  7. [メモリ]: 8192MB (8GB) を設定します。

  8. [ネットワーク]:

    • ブリッジ: 先ほど SDN で作成した vnet1 を選択します。
  9. 設定内容を確認し、 [完了] をクリックして VM を作成します。

8.3. OS のインストール

作成した VM を起動し、コンソール画面から AlmaLinux をインストールします。ネットワーク設定は以下のように手動で設定してください。

項目 設定値(例)
IP アドレス 10.1.1.10
サブネットマスク 255.255.255.0
ゲートウェイ 10.1.1.1 (SDN で設定した値)
DNS 8.8.8.8

9. ライブマイグレーションのテスト

準備が整いましたので、実際にライブマイグレーションを試してみましょう。

  1. AlmaLinux にログインし、ターミナルを開きます。

  2. 継続的なネットワーク疎通を確認するため、外部のホストへ ping を打ち続けます。

    ping www.google.com
    
  3. Proxmox VE の Web UI に戻り、先ほど作成した VM を選択します。

  4. 右上の [マイグレート] をクリックします。

  5. ターゲットノードとして、現在のホストとは別のノード (例: pve03) を選択します。

  6. [マイグレーション] をクリックして実行します。

  7. タスクログに TASK OK と表示されれば移行は完了です。

  8. VM のコンソールに戻り、ping が途切れることなく継続しているかを確認します。

私の環境では、移行にかかった時間は約 20 秒で、ping のパケットロスは一度も発生しませんでした。

まとめ

今回の検証を通して、比較的低スペックなノート PC3 台で構成した環境においても、Proxmox VE のライブマイグレーションがネットワークの瞬断すら起こさずに完了することを確認できました。

VMware からの移行を検討する上で懸念していた機能が、オープンソースの Proxmox VE で、しかも追加ライセンスなしで実現できることは魅力です。

次回は、VMware ESXIからProxmoxにライブマイグレーションの検証などを行ってみたいです。

Discussion