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

Azure File Storage を利用した HAクラスターの構築を試してみました(Windows)

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

はじめに

今回はAzure File Storageをサーバー間のデータ引き継ぎ場所に使用したHAクラスターの構築を試してみました。
Azure File Storageとはサーバー メッセージ ブロック (SMB) プロトコル使用してファイル共有機能を提供するサービスです。

この記事の内容

以下の手順で、AzureでHAクラスターを構築します。
  • 1.Azureに仮想マシンを作成
  • 2.仮想マシン(HAクラスター化対象サーバー)にCLUSTERPRO Xをインストール
  • 3.Azure File Storageにファイル共有を作成
  • 4.HAクラスターを構築
  • 5.動作確認

HAクラスター構築手順

HAクラスター構成

2ノードのHAクラスターを構築します。

1.Azureに仮想マシンを作成

2.仮想マシン(HAクラスター化対象サーバー)にCLUSTERPRO Xをインストール

3.Azure File Storageにファイル共有を作成

Azure CLI 2.0を使用してファイル共有を作成します。

  • ストレージアカウント:samplestorage
  • 共有ファイル名:sampleshare
  • ファイル共有のクォータ (最大サイズ):10GB

> $StorageAccountName=samplestorage
> $AccountKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ←Storage Acount Keyを指定

> $FileShareName=sampleshare
> $FileShareSize=10
>
> az storage share create --name $FileShareName --account-key $AccountKey --account-name $StorageAccountName --quota $FileShareSize

ファイル共有の作成手順は以下のURLを参考にしました。
「Azure File Storage にファイル共有を作成する」

4.HAクラスターを構築

WebManagerを使用して構築します。
WebManagerは、Webブラウザー経由でHAクラスターの管理や構築を行う運用管理ツールです。

Webブラウザーで、CLUSTERPRO Xをインストールしたサーバーに接続して、WebManagerを起動します。
http://サーバーのIPアドレス:29003

  • WebManagerを起動するマシンにはJava実行環境(JRE)がインストールされている必要があります。
    スタートアップガイドなどで動作検証済みのJava実行環境を確認し、適宜インストールしてください。

例) http://10.10.2.7:29003

構築の流れ

①HAクラスターの作成
②フェールオーバーグループの作成
③モニターリソースの作成

①HAクラスターの作成

クラスター名やサーバー名、ネットワークの設定を実行し、設定を反映します。

  • HAクラスターを作成
  • サーバーを追加
  • ネットワーク構成を設定
  • ネットワークパーティション解決処理を設定

②フェールオーバーグループの作成

3つのリソースを追加します。

  • スクリプトリソース(Azure DNS切り替え用)
  • スクリプトリソース(Azure File Storageアクセス制御用)
  • スクリプトリソース(minio制御用)

スクリプトリソース(Azure DNS切り替え用)

Azure DNS のレコードの制御により、接続先の切り替えを実現します。

スクリプトリソース(Azure File Storageアクセス制御用)

Azure File Storageのアクセス制御を実現します。
スクリプトリソースでは、フェールオーバーグループの起動時、終了時、移動時に任意のスクリプトを実行します。
スクリプトによって、Azure File Storageに対するマウント、アンマウントを実施することで、フェールオーバーグループが起動しているノードからAzure File Storageにアクセスすることができます。
 

スクリプトリソース(Azure File Storageアクセス制御用)の設定を実施します。

起動スクリプト(start.bat)、停止スクリプト(stop.bat)にそれぞれ Azure File Storageをマウント、アンマウントするスクリプトを記載します。
今回は、サンプルスクリプトにStorage Account Keyを直接記述しています。
CLUSTERPRO Xでは、スクリプトを実行する場合に、環境変数によってスクリプト実行要因を指定します。
スクリプトの記述についての詳細は CLUSTERPRO Xのリファレンスガイドを参照ください。

起動スクリプト(抜粋)

set StorageAccount=samplestorage
set FileShareName=sampleshare
set StorageAccountKey=XXXXXXXXXXXXXXXXXXXXXXXXXXXX
set DriveLetter=Z

…省略…
net use "%DriveLetter%": "\\%StorageAccount%.file.core.windows.net\%ShareFileName%" "%StorageAccountKey%" "/user:Azure\%StorageAccount%" /persistent:NO
exit /b %errorlevel%
…省略…

停止スクリプト(抜粋)

set DriveLetter=Z

…省略…
net use "%DriveLetter%": /delete
exit /b %errorlevel%
…省略…

ファイル共有のマウント手順は以下のURLを参考にしました。
「Windows で Azure ファイル共有をマウントして共有にアクセスする」

スクリプトの戻り値を判定するため、[正常な戻り値]の設定を実施します。

スクリプトリソース(Azure File Storage アクセス制御用)の設定画面04
スクリプトリソース(minio制御用)

minioの制御を実現します。
スクリプトによって、minioの起動/停止を実行します。

スクリプトリソース(Azure File Storageアクセス制御用)と同様の手順でスクリプトリソースを設定します。

リソースの依存関係(起動順序)をスクリプトリソース(Azure File Storageアクセス制御用)の起動後にminioが起動するように変更します。

起動スクリプト(start.bat)、停止スクリプト(stop.bat)にそれぞれminioを起動/停止するスクリプトを記載します。

起動スクリプト(抜粋)

start C:\minio\minio.exe --config-dir C:\minio server Z:\
tasklist |find "minio"
exit /b %errorlevel%

停止スクリプト(抜粋)

tasklist |find "minio"
if errorlevel 1 exit /b 0
taskkill /IM minio.exe
exit /b %errorlevel%

③モニターリソースの作成

2つのリソースを追加します。
  • カスタム監視リソース(Azure DNS監視用)
  • カスタム監視リソース(minio監視用)

5.動作確認

フェールオーバーグループをServer1で起動します。

仮想ホスト名を使用してminioに接続します。

手動フェールオーバーを実行。

上記の手動フェールオーバー後も同様に仮想ホスト名を使用してminioに接続します。
手動フェールオーバー前と同様にアクセスできることが確認できました。

注意事項

スクリプトリソースは SYSTEM権限で動作するため、Azure File StorageのマウントはSYSTEM権限で実行されます。
ネットワークドライブの一覧には、"切断したネットワークドライブ"と表示されます。
ネットワークドライブはSYSTEM権限で接続可能です。その他のユーザーで接続する場合には、別途、接続の設定が必要となります。

まとめ

今回はAzure File Storageを利用したHAクラスターの構築手順を紹介させていただきました。
サーバー間のデータ引き継ぎ場所としてAzure File Storageが使用可能なことを確認できました。
また、今回はAzure File Storageのマウント、アンマウントをCLUSTERPRO Xで制御しましたが、CLUSTERPROで制御せずAzure File Storageを両ノードから常時マウントしておく構成も可能です。
なお、Azure File Storageを利用する際は、I/O性能を事前に確認ください。

最後まで読んでいただきありがとうございました。

参考

クラウド向けクラスター構築支援サービス(クラウドHAコンサル)を実施しています。
お問い合わせ先はこちら(info@clusterpro.jp.nec.com new window)

お問い合わせ

当ブログに関するお問い合わせは、CLUSTERPRO プリセールスお問い合わせ窓口(info@clusterpro.jp.nec.com new window)までお問い合わせください。