サイト内の現在位置を表示しています。

Proxmox Virtual Environment上でミラーディスク型HAクラスターの構築を試してみました(Windows/Linux)

CLUSTERPRO オフィシャルブログ ~クラブロ~

はじめに

Proxmox Virtual Environment(以降、Proxmox VE)上でHAクラスター構築を試してみました。Proxmox VEはVMware ESXiやHyper-Vと同様に、GUIから簡単に仮想マシンやディスク、NICの作成が行えるオープンソースで無償利用が可能なサーバー仮想化プラットフォームです。

今回はHAクラスター構築までの一連の流れとして、Proxmox VE上で仮想マシン2台を作成して、CLUSTERPROをインストールし、ミラーディスク型のHAクラスターを構築してみましたのでご紹介いたします。

この記事の内容

1. Proxmox Virtual Environmentとは

Proxmox VEはオープンソースソフトウェアのサーバー仮想化プラットフォームで、KVM(完全仮想化)とLXC(コンテナ)に対応しています。基本無料で使用できますが、商用サポート(有償)も用意されています。

VMware ESXiやHyper-Vと同様に、物理サーバー上で仮想マシン(以降、VM)を作成・実行・管理することができます。操作はWebブラウザから利用可能なGUIが提供されているため、VMの作成や削除などを簡単に行うことができます。ZFS、Ceph、NFS、iSCSI、LVM等、様々なストレージに対応しており、VMのバックアップ・リストア、スナップショット機能なども備えています。他にもCLIやREST APIを使用してProxmox VEの操作が可能で、VMのステータスを取得したり、停止することも可能です。

2. 構築するHAクラスター構成

Proxmox VE上にフローティングIPリソースを利用したミラーディスク型のHAクラスターを構築します。構築するHAクラスターの構成図は以下のとおりです。

HA Cluster Configuration

3. HAクラスター構築手順

3.1 VMの作成

Proxmox VEで操作用Client、server1、server2のVMを作成します。OSはProxmox VEのlocalストレージに保存したISOイメージを使用してインストールを行いました。実際に構築する際は、CLUSTERPRO Xが動作するバージョンのOSをご利用ください。Linux版はkernelのバージョンにも依存しているため、OSのバージョンだけでなく、kernelモジュールのバージョンもご確認ください。

本記事では例として以下の設定でVMを作成しました。なお、WindowsでVirtIOドライバーを使用してインストールを行う場合は、参考リンクの「Windows VirtIO Drivers」も併せて参照ください。

■OS

  • Windows Server 2022
  • Red Hat Enterprise Linux 9.4

【参考】
CLUSTERPRO X - 動作環境

■ネットワーク・ハードウェア

  • 操作用Client
  • IPアドレス:192.168.122.105
  • server1
  • IPアドレス:192.168.122.60
  • ミラーディスク用ハードディスク:5GB
  • server2
  • IPアドレス:192.168.122.121
  • ミラーディスク用ハードディスク:5GB

