Japan
サイト内の現在位置を表示しています。
Amazon FSx for Windows File Serverを利用したHAクラスターの構築を試してみました(Windows)
CLUSTERPRO オフィシャルブログ ~クラブロ~はじめに
Amazon Web Services(以降、AWS)において、Amazon FSx for Windows File Server(以降、FSx for Windows File Server)を利用したHAクラスターの構築を試してみました。FSx for Windows File Serverとは、WindowsのAmazon EC2インスタンス(以降、EC2インスタンス)から使用できるファイルサーバーです。
今回は、FSx for Windows File Serverをサーバー間の共有ストレージ(データ引き継ぎ場所)として利用したHAクラスターを構築します。
なお、Linux環境における共有ストレージ型のHAクラスター構築をご検討中の場合は、Amazon Elastic File Systemを利用したHAクラスターの紹介記事を参照ください。
この記事の内容
1. FSx for Windows File Serverとは
FSx for Windows File Serverとは、WindowsのEC2インスタンスからSMBプロトコルを使用してアクセスできるファイルサーバーであり、一貫したミリ秒未満のレイテンシーでアクセスすることができます。
今まではWindows環境で採用可能な共有ストレージとして、EBSのマルチアタッチ機能を利用したHAクラスター構成がありましたが、シングルAZでの構成になるという制約がありました。FSx for Windows File ServerはマルチAZ配置に対応しており、マルチAZ配置時はAZ間で自動的にデータが複製され、AZ障害時でも正常なAZで業務を継続することができるため、高い可用性を実現することができます。
マルチAZ配置で作成することにより、優先AZで障害が発生した場合に、AWSにより自動でスタンバイAZにフェールオーバーが実施され、通常30秒以内にフェールオーバーが完了します。
2. 構築するHAクラスター構成
今回はVIP制御によるHAクラスターを構築し、HAクラスター対象のアプリケーションにはMinIOを使用します。
FSx for Windows File Serverは複数のサーバーから同時にアクセスした場合でも、SMBプロトコルを使用して排他制御をするため、基本的には同時アクセスによるデータの破損が発生しません。そのため、今回はHAクラスターを構成するserver1とserver2から、FSx for Windows File Serverを常時アクセスできる状態にし、CLUSTERPROによるアクセス制御は行いません。

3. HAクラスター構築手順
HAクラスターの構築手順について説明します。以降の説明で出てくるMinIOの導入手順については、MinIOを使用しない場合は省略して問題ありません。
3.1 HAクラスター構築の事前準備
3.1.1 VPCの設定
事前にVPCを作成します。VPCの構成は以下の通りです。
- VPC-1 (VPC ID:vpc-1234abcd)
- -CIDR:10.0.0.0/16
- -Subnets
- ■Subnet-A1 (サブネットID:sub-1111aaaa):10.0.10.0/24
- ■Subnet-A2 (サブネットID:sub-2222aaaa):10.0.110.0/24
- ■Subnet-C1 (サブネットID:sub-1111cccc):10.0.20.0/24
- ■Subnet-C2 (サブネットID:sub-2222cccc):10.0.120.0/24
- -Route Tables
- ■Main (ルートテーブルID:rtb-00000001)
- ・10.0.0.0/16 → local
- ・0.0.0.0/0 → igw-1234abcd (Internet gateway)
- ・172.16.0.1/32 → eni-1234abcd (server1のENI ID)
- ■Route-A (ルートテーブルID:rtb-0000000a)
- ・10.0.0.0/16 → local
- ・0.0.0.0/0 → nat-1234abcd (NAT gateway 1)
- ・172.16.0.1/32 → eni-1234abcd (server1のENI ID)
- ■Route-C (ルートテーブルID:rtb-0000000c)
- ・10.0.0.0/16 → local
- ・0.0.0.0/0 → nat-5678efgh (NAT gateway 2)
- ・172.16.0.1/32 → eni-1234abcd (server1のENI ID)

