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

Azure DNS を利用した HAクラスター構築(Windows)

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

はじめに

Microsoft Azure(以降、Azure)でCLUSTERPRO Xを使用したHAクラスター構築手順をご紹介します。

HAクラスターを構築する際に、現用系サーバーへの接続先の切り替えは重要なポイントの一つです。
今回は、接続先の切り替えにAzure DNSを利用したHAクラスターの構築手順をご紹介します。

この記事の内容

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

クラスター構築手順

クラスター構成

2ノードミラーディスク型クラスターを構築します。

  • Azure DNSを使用して現用系サーバーへ接続先を切り替え
  • クラスター対象のアプリケーションにminio(オブジェクトストレージ)を使用

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

合計3台の仮想マシンを作成します。

CLUSTERPRO X操作用クライアント を1台
クラスター化対象サーバー を2台

  • AzureのSLA要件を満たすため、クラスター化対象サーバー用の仮想マシンは、1つの可用性セット内に作成します。
  • CLUSTERPRO Xのシステム要件に合わせて、以下の仮想マシンを作成します。

  • OS:Windows Server 2016 Datacenter
  • サイズ:A1_v2Standard

仮想マシンの構築手順は以下のURLを参考にしました。
「Azure PortalでWindows仮想マシンを作成する」

「Azure可用性セットを作成することによるVMの可用性の向上」

仮想マシンを作成後、以下を実行します。

  • CLUSTERPRO X、minioで使用するポート番号を解放します。
  • CLUSTERPRO XからAzure DNSを制御するため、Azure CLIをインストールします。

  • 本ブログではAzure CLI 2.0を使用します。

Azure CLIのインストール手順は以下のURLを参考にしました。
「Azure CLI 2.0のインストール」

  • minio.exeと設定ファイル(config.json)をCドライブ配下に格納します。
  • データミラーリング用に仮想マシンにストレージBLOBを追加し、クラスターパーティション、データーパーティションを作成します。

  • クラスターパーティション ミラーディスクを管理するためのパーティション
  • データーパーティション ミラーリング対象の業務データを格納するためのパーティション

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

CLUSTERPRO Xのインストーラーを仮想マシンに格納します。
インストーラーを起動して、CLUSTERPRO Xをインストールします。

インストーラの画面

3.クラスターを構築

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

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

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

例) http://10.10.2.7:29003

構築の流れ

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

①クラスターの作成

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

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

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

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

  • ミラーディスクリソース
  • スクリプトリソース(Azure DNS切り替え用)
  • スクリプトリソース(minio制御用)

ミラーディスクリソース

サーバー間でボリュームのミラーリングを実現します。

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

Azure DNSのレコードの制御により、接続先の切り替えを実現します。
スクリプトリソースでは、フェールオーバーグループの起動時、終了時、移動時に任意のスクリプトを実行します。
スクリプトによって、仮想ホスト名に対応するIPアドレスを切り替えることで、フェールオーバーグループが起動しているノードに仮想ホスト名でアクセスすることができます。

Azure DNSのレコードを制御するための事前準備として以下を実行しておきます。
  • Azure DNSを作成
  • Azure CLIのインストール
  • 仮想マシンのDNSサーバーの設定変更(参照するDNSサーバーを変更)

スクリプトリソース(Azure DNS切り替え用)の設定を実施します。

起動スクリプト(start.bat)、停止スクリプト(stop.bat)にそれぞれAzure DNSのレコードを追加/削除するスクリプトを記載します。
CLUSTERPRO Xでは、スクリプトを実行する場合に、環境変数によってスクリプト実行要因を指定します。
スクリプトの記述についての詳細はCLUSTERPRO Xのリファレンスガイドを参照ください。

起動スクリプト(抜粋)

set IPAddress01=10.10.2.7
set IPAddress02=10.10.2.8
set ResourceGroup=clusterpro
set ZoneName=clusterpro.net
set RecordSetName=sample
set TTL=30
…省略…
CALL az network dns record-set a create --resource-group "%ResourceGroup%" --zone-name "%ZoneName%" --name "%RecordSetName%" --ttl "%TTL%"
CALL az network dns record-set a add-record --resource-group "%ResourceGroup%" --zone-name "%ZoneName%" --record-set-name "%RecordSetName%" --ipv4-address "%IPAddress01%"
exit /b %errorlevel%
…省略…

停止スクリプト(抜粋)

set ResourceGroup=clusterpro
set ZoneName=clusterpro.net
set RecordSetName=sample
…省略…
CALL az network dns record-set a delete --resource-group "%ResourceGroup%" --zone-name "%ZoneName%" --name "%RecordSetName%" -y
exit /b %errorlevel%
…省略…

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

スクリプトリソース(Azure DNS切り替え用)の設定画面03
スクリプトリソース(minio制御用)

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

スクリプトリソース(Azure DNS切り替え用)と同様の手順でスクリプトリソースを設定します。

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

起動スクリプト(抜粋)

start C:\minio\minio.exe --config-dir C:\minio server F:\
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監視用)

カスタム監視リソース(Azure DNS監視用)

Azure DNSに登録したレコードとIPアドレスの対応付けを監視します。
カスタム監視リソースでは、任意のスクリプトを実行することにより監視を行います。
スクリプトにより、DNSの名前解決を行い、名前解決されたIPアドレスが設定値と一致しているかを監視します。

監視スクリプト(抜粋)

set IPAddress01=10.10.2.7
set IPAddress02=10.10.2.8
set FQDN=sample.clusterpro.net
…省略…
nslookup %FQDN% | findstr /E /C:"%IPAddress01%" > NUL 2>&1
exit /b %errorlevel%

カスタム監視リソース(minio監視用)

minioの起動状態を監視します。
スクリプトによりminioのプロセスが存在するかどうか監視します。
カスタム監視リソース(Azure DNS監視用)と同様の手順でカスタム監視リソースを設定します。

監視スクリプト(抜粋)

tasklist |find "minio" > NUL 2>&1
exit /b %errorlevel%

4.動作確認

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

障害契機によるフェールオーバーの動作確認のために、minioのプロセスを停止します。

CLUSTERPRO Xが障害を検出しフェールオーバーが発生。

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

まとめ

今回は、Azure DNSを利用したHAクラスターの構築手順をメインに紹介させていただきました。
最後まで読んでいただきありがとうございました。

参考

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

お問い合わせ

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