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

Amazon EBSのマルチアタッチ機能を利用したHAクラスターを構築してみました(Windows/Linux)

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

はじめに

Amazon Elastic Block Store(以降、EBS)ボリュームを複数のAmazon Elastic Compute Cloud(以降、EC2)にアタッチできるMulti-Attach(以降、マルチアタッチ)機能が公開されました。
今回はEBSのマルチアタッチ機能を利用して、Amazon Web Services(以降、AWS)上に共有ディスク型のHAクラスターを構築してみました。

これまでは、AWSではCLUSTERPRO Xによる共有ディスク型のHAクラスターを構築することはできませんでした。
そのため、popup以前のブログでは、Amazon Elastic File Systemを利用した共有ディスク型のHAクラスターをご紹介しました。
今回、EBSのマルチアタッチ機能を利用することで共有ディスク型のHAクラスターを構築することが可能となりましたのでご紹介します。

  • EBSのマルチアタッチ機能の利用が、2021/04/07より、東京リージョンで利用できるようになりました。
  • HAクラスターの構築手順を記載しました。(2021/04/09 追記)

この記事の内容

1. Amazon EBSのマルチアタッチ機能とは

EBSのマルチアタッチ機能は、プロビジョンドIOPS(io1またはio2)のEBSに対してマルチアタッチオプションを設定することで、Single-AZ内の複数のEC2インスタンスにアタッチすることができる機能です。マルチアタッチ機能を有効化できるボリュームタイプはリージョンによって異なり、東京リージョンではio2のみ設定可能となります。

これまでは単一のEC2インスタンスにのみアタッチできる仕様であったことから、共有ディスクのように複数のEC2インスタンスに接続されたディスクのように扱うことができませんでしたが、これからはEBSのマルチアタッチ機能により共有ディスクのように扱うことが可能となります。
CLUSTERPRO Xによる共有ディスク型クラスターでは、ミラーディスク型クラスターのようなI/Oデータの同期に伴う書き込み性能低下が発⽣しないため、I/O性能が重視される環境において選択肢の1つとなります。

このようなメリットが存在するEBSのマルチアタッチ機能ですが、EBS内のデータの一貫性を保つためにはアプリケーション側で書き込み順序を保つ必要があるという制約が存在します。
もし書き込みの制御を行わず複数のEC2インスタンスからデータの書き込みを行った場合、一見データは正常に書き込まれているように見えますが、実際にはファイルシステムを破壊している、といった状況が発生することが考えられます。
そのため、CLUSTERPRO Xのディスクリソース(共有ディスク制御用リソース)のようにデータを書き込むことができるEC2インスタンスを制御する等の対策が必要となります。

2. 共有ディスク型のHAクラスター構成

今回は、「共有ディスク型のHAクラスター」を構築し、ディスクリソースによりマルチアタッチしたEBSを制御できることを確認しました。

本構成では、2ノード構成の共有ディスク型クラスターを構築し、共有ディスクの制御を行うディスクリソースによりマルチアタッチ機能を有効化したEBSのアクセスインスタンスの切り替えを行います。

構成は以下の通りです。

HAクラスターの構成

EBSは両ノードからアタッチされた状態ですが、ディスクリソースの制御によりディスクリソースが起動しているノード(図の場合は現用系EC2)のみでアクセス可能な状態となっています。
待機系EC2からは、EBSの参照、書き込みはできません。

現用系EC2に障害が発生した場合は、待機系EC2においてディスクリソースが起動され、待機系EC2からEBSの参照、書き込みが可能な状態となります。

業務アプリケーションへのアクセスには、AWS仮想IPリソースが制御する仮想IPアドレスを指定することで、どちらのノードで起動しているか意識する必要なくアクセスすることが可能です。

3. 共有ディスク型のHAクラスター構築手順

基本的にCLUSTERPRO Xのマニュアルに記載の共有ディスク型クラスターの構築手順と同様の手順で構築可能です。

以下では東京リージョン(ap-northeast-1)で構築を行っています。

東京リージョン

  • VPC
  • CIDR:10.0.0.0/16
  • Subnet
  • Subnet-A1 (Public) :10.0.10.0/24
  • Subnet-A2 (Private):10.0.110.0/24
  • Instance(Windows)
  • 現用系EC2:10.0.110.100
  • 待機系EC2:10.0.110.101
  • Instance(Linux)
  • 現用系EC2:10.0.110.200
  • 待機系EC2:10.0.110.201

