NOBTAの気ままにITブログ

Azure全般 / SQL Serverに関する情報を発信していきます。

【保存版】Azure環境で SQL Server AlwaysOn 可用性リスナー (内部) を構築する方法について


スポンサーリンク

オンプレミス環境で構築された SQL Server AlwaysOn 可用性グループ構成 を、システム リプレイスなどのタイミングで Azure へ移行することを検討されている方もいるのではないでしょうか。

SQL Server AlwaysOn 可用性グループ構成 を Azure へ移行する場合、考慮すべき点の一つとして、SQL Server AlwaysOn 可用性リスナー が挙げられます。

SQL Server AlwaysOn 可用性リスナー を Azure 上で作成する場合、Azure Load Balancer を作成する必要があります。

今回は自分の整理も兼ねて、Azure 上で SQL Server AlwaysOn 可用性リスナー を作成する手順についてまとめてみようと思います。

 

 

SQL Server AlwaysOn 可用性リスナー用 Azure Load Balancer の構成

1) Azure 管理ポータルにログインし、「ロード バランサー」-「+ 作成」を選択します。

※ 「負荷分散|ロード バランサー」- 負荷分散サービス:ロード バランサー -  「+作成」からも作成可能。

 

f:id:nobtak:20220221201228p:plain


2) 「基本」で必要項目を入力後、「次: フロントエンド IP 構成」を選択します。


名前 : 任意のロードバランサー名

地域 : SQL Server AlwaysOn 可用性グループが構成された Azure 仮想マシンが稼働しているリージョンを選択

SKU : Standard

種類 : 内部

レベル : 地域 

 

f:id:nobtak:20220224145603p:plain

 

3) 「フロントエンド IP 構成」で「+ フロントエンド IP 構成の追加」により、フロントエンド IP 構成を追加後、「次: バックエンド プール」を選択します。

 

f:id:nobtak:20220224160716p:plain

 

+ フロントエンド IP アドレスの追加

 

名前 : 任意のフロントエンド IP アドレス構成名

仮想ネットワーク :  ロードバランサーに紐づける仮想ネットワークを選択

サブネット :  任意のサブネットを選択

割り当て : 静的

IP アドレス : SQL Server AlwaysOn 可用性リスナー用 プライベート IP アドレス を入力

可用性ゾーン : ゾーン冗長 

※ Azure 上で SQL Server AlwaysOn 可用性グループ構成を ゾーン冗長で構成 (SQL Server AlwaysOn 可用性グループの各ノード: Azure 仮想マシン を異なる Azure ゾーンに配置している構成) している場合、SQL Server AlwaysOn 可用性リスナー (内部ロードバランサー) でもリージョン障害に対応できるよう「ゾーン冗長」で構成することを推奨。

 

f:id:nobtak:20220225171443p:plain

 

4) 「バックエンド プール」で「+ バックエンド プールの追加」により、バックエンド プールを追加後、「次: インバウンド規則」を選択します。

 

f:id:nobtak:20220224161926p:plain

 

+ バックエンド プールの追加

 

名前 : 任意のバックエンド プール名

バックエンドプールの構成 :  NIC

IP バージョン : IPv4

割り当て : 静的

仮想マシン : SQL Server AlwaysOn 可用性グループを構成する各ノード (Azure 仮想マシン) を追加。

+注意

バックエンド プールに追加可能な Azure 仮想マシンは、可用性ゾーン もしくは 可用性セット に所属している必要があります。

一度デプロイした Azure 仮想マシン に対して、後から 可用性ゾーン/可用性セット の追加を実施することが出来ないため、Azure 仮想マシンをデプロイ時に注意が必要となります。

※ 可用性ゾーン/可用性セット に所属していない Azure 仮想マシンで SQL Server AlwaysOn 可用性グループ を構築してしまった場合は、各 Azure 仮想マシンを停止後、マネージド ディスクのスナップショットを作成 -> スナップショットから新規マネージド ディスク -> 新規マネージド ディスク より、新規 Azure 仮想マシンを 可用性ゾーン/可用性セット を選択したうえで 再デプロイ (Azure 仮想マシンの再作成) というような作業が必要になります。

 

