NOBTAの気ままにITブログ

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

ゾーン冗長を考慮した SQL Server 可用性グループ + 可用性リスナー(内部)の構築 [Azure/WSFC/SQL Server]


スポンサーリンク

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 

f:id:nobtak:20200420010756p:plain

ゾーン冗長を考慮した Azure 仮想マシンのデプロイ

Azure 仮想マシンをデプロイする際に、「可用性ゾーン」を選択し、SQL AG1、SQL AG2 を別々の可用性ゾーンに指定してデプロイします。

※ 複数サーバー、Windows Server 2019 を日本語化する必要がある場合は、Windows Server 2019 を日本語化後、イメージ化したうえで、次回 Azure 仮想マシンをデプロイ時に日本語化したイメージを選択してデプロイすることで、作業コストを削減することができます。Azure 仮想マシンデプロイ後は、プライベート IP アドレスの設定を「静的」に変更します。

 

f:id:nobtak:20200422022043p:plain

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 サービスの再起動により設定が反映されます。

 

f:id:nobtak:20200422030634p:plain

 

WSFCのクォーラム構成をクラウド監視に変更

WSFCのクォーラム構成設定として、クラウド監視:Azure Blob Storage を使用します。

以下のURLを参考に、ゾーン冗長を考慮したクラウド監視設定を実施します。

 

SQL Server 可用性グループの構築

1) 各SQL Server上で 「SQL Server Configuration Manager」を起動し、「Always On 可用性グループ」-「Always On 可用性グループを有効にする」にチェックし、SQL Server サービスの再起動を実施します。

f:id:nobtak:20200422033923p:plain

2) SQL Server Management Studio (以下 SSMS) をダウンロードし、SQL Serverがインストールされた各 Azure 仮想マシン上でインストールします。

SSMSについては、以下のURLからダウンロードします。

※今回は、現時点にて最新の SSMS 18.5 をインストールします。

3) SSMSを起動し、管理者権限(sysadmin)が付与されたログイン(saなど)で該当のSQL Server インスタンスに接続します。

4) 「新しい可用性グループ ウィザード」から SQL Server 可用性グループを構成します。

 f:id:nobtak:20200422035652p:plain

可用性グループの構築手順については、以下のURLを参照。

 

※ SSMSを使用した 可用性グループの構築手順

 5) 「Always On 高可用性」-「可用性グループ」-「可用性グループ名(プライマリ)」- 右クリック - 「ダッシュボードの表示」を選択し、「可用性グループの状態」が「正常」であることを確認します。 

f:id:nobtak:20200422230316p:plain

 

6) 以下のURLを参考に、Lease Timeout などの設定を変更します。

 

Azure Load Balancer (ILB) の構成

1)「 ロードバランサーの作成」で 種類:「内部」、SKU :「Standard」、可用性ゾーン : 「ゾーン冗長」を選択後、「確認および作成」を押下し、新しい インターナル ロードバランサー (ILB) を作成します。

 

f:id:nobtak:20200422234658p:plain

 

2)  1) で作成した ILB の「バックエンド プール」-「+追加」を選択します。

f:id:nobtak:20200422235426p:plain

3) 「仮想マシン」欄で、SQL Server 可用性グループを構築した Azure 仮想マシンを選択し、「追加」を押下し、バックエンド プールを構成します。

f:id:nobtak:20200423000618p:plain

4) ILB の「正常性プローブ」-「+追加」を選択します。

f:id:nobtak:20200423000918p:plain

5) プロトコル : 「TCP」、ポート : 「59999」を入力後、「OK」を押下し、正常性プローブを構成します。

※ ポートは任意のポート番号で問題なのですが、今回は「59999」を指定することにします。

f:id:nobtak:20200423001107p:plain

6) ILB の「負荷分散規則」-「+追加」を選択します。

f:id:nobtak:20200423001721p:plain

7) 今回、SQL Server 既定のインスタンスで可用性グループを構成しているため、ポート、バックエンド ポートに「1433」を入力し、作成したバックエンド プール、正常性プローブを選択し、フローティング IP : 「有効」 を選択後、「OK」を押下し、負荷分散規則を構成します。

f:id:nobtak:20200423002029p:plain

 

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

1)  「フェールオーバー クラスター マネージャー」を起動し、「役割」-「可用性グループリソース」(今回は「AG01」) - 「リソースの追加」 - 「クライアント アクセス ポイント」を選択します。

 

f:id:nobtak:20200423003520p:plain 

2)  名前欄に「可用性グループ リスナー名」を入力後、ウィザードを進め、クライアント アクセス ポイントを構成します。 

f:id:nobtak:20200423003745p:plain

3)  IP アドレス: クラスター ネットワーク 1 のアドレス - 右クリック - 「プロパティ」を選択します。 

f:id:nobtak:20200423004106p:plain

4) 静的 IP アドレス : 「ILB の IP アドレス」を入力後、「適用」を押下します。 

 f:id:nobtak:20200423004441p:plain

 

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

※ 今回は、「クラスター ネットワーク 1」になります。

f:id:nobtak:20200423005604p:plain

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}

f:id:nobtak:20200423010346p:plain

※ 警告が発生した場合は、「IP アドレス リソース」をオフライン後、オンラインにして設定を反映されます。

 

8) 「フェールオーバー クラスター マネージャー」より、可用性グループリソースの依存関係に「可用性グループ リスナー用 クライアント アクセス ポイント リソース」を追加し、可用性グループ リスナー用 クライアント アクセス ポイント リソースの依存関係に「IP アドレス リソース」を追加します。  

 f:id:nobtak:20200423004837p:plain

f:id:nobtak:20200423004909p:plain

f:id:nobtak:20200423004920p:plain

 

8) SSMSを起動し、管理者権限(sysadmin)が付与されたログイン(saなど)で該当のSQL Server インスタンスに接続します。

9) 「Always On 高可用性」- 「可用性グループ」- 「可用性グループ(プライマリ)」- 「可用性グループ リスナー」- 「可用性グループ リスナー名」- 右クリック を選択します。
10)  ポート : 「ILB 負荷分散規則」 で指定したポート「1433」を指定し、「OK」を押下します。

f:id:nobtak:20200423011712p:plain

11)  可用性グループリスナー名 (今回は「sqlag-lip」) で、SQL Server に接続できることを確認します。

 

参考URL :