はじめに
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 ファイルをダウンロードします。
1.2. 書き込みツールの準備
ISO ファイルを USB メモリに書き込むためのツールを用意します。今回は、定番の「Rufus」を使用します。
1.3. インストール用 USB の作成
-
Rufus を起動し、以下の手順でブータブル USB メモリを作成します。
-
[デバイス]で書き込み先の USB メモリを選択します。
-
[ブートの種類の選択] でダウンロードした Proxmox VE の ISO ファイルを選択します。
-
他の設定は基本的にデフォルトのままで問題ありません。
-
[スタート] をクリックして書き込みを開始します。
2. Proxmox VE のインストール (1 台目)
作成した USB メモリを使い、1 台目の PC に Proxmox VE をインストールします。
-
PC にインストール用 USB メモリを接続し、USB から起動します。
-
Proxmox VE のインストーラーが起動したら [Install Proxmox VE (Graphical)] を選択します。
-
使用許諾契約を確認し、[I agree] をクリックします。
-
インストール先ディスクを選択します。今回は OS 用の 256GB SSD を指定します。
-
Country に Japan と入力すると、タイムゾーンとキーボードレイアウトが自動で設定されます。
-
root ユーザーのパスワードと管理者用のメールアドレスを設定します。メールアドレスは通知等に使われますが、[[email protected]]のようなダミーでも構いません。
-
ネットワーク設定は、以下の設定にします。
項目 内容 詳細 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) などで構いません -
設定内容の最終確認画面が表示されるので、問題がなければインストールを開始します。
-
インストール完了後、自動的に再起動します。コンソールに以下のメッセージが表示されたら、インストールは成功です。
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)リポジトリを追加します。
-
サイドメニューから [データセンター] → [pve01] → [アップデート] → [リポジトリ] を選択します。
-
[URLs]に enterprise.proxmox.com を含むリポジトリを選択し、 [無効化] をクリックします。
-
[追加] をクリックし、表示されるダイアログでリポジトリとして [No-Subscription] を選択して追加します。
-
同様に、Ceph 用のリポジトリも追加します。再度 [追加] をクリックし、 [Ceph Reef No-Subscription] を選択して追加します。
3.3. システムのアップデート
リポジトリ設定後、システムを最新の状態に更新します。
-
サイドメニューの [アップデート] を選択します。
-
[再表示] ボタンをクリックし、パッケージリストを更新します (apt update 相当)。
-
パッケージリストの更新が終わったら、 [アップグレード] ボタンをクリックします (apt dist-upgrade 相当)。
-
コンソールウィンドウが開くので、Y を入力して Enter キーを押し、アップグレードを実行します。
3.4 Ceph 用ディスクの初期化
-
サイドメニューから[データセンター] → [pve01] → [ディスク]を選択します。
-
ディスクとして増設した 512GB の SSD(今回は”/dev/sda”) を選択し、上にある[ディスクの消去]をクリック。
-
初期化を行ってください。
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 にて)
-
pve01 の Web UI で、 [データセンター] → [クラスタ] → [クラスタを作成] をクリックします。
-
クラスタ名 を入力します (例: pve-cluster)。
-
ネットワークはデフォルトのままで問題ありません。 [作成] をクリックします。
5.2. 他ノードのクラスタ参加 (pve02, pve03 にて)
-
pve01 の Web UI で、 [クラスタ] → [Join 情報] をクリックし、表示された接続情報をコピーします。
-
次に、pve02 の Web UI にアクセスします。
-
[データセンター] → [クラスタ] → [クラスタに参加] をクリックします。
-
[情報] の欄に、先ほどコピーした接続情報を貼り付けます。
-
pve02 root パスワードを入力します。
-
[Join ‘pve-cluster’] をクリックします。
-
しばらく待つと、pve01 の Web UI のサイドメニューに pve02 が表示されます。
-
pve03 も同様の手順でクラスタに参加させます。
-
最終的に、いずれかのノードの Web UI から 3 台すべてのノードが見える状態になれば成功です。
6. ネットワーク (SDN) の設定
VM がどのホストに移動しても同じネットワーク設定を維持できるよう、SDN 機能を利用して仮想ネットワークを構築します。今回は EVPN を使用します。
6.1. EVPN コントローラーとゾーンの作成
-
[データセンター] → [SDN] を選択します。
-
[コントローラー] → [追加] → [EVPN] をクリックします。
-
以下のように設定します。
項目 詳細 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 とサブネットの作成
-
[VNets] → [作成] をクリックします。
-
以下のように設定します。
項目 詳細 名前 任意の名前 (例: evnet01) ゾーン 先ほど作成した”evpn01″を選択する タグ 任意の VLAN タグ (例: 21000) -
作成した “evnet01” を選択した状態で、右側のペインで [サブネット] → [作成] をクリックします。
-
以下のように設定します。
項目 詳細 サブネット VM が使用するプライベート IP ネットワークアドレスを CIDR 形式で指定します (例: 10.1.1.0/24) ゲートウェイ ゲートウェイ IP アドレスを指定します (例: 10.1.1.1) SNAT VM が外部(インターネット)と通信できるように、チェックを入れます
7. 共有ストレージ (Ceph) の構築
3 台のノードに増設した SSD を使い、分散ストレージ Ceph を構築します。
7.1. Ceph のインストール
3 台すべてのノードで、以下の手順を実行します。
-
ノードを選択し、 [Ceph] → [インストール] をクリックします。
-
リポジトリは [No-Subscription] を選択し、インストールを開始します。
-
ネットワーク設定では、Public Network にノードの IP アドレス範囲 (例: 192.168.10.0/24) を指定します。今回は Cluster Network は空欄のままとします。
-
[完了] をクリックします。
7.2. Monitor と Manager の作成
Ceph クラスターを管理するコンポーネントを作成します。3 台すべてに配置します。
-
pve01 で [Ceph] → [モニタ] を選択し、[作成] から pve01, pve02, pve03 を順番に追加します。
-
同様に、 [Ceph] → [マネージャ] を選択し、[作成] から 3 台のノードを追加します。
7.3. OSD の作成
各ノードの物理ディスクを Ceph のストレージユニット(OSD)として追加します。
3 台すべてのノードで、以下の手順を実行します。
-
ノードを選択し、 [Ceph] → [OSD] を選択します。
-
[作成] をクリックし、ディスクとして増設した 512GB の SSD を選択します。
すべての設定が完了すると、Ceph のダッシュボードのステータスが HEALTH_OK になります。
7.4. Ceph プールの作成
VM の仮想ディスクを格納するための「プール」を作成します。
-
一台目のノードを選択し、[Ceph] → [Pools] を選択し、 [作成] をクリックします。
-
以下のように設定します。
項目 詳細 名前 任意の名前 (例: vm-storage) サイズ 3 (3 台構成なので 3 が推奨) ストレージとして追加 チェックを入れる -
[作成] をクリックすると、Proxmox VE のストレージとして利用可能になります。
8. ライブマイグレーション用 VM の作成
いよいよ、テストに使う VM を作成します。OS はお手軽な AlmaLinux を使用します。
8.1. ISO イメージのアップロード
-
AlmaLinux の公式サイトから ISO イメージをダウンロードしておきます。
-
任意のノード (例: pve01) を選択し、 [local (pve01)] → [ISO イメージ] を開きます。
-
[アップロード] をクリックし、ダウンロードした ISO ファイルを選択してアップロードします。
8.2. VM の作成
-
Web UI 右上の [VM を作成] をクリックします。
-
[一般]ノード (pve01) と VM 名を設定します。
-
[OS] アップロードした AlmaLinux の ISO イメージを選択します。
-
[システム] 基本的にデフォルトのままで構いません。
-
[ディスク]
- ストレージ: 先ほど作成した Ceph プール (vm-storage) を選択します。
- ディスクサイズ: 32GB 程度で十分です。
-
[CPU]
- コア: 2
- 種別: host を選択します(既定(kvm64)だとカーネルパニックを起きて動きません。)
-
[メモリ]: 8192MB (8GB) を設定します。
-
[ネットワーク]:
- ブリッジ: 先ほど SDN で作成した vnet1 を選択します。
-
設定内容を確認し、 [完了] をクリックして 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. ライブマイグレーションのテスト
準備が整いましたので、実際にライブマイグレーションを試してみましょう。
-
AlmaLinux にログインし、ターミナルを開きます。
-
継続的なネットワーク疎通を確認するため、外部のホストへ ping を打ち続けます。
-
Proxmox VE の Web UI に戻り、先ほど作成した VM を選択します。
-
右上の [マイグレート] をクリックします。
-
ターゲットノードとして、現在のホストとは別のノード (例: pve03) を選択します。
-
[マイグレーション] をクリックして実行します。
-
タスクログに TASK OK と表示されれば移行は完了です。
-
VM のコンソールに戻り、ping が途切れることなく継続しているかを確認します。
私の環境では、移行にかかった時間は約 20 秒で、ping のパケットロスは一度も発生しませんでした。
まとめ
今回の検証を通して、比較的低スペックなノート PC3 台で構成した環境においても、Proxmox VE のライブマイグレーションがネットワークの瞬断すら起こさずに完了することを確認できました。
VMware からの移行を検討する上で懸念していた機能が、オープンソースの Proxmox VE で、しかも追加ライセンスなしで実現できることは魅力です。
次回は、VMware ESXIからProxmoxにライブマイグレーションの検証などを行ってみたいです。
Views: 0