3-1. マルチアタッチを有効化したEBSの準備

  • 1.AWS マネジメントコンソール(以降、マネジメントコンソール)の Elastic Block Store -> ボリューム のメニューから[ボリュームの作成]を選択します。
  • 2.ボリュームのタイプからio2を選択し、ボリュームサイズやIOPSに希望する値を設定します。
  • 3.Multi-AttachのEnableチェックボックスにチェックを入れてボリュームを作成します。

3-2. 共有ディスク型HAクラスターの構築(Windows)

Windows環境で共有ディスク型HAクラスターを構築するための手順です。
今回はCLUSTERPRO X 4.3 for Windows(内部バージョン 12.30) に以下のリソースを追加して動作確認を行いました。

  • CLUSTERPRO

  • グループリソース
  • ディスクリソース
  • AWS 仮想IP リソース
  • モニタリソース
  • ディスクTUR 監視リソース
  • AWS 仮想IP 監視リソース
  • ユーザ空間監視リソース
  • ハートビートリソース
  • カーネルモード LAN ハートビートリソース
  • Witness ハートビートリソース
  • ネットワークパーティション解決リソース
  • DISK ネットワークパーティション解決リソース
  • HTTP ネットワークパーティション解決リソース

共有ディスクの関連リソースには以下のドライブ文字を割り当てています。

リソース ドライブ文字
DISK ネットワークパーティション解決リソース D:\
ディスクリソース E:\

3-2-1. 共有ディスク用EBSの設定(Windows)

共有ディスクとして利用するためにEBS上にパーティションを作成します。 詳細はインストール&設定ガイドをご参照ください。

今回は以下の手順で作成します。EBSのアタッチ/デタッチはマネジメントコンソールから実施します。

  • 1.現用系EC2に 3-1. で作成したマルチアタッチを有効化したEBS(以降の手順では単にEBSと表記)をアタッチします。
  • 2.現用系EC2のOS上で、ディスクの管理などからEBSのディスク上にディスクハートビート用のパーティション(D:)を作成します。この時フォーマットは必要ありません。
  • 3.現用系EC2のOS上で、EBSのディスク上にディスクリソース用切替パーティション(E:)を作成し、NTFSでフォーマットします。
  • 4.現用系EC2からEBSをデタッチします。
  • 5.待機系EC2にEBSをアタッチします。
  • 6.待機系EC2のOS上で、ディスクの管理などからEBSのドライブレターが現用系EC2上で確認したドライブレターと一致していることを確認します。異なる場合はドライブレターが一致するように設定します。
  • 7.待機系EC2からEBSをデタッチします。

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

  • 2. システム構成を決定する
  • 2.6 ハードウェア構成後の設定
  • 2.6.1 共有ディスクを設定する(共有ディスク使用時は必須)

3-2-2. CLUSTERPRO X のインストール(Windows)

CLUSTERPRO X のインストールを以下の手順で行います。

  • 1.現用系EC2にEBSをアタッチします。
  • 2.現用系EC2のOS上でCLUSTERPRO X をインストールします。 インストール時、共有ディスクのフィルタリング設定画面ではEBSのアダプタを選択してフィルタリングを設定します。また必要に応じてライセンスを登録します。
  • 3.現用系EC2のOSシャットダウン後、現用系EC2からEBSをデタッチします。
  • 4.待機系EC2にEBSをアタッチします。
  • 5.待機系EC2のOS上でCLUSTERPRO X をインストールします。インストール時、共有ディスクのフィルタリング設定画面ではEBSのアダプタを選択してフィルタリングを設定します。また必要に応じてライセンスを登録します。
  • 6.待機系EC2のOSを再起動します。
  • 7.現用系EC2にEBSをアタッチし、EC2を起動します。

共有ディスク用EBSに対するフィルタリング設定

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

  • 4. CLUSTERPRO をインストールする
  • 4.2 CLUSTERPRO Server のインストール
  • 4.2.1 CLUSTERPRO Server を新規にインストールするには

3-2-3. CLUSTERPRO X によるHAクラスター構築(Windows)

Webブラウザから現用系EC2に接続し、Cluster WebUIの設定画面からクラスタ作成を行います。

HAクラスタ構築ガイドに記載の各制御(VIP/EIP/DNS名)の構築手順において、ミラーディスクリソースに関する設定を適宜(共有)ディスクリソースの設定に読み替えてクラスタ作成を行ってください。クラスタ構成情報の作成完了後に設定反映し、クラスタを開始します。

【参考】
  • Windows > クラウド > Amazon Web Services > HAクラスタ構築ガイド

3-3. 共有ディスク型HAクラスターの構築(Linux)

