Azure 仮想マシン上に WSFC (Windows Server Failover Clustering) を構築し、SQL Server 可用性グループ + 可用性リスナーを構築する必要があったため、ゾーン冗長を考慮したSQL Server 可用性グループ + 可用性リスナー(内部)の構築方法についてまとめてみたいと思います。
【構成図】
OS : Windows Server 2019
SQL Server : SQL Server 2019 Developer Edition (Enterprise Edition 相当)、既定のインスタンス (MSSQLSERVER)
クラウド監視 : Azure Blob Storage
- ゾーン冗長を考慮した Azure 仮想マシンのデプロイ
- Azure 仮想マシン上に必要な機能の有効化、ソフトウェアをインストール
- WSFCのクォーラム構成をクラウド監視に変更
- SQL Server 可用性グループの構築
- Azure Load Balancer (ILB) の構成
- SQL Server 可用性リスナーの構成
ゾーン冗長を考慮した Azure 仮想マシンのデプロイ
Azure 仮想マシンをデプロイする際に、「可用性ゾーン」を選択し、SQL AG1、SQL AG2 を別々の可用性ゾーンに指定してデプロイします。
※ 複数サーバー、Windows Server 2019 を日本語化する必要がある場合は、Windows Server 2019 を日本語化後、イメージ化したうえで、次回 Azure 仮想マシンをデプロイ時に日本語化したイメージを選択してデプロイすることで、作業コストを削減することができます。Azure 仮想マシンデプロイ後は、プライベート IP アドレスの設定を「静的」に変更します。
Windows Server 2019 OSの日本語化、イメージの作成方法については、以下のURLを参照。
Azure 仮想マシン上に必要な機能の有効化、ソフトウェアをインストール
事前作業として、以下の作業を実施。
- Active Directory をインストールする環境で、「Active Directory Federation Services」を有効化し、1台目は Active Directory ドメイン サービスの構成ウィザードで「新しいフォレストを追加する」を選択して構成し、2台目は 「既存のドメインにドメイン コントローラを追加する」を選択し、冗長化します。(今回は、別途 DNSサーバーを立てないため、各Active Directoryサーバー上に「DNS サーバー」もインストールします。
- SQL Server をインストールする Azure 仮想マシン上で「フェールオーバー クラスタリング」を有効化し、「フェールオーバー クラスター マネージャー」から新規クラスターを作成します。
- SQL Server 可用性グループを構成する Azure 仮想マシン上で、SQL Server 2019 をインストール。(今回は、SQL Server 2019 Developer Edition をインストール)
[注意]
SQL Server 2019 Developer Edition は、既定で TCP/IP プロトコルが「無効」になっているため、SQL Server Configuration Manager から TCP/IP プロトコルを「有効」にします。※ SQL Server サービスの再起動により設定が反映されます。
WSFCのクォーラム構成をクラウド監視に変更
WSFCのクォーラム構成設定として、クラウド監視:Azure Blob Storage を使用します。
以下のURLを参考に、ゾーン冗長を考慮したクラウド監視設定を実施します。
SQL Server 可用性グループの構築
1) 各SQL Server上で 「SQL Server Configuration Manager」を起動し、「Always On 可用性グループ」-「Always On 可用性グループを有効にする」にチェックし、SQL Server サービスの再起動を実施します。
2) SQL Server Management Studio (以下 SSMS) をダウンロードし、SQL Serverがインストールされた各 Azure 仮想マシン上でインストールします。
SSMSについては、以下のURLからダウンロードします。
※今回は、現時点にて最新の SSMS 18.5 をインストールします。
3) SSMSを起動し、管理者権限(sysadmin)が付与されたログイン(saなど)で該当のSQL Server インスタンスに接続します。
4) 「新しい可用性グループ ウィザード」から SQL Server 可用性グループを構成します。
可用性グループの構築手順については、以下のURLを参照。
※ SSMSを使用した 可用性グループの構築手順
5) 「Always On 高可用性」-「可用性グループ」-「可用性グループ名(プライマリ)」- 右クリック - 「ダッシュボードの表示」を選択し、「可用性グループの状態」が「正常」であることを確認します。
6) 以下のURLを参考に、Lease Timeout などの設定を変更します。
Azure Load Balancer (ILB) の構成
1)「 ロードバランサーの作成」で 種類:「内部」、SKU :「Standard」、可用性ゾーン : 「ゾーン冗長」を選択後、「確認および作成」を押下し、新しい インターナル ロードバランサー (ILB) を作成します。
2) 1) で作成した ILB の「バックエンド プール」-「+追加」を選択します。
3) 「仮想マシン」欄で、SQL Server 可用性グループを構築した Azure 仮想マシンを選択し、「追加」を押下し、バックエンド プールを構成します。
4) ILB の「正常性プローブ」-「+追加」を選択します。
5) プロトコル : 「TCP」、ポート : 「59999」を入力後、「OK」を押下し、正常性プローブを構成します。
※ ポートは任意のポート番号で問題なのですが、今回は「59999」を指定することにします。
6) ILB の「負荷分散規則」-「+追加」を選択します。
7) 今回、SQL Server 既定のインスタンスで可用性グループを構成しているため、ポート、バックエンド ポートに「1433」を入力し、作成したバックエンド プール、正常性プローブを選択し、フローティング IP : 「有効」 を選択後、「OK」を押下し、負荷分散規則を構成します。
SQL Server 可用性リスナーの構成
1) 「フェールオーバー クラスター マネージャー」を起動し、「役割」-「可用性グループリソース」(今回は「AG01」) - 「リソースの追加」 - 「クライアント アクセス ポイント」を選択します。
2) 名前欄に「可用性グループ リスナー名」を入力後、ウィザードを進め、クライアント アクセス ポイントを構成します。
3) IP アドレス: クラスター ネットワーク 1 のアドレス - 右クリック - 「プロパティ」を選択します。
4) 静的 IP アドレス : 「ILB の IP アドレス」を入力後、「適用」を押下します。
5) PowerShell を起動し、「Get-ClusterNetwork」コマンドを実行し、クラスタ ネットワーク名を確認します。
※ 今回は、「クラスター ネットワーク 1」になります。
6) 以下のパラメータ値を確認します。
$ClusterNetworkName = "クラスター ネットワーク 1"
// Get-ClusterNetwork で確認したクラスタ ネットワーク名を指定
$IPResourceName = "IP アドレス 10.0.0.0"
// 「可用性グループ リスナー用 クライアント アクセス ポイント リソース」に紐づく、「IP アドレス リソース」名を指定
$ListenerILBIP = "10.0.0.100"
// ILBに指定した IP アドレスを指定
[int]$ListenerProbePort = 59999
// 正常性プローブに指定したポート番号を指定
7) PowerShell を起動し、以下のコマンドを実行します。
$ClusterNetworkName = "クラスター ネットワーク 1" $IPResourceName = "IP アドレス 10.0.0.0" $ListenerILBIP = "10.0.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} |
※ 警告が発生した場合は、「IP アドレス リソース」をオフライン後、オンラインにして設定を反映されます。
8) 「フェールオーバー クラスター マネージャー」より、可用性グループリソースの依存関係に「可用性グループ リスナー用 クライアント アクセス ポイント リソース」を追加し、可用性グループ リスナー用 クライアント アクセス ポイント リソースの依存関係に「IP アドレス リソース」を追加します。
8) SSMSを起動し、管理者権限(sysadmin)が付与されたログイン(saなど)で該当のSQL Server インスタンスに接続します。
9) 「Always On 高可用性」- 「可用性グループ」- 「可用性グループ(プライマリ)」- 「可用性グループ リスナー」- 「可用性グループ リスナー名」- 右クリック を選択します。
10) ポート : 「ILB 負荷分散規則」 で指定したポート「1433」を指定し、「OK」を押下します。
11) 可用性グループリスナー名 (今回は「sqlag-lip」) で、SQL Server に接続できることを確認します。
参考URL :