3.1.2 AWS Directory Service for Microsoft Active Directoryの設定
FSx for Windows File Serverを利用するにはMicrosoft Active Directoryが必須となります。今回はAWS Managed Microsoft ADとしても知られるAWS Directory Service for Microsoft Active Directory(以降、Microsoft AD)を利用します。Microsoft ADの作成手順は以下を参照ください。
今回はMicrosoft ADを以下の設定で作成します。作成後、クラスターサーバーはMicrosoft ADのドメインに参加させておきます。また、後でCLUSTERPROに登録しますので、Microsoft ADのAdminパスワードは控えておきます。
- AWS Directory Service for Microsoft Active Directory
- -ディレクトリのDNS名:test.msad.local
- -VPC:VPC-1
- -サブネット:Subnet-A2、Subnet-C2
- -Adminパスワード:xxxxxx
Microsoft ADのセキュリティグループはAWS側で自動作成されます。デフォルトの設定では、Microsoft ADへのアクセスに必要なポートは、Microsoft ADと同じVPC CIDR範囲を送信元とする通信が全て許可されます。詳細は以下を参照ください。
3.1.3 FSx for Windows File Serverの設定
今回はFSx for Windows File Serverを以下の設定で作成します。デプロイタイプにマルチAZを設定することで、推奨サブネットのAZに障害が発生した場合に、AWSにより自動でスタンバイサブネットのAZにフェールオーバーが実施されます。
- FSx for Windows File Server
- -ファイルシステム名:test-fsx
- -デプロイタイプ:マルチAZ
- -SSDストレージ容量:32GiB
- -VPC:VPC-1
- -推奨サブネット:Subnet-A2
- -スタンバイサブネット:Subnet-C2
- -Windows認証:AWS Managed Microsoft Active Directory
- -AWS Managed Microsoft Active Directory:test.msad.local
FSx for Windows File Serverのセキュリティグループは、Microsoft ADと通信ができるように設定します。詳細は以下を参照ください。
後でファイルサーバーにアクセスする際に使用しますので、作成したFSx for Windows File ServerのDNS名(amznfsxXXXXXXXX.test.msad.local)は控えておきます。
FSx for Windows File ServerのDNSエイリアスの機能を使用している場合は、以降のamznfsxXXXXXXXX.test.msad.localをDNSエイリアスで設定したDNS名に読み替えてください。
動作確認のため、Microsoft ADのドメインに参加させたクラスターサーバーから、エクスプローラーでFSx for Windows File ServerのDNS名にアクセスします。
アクセスすると、shareという名前の共有フォルダーが確認できます。
\\amznfsxXXXXXXXX.test.msad.local
3.1.4 MinIOの設定
MinIOのインストール先は任意の場所を指定してください。今回は「C:\minio」にインストールします。
インストール後、各サーバーでMinioの動作確認をします。作成したFSx for Windows File ServerのDNS名を参照するようにMinIOのサービスを起動します。
> C:\minio\minio.exe --config-dir C:\minio\config server \\amznfsxXXXXXXXX.test.msad.local\share --console-address :9090
動作確認後、Minioのサービスを各サーバーで停止します。
> taskkill /F /IM minio.exe
3.2 VIP制御によるHAクラスターの構築
今回の検証では、CLUSTERPRO X 5.2(内部Ver. Windows:13.21)を利用しています。
CLUSTERPROの構成は以下の通りです。
- CLUSTERPRO
- -クラスタのプロパティ
- ■アカウント
- ・実行ユーザ:test.msad.local\Admin
- ・パスワード:xxxxxx ※Microsoft AD作成時に設定したAdminパスワード
- -フェールオーバーグループ(failover)
- ■AWS仮想IPリソース(awsvip)
- ・IPアドレス:172.16.0.1
- ■スクリプトリソース(script_minio)
- ・開始スクリプト(Start Script):MinIOを起動するスクリプトを記載
- ・停止スクリプト(Stop Script):MinIOを停止するスクリプトを記載
- ・調整→開始→正常な戻り値:0
- ・調整→終了→正常な戻り値:0
- ・調整→実行ユーザ:test.msad.local\Admin
- -モニタ
- ■AWS仮想IPモニタリソース(awsvipw)
- ■カスタムモニタリソース(genw_fsx)
- ・監視開始待ち時間:0秒
- ・監視タイミング:常時
- ・genw.bat:FSx for Windows File Serverに445/tcpポートで接続確認するスクリプトを記載
- ・実行ユーザ:test.msad.local\Admin
- ■カスタムモニタリソース(genw_minio)
- ・監視タイミング:活性時
- ・対象リソース:script_minio
- ・genw.bat:MinIOの起動状態を監視するスクリプトを記載
- ・実行ユーザ:test.msad.local\Admin
- ■ユーザ空間モニタリソース(userw)
3.2.1 グループリソースの登録
フェールオーバーグループには「AWS仮想IPリソース」「スクリプトリソース」を登録します。
■AWS仮想IPリソース(awsvip)
AWS仮想IPリソースは、ルートテーブルの書き換えにより接続先の切り替えを実現します。仮想IPアドレスには「172.16.0.1」を設定します。詳細な設定手順については、以下を参照ください。
- Windows > クラウド > Amazon Web Services
→ CLUSTERPRO X 5.2 向け HAクラスタ 構築ガイド
■スクリプトリソース(script_minio)
スクリプトリソースは、起動時と停止時にクラスターサーバー上で任意のスクリプトを実行するリソースです。今回はスクリプトによってMinIOの起動と停止を実行します。スクリプトリソース(例. script_minio)の開始スクリプト(start.bat)と終了スクリプト(stop.bat)に、それぞれMinIOを起動/停止するスクリプトを記載します。
開始スクリプト(start.bat)
start C:\minio\minio.exe --config-dir C:\minio\config server \\amznfsxXXXXXXXX.test.msad.local\share
tasklist | find "minio" > NUL 2>&1
exit /b %errorlevel%
終了スクリプト(stop.bat)
tasklist | find "minio" > NUL 2>&1
if errorlevel 1 exit /b 0
taskkill /F /IM minio.exe
exit /b %errorlevel%
「調整」ボタンを押して、開始スクリプトと終了スクリプトの「正常な戻り値」に「0」を入力し、「実行ユーザ」に「test.msad.local\Admin」を選択します。