VMの作成は、WebブラウザからProxmoxのWebインターフェイス(https://<proxmoxのインストール時に設定したIPアドレス>:8006)にアクセスし、[Create VM]から行います。

■Generalタブ

VM IDは自動で割り振られます。入力し終えたら[Next]をクリックします。

  • Node:proxmox-host
  • VM ID:101 / 102 / 103
  • Name:server1 / server2 / client

■OSタブ

入力し終えたら[Next]をクリックします。

  • WindowsでVirtIOドライバーを使用してインストールを行う場合は、[Add additional drive for VirtIO drivers]のチェックをONにして、「Windows VirtIO Drivers」から入手したISOイメージを選択します。
  • Use CD/DVD disc image file (iso)
  • Storage:local
  • ISO image:ISOイメージを指定
  • Guest OS
  • Windowsの場合
  • Type:Microsoft Windows
  • Version:11/2022/2025
  • Linuxの場合
  • Type:Linux
  • Version:6.x - 2.6 kernel

-Windows

-Linux

■Systemタブ

入力し終えたら[Next]をクリックします。

  • Windowsの場合
  • Graphic card:Default
  • Machine:q35
  • BIOS:OVMF (UEFI)
  • EFI Storage:local-lvm
  • SCSI Controller:VirtIO SCSI single
  • Add TPM:チェックOFF
  • Linuxの場合
  • Graphic card:Default
  • Machine:Default (i440fx)
  • BIOS:Default (SeaBIOS)
  • SCSI Controller:VirtIO SCSI single
  • Add TPM:チェックOFF

-Windows

-Linux

■Disksタブ

[Add]をクリックして、ミラーディスク用にディスクを追加します。入力し終えたら[Next]をクリックします。

  • 操作用Clientではミラーディスク用のディスクは不要です。
  • WindowsでVirtIOドライバーを選択した場合、[Bus/Device]には「SCSI」が選択されます。
  • Windowsの場合
  • ide0
  • Storage:local-lvm
  • Disk size (GiB):32(システムドライブ用)
  • ide1
  • Storage:local-lvm
  • Disk size (GiB):5(ミラーディスク用)
  • Linuxの場合
  • scsi0
  • Storage:local-lvm
  • Disk size (GiB):32(システムドライブ用)
  • scsi1
  • Storage:local-lvm
  • Disk size (GiB):5(ミラーディスク用)

-Windows

-Linux

■CPUタブ

入力し終えたら[Next]をクリックします。

  • Sockets:1
  • Cores:1
  • Type:x86-64-v2-AES

■Memoryタブ

入力し終えたら[Next]をクリックします。

  • Memory (MiB):任意のサイズを指定

■Networkタブ

入力し終えたら[Next]をクリックします。

  • WindowsでVirtIOドライバーを選択した場合、[Model]には「VirtIO (paravirtualized)」が選択されます。
  • Windowsの場合
  • Bridge:vmbr0
  • Model:Intel E1000
  • Linuxの場合
  • Bridge:vmbr0
  • Model:VirtIO (paravirtualized)

-Windows

-Linux

最後に[Finish]をクリックして、VMを作成します。作成後はVMを開始して、OSのインストールを行います。

  • WindowsでVirtIOドライバーを選択した場合、OSのインストール時にディスクが表示されないため、VirtIOドライバーを読み込ませる必要があります。

3.2 ミラーディスク型クラスターの作成

構築するHAクラスターの構成は以下のとおりです。サービスリソースやEXECリソースで制御するアプリケーションにはIISやApacheを利用しました。IISやApacheのインストール方法や公開ディレクトリの設定方法については省略します。

Windows版

■CLUSTERPROバージョン

  • CLUSTERPRO X 5.2 for Windows(内部バージョン:13.21)

■フェールオーバーグループ(failover)

  • フローティングIPリソース(fip)
  • IPアドレス:192.168.122.150
  • ミラーディスクリソース(md)
  • クラスタパーティション:E:
  • データパーティション:F:
  • サービスリソース(service)

■モニタリソース

  • フローティングIP監視リソース(fipw1)
  • ミラーディスク監視リソース(mdw1)
  • サービス監視リソース(servicew1)
  • ユーザ空間監視リソース(userw)

Linux版

■CLUSTERPROバージョン

  • CLUSTERPRO X 5.2 for Linux(内部バージョン:5.2.1-1)

■フェールオーバーグループ(failover)

  • フローティングIPリソース(fip)
  • IPアドレス:192.168.122.150
  • ミラーディスクリソース(md)
  • クラスタパーティション:/dev/sdb1
  • データパーティション:/dev/sdb2
  • EXECリソース(exec)

■モニタリソース

  • フローティングIPモニタリソース(fipw1)
  • カスタムモニタリソース(genw)
  • ミラーディスクコネクトモニタリソース(mdnw1)
  • ミラーディスクモニタリソース(mdw1)
  • ユーザ空間モニタリソース(userw)

CLUSTERPROのインストールやミラーディスク型クラスターの構築手順の詳細については、CLUSTERPROのインストール&設定ガイドをご参照ください。

【参考】
  • CLUSTERPRO X 5.2 > Windows > インストール&設定ガイド
  • CLUSTERPRO X 5.2 > Linux > インストール&設定ガイド

3.3 強制停止リソースの設定

両系活性防止のためにPing NP解決リソースを追加し、あわせて強制停止リソースを設定します。両系活性と強制停止リソースの詳細については、以下を参照ください。

Ping NP解決リソースのターゲットには構成情報に登録したインタコネクトLAN経由でPing応答を返却可能な、クラスターサーバー以外の常時稼動している装置を指定します。今回はPing応答装置としてProxmoxのホストのゲートウェイを指定しました。実際にNP解決リソースを設定する場合のNP解決方法およびターゲットはHAクラスターを構築する環境に合わせて適切なものを使用してください。

Proxmox環境では対応する強制停止リソースがないため、カスタムの強制停止リソースを利用します。ProxmoxではVMなどを操作するための手段としてREST APIが用意されており、このAPIを呼び出してVMの停止または再起動を行うことで強制停止を実現します。スクリプトのサンプルは以下のリンクよりダウンロード可能です。サンプルを利用する場合はファイル名の「_」を「.」に変更します。

  • サンプルスクリプトは動作を保証するものではありません。

カスタムの強制停止リソースの設定方法の詳細は以下を参照ください。

【参考】
popupCLUSTERPRO X 5.0のご紹介~強制停止リソース~
→ 2.3 スクリプトを使った設定手順
→ 3. サービス起動遅延時間の設定

4. 動作確認

以下の手順でHAクラスターが正常に構築できているかを確認します。

  • 1.操作用Client上でWebブラウザを起動し、以下のURLにアクセスしてCluster WebUIを表示します。
    http://<server1のIPアドレス>:29003/

Windows版

Linux版

  • 2.Cluster WebUIのステータス画面から、server1でフェールオーバーグループ(failover)が起動していること、[サーバ]、[グループ]、[モニタ]が正常に起動していることを確認します。
  • 3.server1にログインして、データパーティション直下にHTMLファイルを配置します。
  • 4.操作用Client上のWebブラウザからフローティングIPリソース(fip)のIPアドレスにアクセスし、server1のHTMLファイルがWebページとして表示されることを確認します。
    http://<フローティングIPリソース(fip)のIPアドレス>
  • 5.Cluster WebUIから、フェールオーバーグループ(failover)をserver1からserver2に手動で移動します。
  • 6.フェールオーバーグループ(failover)がserver2側に移動していること、[サーバ]、[グループ]、[モニタ]が正常に起動していることをCluster WebUIで確認します。
  • 7.server2にログインして、データパーティション直下にHTMLファイルが保存されていることを確認し、記載内容を変更します。
  • 8.操作用ClientのWebブラウザからフローティングIPリソース(fip)のIPアドレスにアクセスし、server2のHTMLファイルがWebページとして表示されることを確認します。
    http://<フローティングIPリソース(fip1)のIPアドレス>

上記の動作確認により、フェールオーバーの前後で、フローティングIPアドレス経由でHAクラスターに接続できること、ディスクがミラーリングされていることを確認できます。

また、ネットワークパーティション状態を起こし、強制停止リソースの動作を確認します。ネットワークパーティション状態を起こすため、ファイアウォールの設定によりHAクラスターを構成するサーバー間の通信を全て遮断するようにします。これにより、サーバー間のハートビートが途絶えますが、ProxmoxのホストのゲートウェイへのPing通信は可能であるため、それぞれのサーバーが「相手サーバーで問題が発生した」と判断してフェールオーバーグループを起動しようとします。しかし、待機系サーバーではフェールオーバーグループを起動しようとする前に強制停止リソースが動作して、現用系サーバーが停止したことを確認してからフェールオーバーグループを起動します。そのため、両系活性を防ぐことができます。

以下はLinux版の例です。待機系サーバーが現用系サーバーのダウンを検出した後のsyslogの出力は以下のようになります。フェールオーバーグループの起動前に強制停止スクリプトを実行していることが確認できます。

  • Mar 8 03:40:57 server2 clusterpro[1655]: [E] <type: nm><event: 102> Server server1 has been stopped.
  • Mar 8 03:41:04 server2 clusterpro[1655]: [I] <type: forcestop><event: 1> Forced stop of server server1 has been requested.(custom, none)
  • Mar 8 03:41:04 server2 clusterpro[1655]: [I] <type: rc><event: 60> Failover group failover has started.
  • Mar 8 03:41:04 server2 clusterpro[1655]: [I] <type: rc><event: 10> Activating group failover has started.
  • Mar 8 03:41:04 server2 clusterpro[1655]: [I] <type: rc><event: 30> Activating fip resource has started.
  • Mar 8 03:41:04 server2 clusterpro[1655]: [I] <type: rc><event: 30> Activating md resource has started.
  • Mar 8 03:41:06 server2 clusterpro[1655]: [I] <type: rm><event: 1> Monitoring fipw has started.
  • Mar 8 03:41:06 server2 clusterpro[1655]: [I] <type: rc><event: 31> Activating fip resource has completed.
  • Mar 8 03:41:22 server2 clusterpro[1655]: [I] <type: rc><event: 31> Activating md resource has completed.
  • Mar 8 03:41:22 server2 clusterpro[1655]: [I] <type: rc><event: 30> Activating exec resource has started.
  • Mar 8 03:41:24 server2 clusterpro[1655]: [I] <type: rm><event: 1> Monitoring genw has started.
  • Mar 8 03:41:24 server2 clusterpro[1655]: [I] <type: rc><event: 31> Activating exec resource has completed.
  • Mar 8 03:41:24 server2 clusterpro[1655]: [I] <type: rc><event: 11> Activating group failover has completed.
  • Mar 8 03:41:24 server2 clusterpro[1655]: [I] <type: rc><event: 61> Failover group failover has completed.

まとめ

今回は、Proxmox VE上で作成したVMにCLUSTERPROをインストールしてミラーディスク型のHAクラスター構築を試してみました。CLUSTERPROは仮想化基盤に依存しない設計となっているため、ゲストOS が CLUSTERPRO の動作環境(OS)に含まれていれば、利用することが可能です。強制停止リソースのみ仮想化基盤の機能を利用する必要がありますが、カスタム強制停止スクリプトを使用することで強制停止機能を実現することができました。

本記事の構成をご検討の際は、CLUSTERPROのpopup試用版を用いて検証した後、ご提案・構築ください。

利用製品

本記事の構成を構築する際に利用した製品です。

■OS共通
 -CLUSTERPRO X Media 5.2
 -CLUSTERPRO X Startup Kit 5.2
■Windows
 -CLUSTERPRO X 5.2 for Windows VM (1ノードライセンス)
 -CLUSTERPRO X Replicator 5.2 for Windows (1ノードライセンス)
■Linux
 -CLUSTERPRO X 5.2 for Linux VM (1ノードライセンス)
 -CLUSTERPRO X Replicator 5.2 for Linux (1ノードライセンス)

お問い合わせ

本記事に関するお問い合わせは、popupお問い合わせ窓口までお問い合わせください。
  • 本記事で紹介しているスクリプトはサンプルであり動作を保証するものではありません。スクリプトの内容についてのお問い合わせ、および、お客様環境に合わせたカスタマイズにつきましてはCLUSTERPRO導入支援サービスにて承っておりますので、上記窓口の"ご購入前のお問い合わせ"フォームまでお問い合わせください。