Japan
サイト内の現在位置を表示しています。
Azure プライベート DNSを利用したHAクラスター構築(Windows)
CLUSTERPRO オフィシャルブログ ~クラブロ~はじめに
以前のブログで、Azure DNSを利用したHAクラスター構築手順をご紹介しましたが、こちらはAzureのパブリック DNSをスクリプトで変更することで接続先の切り替えを実現していました。
当時のAzureでは、Azure プライベート DNS ゾーン(以降、プライベート DNS ゾーン)に対応していなかったため、Azure パブリック DNS ゾーン(以降、パブリック DNS ゾーン)を使用しました。
しかし、パブリック DNS ゾーンはインターネットに接続しているため、外部からのアクセスが不要なシステムでは、仮想ネットワークに閉じたカスタム DNSをユーザーが用意する必要がありました。
現在は、プライベート DNS ゾーンを利用することでカスタム DNSを作成することなく仮想ネットワーク内の DNS ゾーンの管理が可能です。
今回は接続先の切り替えにプライベート DNS ゾーンを利用したHAクラスターの構築手順をご紹介します。
- ※CLUSTERPRO X 4.0以降では、Azure DNS リソース、Azure DNS 監視リソースを使用することで、パブリック DNS ゾーンを利用したHAクラスターが容易に構築可能です。
また、スクリプトリソースを使用することで、プライベート DNS ゾーンを利用したHAクラスターが構築可能です。
この記事の内容
1. HAクラスター構成
構成は以下の通りです。
- -プライベート DNS ゾーンを使用して現用系サーバーへ接続先を切り替え
- -HAクラスター対象のアプリケーションにMinIO(オブジェクトストレージ)を使用
2. HAクラスター構築手順
- リソース グループの設定
- ■名前
- ・TestGroup1
- ■リソース グループの場所
- ・東日本
- 仮想ネットワークの設定
- ■名前
- ・Vnet1
- ■アドレス空間
- ・10.5.0.0/24
- ■サブネット名
- ・Vnet1-1
- ■サブネットアドレス範囲
- ・10.5.0.0/24
- サーバーの設定
- ■ホスト名
- ・サーバー1 (現用系サーバー):node1
- ・サーバー2 (待機系サーバー):node2
- NICの設定
- -ホスト名 (node1)
- ■NIC - IP構成
- ・ipconfig1 (プライマリ):10.5.0.120
- -ホスト名 (node2)
- ■NIC - IP構成
- ・ipconfig1 (プライマリ):10.5.0.121
- プライベート DNS ゾーンの設定
- ■プライベート DNS ゾーン名
- ・test.zone
- ■仮想ホスト名
- ・sample
手順を参考に、仮想マシンの作成後、Azure CLIのインストール、サービス プリンシパルの作成を行い、CLUSTERPROを設定します。
なお、今回は接続先切り替えにプライベートDNSを使用し、スクリプトリソースによる制御を行うため、「DNSゾーンの作成」、「Azure DNS リソース」、「Azure DNS 監視リソース」に関する設定は不要です。
フェールオーバーの確認に使用するサービスとして、オブジェクトストレージのMinIOを使用しています。
minio.exeと設定ファイル(config.json)をCドライブ配下に格納します。
また、MinIOで使用するポート番号(9000)を解放します。
2-1. Azure プライベート DNS ゾーンの作成
今回は、DNS ゾーン名に「test.zone」を指定します。
また、仮想ネットワークリンクを作成し、クライアントとHAクラスター構築サーバーが存在する仮想ネットワークをプライベート DNS ゾーンにリンクさせます。
プライベート DNS ゾーンおよび仮想ネットワークリンクの作成手順は以下のサイトを参考にしました。
2-2. HAクラスターの構築
スクリプトリソースの追加
- スクリプトリソース(Azure DNS切り替え用)
- スクリプトリソース(MinIO制御用)
スクリプトリソース(Azure DNS切り替え用)
スクリプトによって、仮想ホスト名に対応するIPアドレスを切り替えることで、フェールオーバーグループが起動しているノードに仮想ホスト名でアクセスすることができます。
スクリプトリソース(Azure DNS切り替え用)を設定します。
起動スクリプト(start.bat)、停止スクリプト(stop.bat)にそれぞれプライベート DNS ゾーンのAレコードを追加/削除するスクリプトを記載します。
CLUSTERPRO Xでは、スクリプトを実行する場合に、環境変数によってスクリプト実行要因を指定します。
スクリプトの記述についての詳細はCLUSTERPRO Xのリファレンスガイドを参照ください。
- ※以降のスクリプトはサンプルであり、動作を保証するものではありません。
- ※★部分の変数の値は環境に合わせて設定ください。
set UserProfile=C:\Users\user1 ★ ユーザプロファイル情報(.azure)のあるディレクトリ
set ResourceGroup=ResGroup1 ★ リソースグループ名
set DnsZone=test.zone ★ プライベート DNS ゾーン名
set VhostName=sample ★ 仮想ホスト名
set Node1Name=NODE1 ★ 1つ目のノード名
set Node1IP=10.5.0.120 ★ 1つ目のIPアドレス
set Node2Name=NODE2 ★ 2つ目のノード名
set Node2IP=10.5.0.121 ★ 2つ目のIPアドレス
set TTL=60 ★ TTL
if %ComputerName% == %Node1Name% (
set IPAddr=%Node1IP%
) else if %ComputerName% == %Node2Name% (
set IPAddr=%Node2IP%
) else (
exit /b 99
)
call az network private-dns record-set a delete -g %ResourceGroup% -z %DnsZone% -n %VhostName% --yes
call az network private-dns record-set a create -g %ResourceGroup% -z %DnsZone% -n %VhostName% --ttl %TTL% > nul
call az network private-dns record-set a add-record -g %ResourceGroup% -z %DnsZone% -n %VhostName% -a %IPAddr% > nul
set Retval=%errorlevel%
exit /b %Retval%
set UserProfile=C:\Users\user1 ★ 起動スクリプトと同じパラメータを指定
set ResourceGroup=ResGroup1
set DnsZone=test.zone
set VhostName=sample
call az network private-dns record-set a delete -g %ResourceGroup% -z %DnsZone% -n %VhostName% --yes
exit /b 0
スクリプトリソース(MinIO制御用)
スクリプトリソース(Azure DNS切り替え用)と同様の手順でスクリプトリソースを設定します。
起動スクリプト(start.bat)、停止スクリプト(stop.bat)にそれぞれMinIOを起動/停止するスクリプトを記載します。
set MinioDir=c:\minio ★ minio.exeの格納場所
set MinioDataDir=g:\data ★ MinIOで扱うデータの格納場所
start %MinioDir%\minio.exe --config-dir %MinioDir% server %MinioDataDir%
tasklist | find "minio"
exit /b %errorlevel%
tasklist | find "minio"
if errorlevel 1 exit /b 0
taskkill /f /im minio.exe
exit /b %errorlevel%
カスタム監視リソースの作成
- カスタム監視リソース(Azure DNS監視用)
- カスタム監視リソース(MinIO監視用)
カスタム監視リソース(Azure DNS監視用)
スクリプトにより、DNSの名前解決を行い、名前解決されたIPアドレスが設定値と一致しているかを監視します。
カスタム監視リソース(Azure DNS監視用)を設定します。
set DnsZone=test.zone ★ 起動スクリプトと同じパラメータを指定
set VhostName=sample
set Node1Name=NODE1
set Node1IP=10.5.0.120
set Node2Name=NODE2
set Node2IP=10.5.0.121
if %ComputerName% == %Node1Name% (
set IPAddr=%Node1IP%
) else if %ComputerName% == %Node2Name% (
set IPAddr=%Node2IP%
) else (
exit /b 99
)
nslookup -type=a %VhostName%.%DnsZone%. | findstr /e /c:"%IPAddr%" > nul
exit /b %errorlevel%
カスタム監視リソース(MinIO監視用)
スクリプトによりMinIOのプロセスが存在するかどうかを監視します。
カスタム監視リソース(Azure DNS監視用)と同様の手順でカスタム監視リソースを設定します。
tasklist | find "minio" > NUL 2>&1
exit /b %errorlevel%
3. 動作確認
WebUIを使用してHAクラスターを起動します。
障害発生前と同様にアクセスできることが確認できました。
まとめ
本記事の構成をご検討の際は、CLUSTERPROの試用版を用いて検証した後、ご提案・構築ください。
お問い合わせ
- ※本記事で紹介しているスクリプトの内容についてのお問い合わせ、および、お客様環境に合わせたカスタマイズにつきましてはCLUSTERPRO導入支援サービスにて承っておりますので、上記窓口の"ご購入前のお問い合わせ"フォームまでお問い合わせください。