f:id:nobtak:20220224162413p:plain

 

5) 「インバウンド規則」で「+ 負荷分散規則の追加」により、負荷分散の規則、正常性プローブ を追加後、「次: アウトバウンド規則」を選択します。

※「+ インバウンド NAT 規則の追加」は必要に応じて設定します。

 

f:id:nobtak:20220224165119p:plain

 

+ 負荷分散規則の追加

 

名前 : 任意の負荷分散規則名

IP バージョン : IPv4

フロントエンド IP アドレス :  作成した フロントエンド IP アドレス を選択

バックエンド プール : 作成した バックエンド プール を選択

ポート : 1433

※ SQL Server AlwaysOn 可用性グループを SQL Server 既定のインスタンスで構成している場合

バックエンド ポート : 1433

※ SQL Server AlwaysOn 可用性グループを SQL Server 既定のインスタンスで構成している場合

正常性プローブ : 「新規作成」より新規作成

セッション永続性 : なし

TCP リセット :  無効

フローティング IP :  有効

 

f:id:nobtak:20220224164854p:plain

f:id:nobtak:20220224170839p:plain

 

+ 正常性プローブ

 

名前 : 任意の正常性プローブ名

プロトコル : TCP

ポート : 59999

※ 任意のポートを指定。SQL Server AlwaysOn 可用性リスナー (内部) を複数作成する場合は、本ポート番号が被らないよう設定します。

 

f:id:nobtak:20220224171426p:plain

 

6) 「送信規則」で既定値のまま「確認および作成」を選択します。

 

f:id:nobtak:20220224172245p:plain

 

7) 入力内容を確認後、「作成」を選択します

 

f:id:nobtak:20220224172502p:plain

 

SQL Server AlwaysOn 可用性リスナーの構成

1) SQL Server AlwaysOn 可用性グループ を構成した Azure 仮想マシンにログインし、「フェールオーバー クラスター マネージャー」を起動します。

 

f:id:nobtak:20220225164555p:plain

 

2) 「役割」-「可用性グループリソース」(今回は ag01) - 右クリック -「リソースの津追加」-「クライアント アクセス ポイント」を選択します。

 

f:id:nobtak:20220225164844p:plain

 

3) 名前欄に「SQL Server AlwaysOn 可用性リスナー名」(今回は agl01) を入力後、「次へ」を選択します。

 

f:id:nobtak:20220225165452p:plain

 

3) ウィザードを進め、クライアント アクセスポイント が構成されたことを確認後、「完了」ボタンを選択します。

 

f:id:nobtak:20220225170618p:plain

 

4) 「役割」-「可用性グループリソース」(今回は ag01) -「リソース」タブ -「IP アドレス: クラスター ネットワーク 1 のアドレス」- 右クリック -「プロパティ」を選択します。

f:id:nobtak:20220225170952p:plain

 

5) 「全般」タブ -「静的 IP アドレス」欄に、SQL Server AlwaysOn 可用性リスナー用 Azure Load Balancer の構成 : 3) で追加した「フロントエンド IP アドレス」(今回は 172.16.0.100) を入力後、「適用」、「OK」ボタンを選択します。

※ 「名前」欄も任意で変更します。(今回は IP アドレス 172.16.0.100)

 

f:id:nobtak:20220225172036p:plain

 

6) 「フェールオーバー クラスター マネージャー」を停止し、Windows PowerShell を管理者として起動します。

 

7)「Get-ClusterNetwork」コマンドを実行し、クラスタ ネットワーク名を確認します。

※ 今回は「クラスター ネットワーク 1

 

f:id:nobtak:20220225173104p:plain

 

8) パラメータ値の値を確認します。

 

$ClusterNetworkName = "クラスター ネットワーク 1"