Linux環境で共有ディスク型HAクラスターを構築するための手順です。
今回はCLUSTERPRO X 4.3 for Linux(内部バージョン 4.3.0-1) に以下のリソースを追加して動作確認を行いました。

  • CLUSTERPRO

  • グループリソース
  • ディスクリソース
  • AWS 仮想IP リソース
  • モニタリソース
  • ディスクモニタリソース
  • AWS 仮想IP モニタリソース
  • ユーザ空間モニタリソース
  • ハートビートリソース
  • カーネルモード LAN ハートビートリソース
  • ディスクハートビートリソース
  • Witness ハートビートリソース
  • ネットワークパーティション解決リソース
  • HTTP ネットワークパーティション解決リソース

共有ディスクの関連リソースには以下のパーティション名を割り当てています。

リソース パーティション名
ディスクハートビートリソース /dev/nvme1n1p1
ディスクリソース /dev/nvme1n1p2

3-3-1. 共有ディスク用EBSの設定(Linux)

共有ディスクとして利用するためにEBS上にパーティションを作成します。詳細はインストール&設定ガイドをご参照ください。

今回は以下の手順で作成します。EBSのアタッチ/デタッチはマネジメントコンソールから実施します。

  • 1.現用系EC2と待機系EC2に 3-1. で作成したマルチアタッチを有効化したEBS(以降の手順では単にEBSと表記)をアタッチします。
  • 2.現用系EC2のOS上で、fdiskやpartedコマンドなどを利用してEBSのディスク上にディスクハートビート用のパーティション(/dev/nvme1n1p1)を作成します。この時フォーマットは必要ありません。
  • 3.現用系EC2のOS上で、EBSのディスク上にディスクリソース用切替パーティション(/dev/nvme1n1p2)を作成しフォーマットします。
  • 4.現用系EC2のOS上で、マウントポイント(/mnt/sd1 等)を作成します。
  • 5.待機系EC2のOS上で、fdiskやpartedコマンドなどを利用してEBSのパーティション情報が現用系EC2と一致していることを確認します。
  • 6.待機系EC2のOS上で、マウントポイント(/mnt/sd1 等)を作成します。

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

  • 2. システム構成を決定する
  • 2.8 ハードウェア構成後の設定
  • 2.8.1. ディスクリソース用の共有ディスクを設定する(ディスクリソース使用時は必須)

3-3-2. CLUSTERPRO X のインストール(Linux)

CLUSTERPRO X のインストールを以下の手順で行います。

  • 1.現用系EC2のOS上でCLUSTERPRO X をインストールし、必要に応じてライセンスを登録した後にOSを再起動します。
  • 2.待機系EC2のOS上でCLUSTERPRO X をインストールし、必要に応じてライセンスを登録した後にOSを再起動します。

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

  • 4. CLUSTERPRO をインストールする
  • 4.2 CLUSTERPRO Server のセットアップ

3-3-3. CLUSTERPRO X によるHAクラスタ構築(Linux)

Webブラウザから現用系EC2に接続し、Cluster WebUIの設定画面からクラスタ作成を行います。

HAクラスタ構築ガイドに記載の各制御(VIP/EIP/DNS名)の構築手順において、ミラーディスクリソースに関する設定を適宜(共有)ディスクリソースの設定に読み替えてクラスタ作成を行ってください。クラスタ構成情報の作成完了後に設定反映し、クラスタを開始します。

【参考】
  • Linux > クラウド > Amazon Web Services > HAクラスタ構築ガイド

4. 動作確認

フェールオーバーの前後で、共有ディスクへのアクセス制御が行えていること、また、データの引き継ぎが行えていることを確認します。

  • 1.現用系EC2でフェールオーバーグループを起動します。
  • 2.現用系EC2から切替パーティション(Windowsの場合はE:\、Linuxの場合は/mnt/sd1 等)にアクセスできることを確認します。
    また、待機系EC2から切替パーティションにアクセスできないことを確認します。
  • 3.現用系EC2から切替パーティション配下に test.txt を作成します。
  • 4.Cluster WebUIから、フェールオーバーグループを現用系EC2から待機系EC2に、手動で移動します。
  • 5.待機系EC2から切替パーティションにアクセスできることを確認します。
    また、現用系EC2から切替パーティションにアクセスできないことを確認します。
  • 6.待機系EC2から、切替パーティション配下に test.txt が表示され、エディタで開けることを確認します。

以上でデータの引き継ぎが行えていることを確認しました。

さいごに

今回はEBSのマルチアタッチ機能を使用して、共有ディスク型のHAクラスターを構築してみました。
AWS上で、共有ディスク型のHAクラスターを構築したいご要望がある場合は、是非お試しください。

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

お問い合わせ

本記事に関するお問い合わせは、popupお問い合わせ窓口までお問い合わせください。