3.2.2 モニタリソースの登録
モニタリソースには、FSx for Windows File ServerとMinIOそれぞれを監視する2つの「カスタムモニタリソース」を登録します。 カスタムモニタリソースでは、任意のスクリプトを使用して監視を実施します。
■カスタムモニタリソース(genw_fsx)
FSx for Windows File Serverに445/tcpポートで接続できるか否かを監視します。
FSx for Windows File Serverの優先AZからスタンバイAZへのフェールオーバーは通常30秒以内に実施されます。今回は、FSx for Windows File Serverのフェールオーバー中によるファイルサーバーへのアクセス不可をCLUSTERPROで異常と検出しないように、インターバルとリトライ回数をデフォルト値の60秒と1回に設定します。
FSx for Windows File Serverはクラスターサーバーから常にアクセスできる状態のため、監視タイミングには「常時」を選択し、監視開始待ち時間を0秒に設定します。
genw.batにFSx for Windows File Serverに445/tcpポートで接続できるか否かを監視するスクリプトを登録します。
スクリプトの例は以下になります。
- ※以下のスクリプトは例であり、動作を保証するものではありません。
rem ***************************************
rem * genw.bat *
rem ***************************************
rem FSx for Windows File Serverのドメイン名
set fsxdomain='amznfsxXXXXXXXX.test.msad.local'
rem FSx for Windows File Serverに445/tcpポートで接続確認をするコマンド
set command="Test-NetConnection %fsxdomain% -Port 445 -InformationLevel Quiet"
for /f "usebackq delims=" %%i in (`powershell -Command %command%`) do set ret=%%i
if "%ret%" == "True" (
set exitcode=0
) else if "%ret%" == "False" (
set exitcode=1
)
exit /b %exitcode%
■カスタムモニタリソース(genw_minio)
MinIOのサービスが起動しているか否かを監視します。
監視タイミングは「活性時」を選択し、対象リソースにはMinIOの制御を行うスクリプトリソース(例. script_minio)を指定します。
genw.batにMinIOの起動状態を監視するスクリプトを登録します。
スクリプトの例は以下になります。
- ※以下のスクリプトは例であり、動作を保証するものではありません。
tasklist | find "minio" > NUL 2>&1
exit /b %errorlevel%
4 動作確認
Cluster WebUIより、フェールオーバーグループが正常に起動したことを確認します。
仮想IPアドレス(172.16.0.1)を使用してMinIOに接続し、バケット(例. test)を作成します。
テキストファイル(例. test.txt)をバケットにアップロードします。
フェールオーバーの動作確認のために、Cluster WebUIから手動フェールオーバーを実行します。
フェールオーバーグループがserver2で起動したことを確認した後、仮想IPアドレス(172.16.0.1)を使用して、再度MinIOに接続します。手動フェールオーバー前に作成したテキストファイルが参照できれば成功です。
まとめ
今回は、FSx for Windows File Serverを利用したHAクラスターの構築を試してみました。
マルチAZに配置したクラスターサーバーの共有ストレージとして、FSx for Windows File Serverを利用する場合は本記事を参考にしてください。

お問い合わせ

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