// Get-ClusterNetwork で確認したクラスタ ネットワーク名を指定

 

$IPResourceName = "IP アドレス 172.16.0.100"

//  5) の名前欄に入力した SQL Server AlwaysOn 可用性リスナー用 IP アドレスリソース名を指定

 

$ListenerILBIP = "172.16.0.100"

// SQL Server AlwaysOn 可用性リスナー用 Azure Load Balancer の構成 : 3) で追加した「フロントエンド IP アドレス」 を指定

 

[int]$ListenerProbePort = 59999

// SQL Server AlwaysOn 可用性リスナー用 Azure Load Balancer の構成 : 5) で追加した「正常性プローブ」のポート番号を指定

 

9) 8) で確認したパラメータ値に書き換え、PowerShell 上で以下のコマンドを実行します。

 

$ClusterNetworkName = "クラスター ネットワーク 1"
$IPResourceName = "IP アドレス 172.16.0.100"
$ListenerILBIP = "172.16.0.100"
[int]$ListenerProbePort = 59999

Import-Module FailoverClusters

Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ListenerILBIP";"ProbePort"=$ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}

 

f:id:nobtak:20220225174304p:plain


9) 「フェールオーバー クラスター マネージャー」を起動し、「役割」-「可用性グループリソース」(今回は ag01) -「リソース」タブ - IP アドレス リソース (今回は 「IP アドレス: 172.16.0.100」) - 右クリック - オンライン によりリソースをオンライン後、ネットワーク名リソース (今回は「agl01」) - 右クリック - オンライン によりリソースをオンラインにします。

 

f:id:nobtak:20220225181841p:plain


10) SQL Server Availability Group リソース (今回は「ag01」) - 右クリック - プロパティ を選択します。

 

f:id:nobtak:20220225210000p:plain

 

11)「依存関係」タブ - リソース に、ネットワーク名リソース (今回は「agl01」) を選択し、「適用」ボタンを選択後、「OK」ボタンを選択し、「フェールオーバー クラスター マネージャー」を閉じます。

 

f:id:nobtak:20220225205705p:plain

 

12) SQL Server Management Studio (SSMS) を起動し、管理者権限(sysadmin)が付与されたログイン(saなど)で SQL Server AlwaysOn 可用性グループが構成された プライマリ側の SQL Server インスタンスに接続します。

 

13)「Always On 高可用性」-「可用性グループ」-「可用性グループ (プライマリ)」-「可用性グループ リスナー」-「可用性グループ リスナー名」- 右クリック -「プロパティ」を選択します。

 

f:id:nobtak:20220225213618p:plain


14) ポート欄に SQL Server AlwaysOn 可用性リスナー用 Azure Load Balancer の構成 : 5) 「負荷分散規則」のポートで指定したポート (今回は 1433) を入力後、「OK」ボタンを選択します。

 

f:id:nobtak:20220225214114p:plain

 

15) SQL Server AlwaysOn 可用性リスナー名 (今回は「agl01」) で、SQL Server インスタンスに接続できることを確認します。

 

f:id:nobtak:20220225215251p:plain

 

参考 URL

 

まとめ

Azure 上で SQL Server AlwaysOn 可用性リスナー を作成する手順についてまとめてみました。

現時点において、Azure 上で SQL Server AlwaysOn 可用性リスナーを作成するためには、Azure Load Balancer を利用する必要があります。

なお、SQL Server AlwaysOn 可用性グループを複数作成し、複数の SQL Server AlwaysOn 可用性リスナーを作成したい場合があると思います。

その場合、Azure Load Balancer を複数作成し、正常プローブ のポート番号を一意にすることで、複数の SQL Server AlwaysOn 可用性リスナーを作成することが可能となります。

また、SQL Server AlwaysOn 基本的な可用性グループにおいても、同様の方法で SQL Server AlwaysOn 可用性リスナーを作成することが可能となります。

 

関連 URL

 

 

※ 2022年2月時点