はじめに
以前、AzureでN層アーキテクチャのデプロイやってみたの記事で紹介したN層アーキテクチャの自動デプロイを修正して、小一時間でAlwaysOnの検証環境を自動構築してみようと思います。
実際の運用で使用している検証環境はアプリケーションの検証用途でも使っており、おいそれとフェールオーバーの設定変更やサービスアカウントのパスワード変更などできない環境課と思います。常日頃、短時間で検証環境を構築し、検証して、検証後すぐ削除できるような環境があればいいなと考えていました。
ただ、AlwaysOnの検証環境を構築するためにはActiveDirectoryの環境も必要ですし、ドメインに対する強い権限も必要のため、アプリケーションの管理者でもAlwaysOnの環境は作れないかと思います。
今回はAzureのサブスクリプションさえあれば、小一時間でAlwaysOnの環境を準備できるようにしたいと思います。デプロイに時間はかかりますが、Powershellを一つ実行すれば構築は自動的に完了します。
全体構成
デプロイを実行すると下記のような環境が構築されます。
- ActiveDirectory:2台
- SQL Serverがインストールされた仮想マシン:2台
- クラスターのバーチャルホスト名で受け付けるためのロードバランサー:1台
- 仮想マシンにログインするための踏み台環境(bastion)
準備作業
AzureでN層アーキテクチャのデプロイやってみたの記事で紹介した下記手順を実施します。
- Azure CLIのインストール
- Node.jsインストール
- Azure Building Blocksのインストール
ここまで準備できたら、ソースコードは下記からダウンロードもしくはクローンします。
※上記はmspnp/reference-architectures: templates and scripts for deploying Azure Reference Architectures (github.com)のリポジトリを参照し、SQL ServerのAlwaysOn構成に必要なリソースだけデプロイされるように修正しています。
デプロイ
ソースコードがダウンロードできたら
virtual machines -> n-tier-windows フォルダ配下の
start.ps1を実行します。
実行するとAzure Portalにログインするためのプロンプトが表示されますので、サブスクリプションに対する管理者権限のあるアカウントでログインします。
あとは小一時間まてばデプロイ完了です。
start.ps1で実施していること
引数の設定
start.ps1の中では「$replaceWithPassword」と「$rgname」の引数を受け付けます。
$replaceWithPasswordはデプロイ中に作成される仮想マシンやSQL Serverにログインするアカウントのパスワードとなります。
$rgnameはstart.ps1で作成するリソースグループ名を指定します。
Azure Portalへのログイン
最初の処理はaz loginでAzure Portalへログインします。後続の処理でsubscription idを指定する必要があるので、値を抽出します。
設定ファイル内のパスワード設定その1
ソースコードの中にn-tier-windows.jsonというファイルが含まれており、最初に指定した引数でファイル内のパスワードを指定すべき箇所を置換していきます。
デプロイ実行1回目
下記のコマンドでAzure上にVNETや仮想マシンなどをデプロイしていきます。リージョンは東日本固定にしています。
azbb -s $yousubscriptionid.id -g $rgname -l "japaneast" -p replaced-n-tier-windows.json --deploy
ストレージアカウントのキー値を取得
デプロイ実行1回目の中でAlwaysOnのクォーラムとして使用するストレージアカウントを作成しており、そのストレージアカウントのキー値を以下で取得しています。$accountname=Get-AzStorageAccount | Where-Object{$_.StorageAccountName -like "sql*"}
$key=Get-AzStorageAccountKey -Name $accountname.StorageAccountName -ResourceGroupName $rgname | Where-Object{$_.KeyName -eq "key1"}
設定ファイル内のパスワード設定その2
n-tier-windows-sqlao.jsonに含まれるパスワード設定個所とストレージアカウントのキー値を設定する箇所を置換します。
デプロイ実行2回目
下記のコマンドでAlwaysOnの設定を行っていきます。
azbb -s $yousubscriptionid.id -g $rgname -l "japaneast" -p replaced-n-tier-windows-sqlao.json --deploy
出来上がった環境へのログイン
デプロイが完了したらAzurePortalからBastion経由でログインします。
デフォルトでは「segmentation」というリソースグループが作成されており、その中に仮想マシンが4台作成されています。
Basitionでのログイン
ログインしたいVMを指定して、接続->Bastionと選択します。
以下のようにAlwaysOnの設定も完了した環境が手に入ります。
以上で構築完了となります。AlwaysOnでの検証が完了したら、リソースグループごと削除し、検証したくなったら、またstart.ps1を実行して作成することができます。
0 件のコメント:
コメントを投稿