【カコムスSEが書く「明日から役立つ」ITコラム】
Azure VMでのSQL Server Always On 可用性グループ構築手順

Azure VMでのSQL Server Always On 可用性グループ構築手順

はじめに

今回、Azure VMを使用した、SQL Server Always On 可用性グループを構築してみました。
本記事では、プライマリSQLとセカンダリSQLを配置するサブネットをそれぞれ分けることで、 ロードバランサーや、分散ネットワーク名 (DNN) の構築が不要となる構成で構築していきます。

その他の手順や、各手順での要件については下記対応表をご参照ください。

構成イメージ

全体の構成イメージは下記の通りです。

  • Active Directoryドメイン環境上にAlways On 可用性グループを構築します。
  • SQL仮想マシンのOSはWindows Server 2022を使用します。
  • SQLライセンスはSQL Server 2019 Standardを使用します。
  • プライマリSQL仮想マシンとセカンダリSQL仮想マシンは別々の可用性ゾーンに配置します。
  • 各仮想マシンのNicのセカンダリIPアドレスに、リスナーとして使用するIPアドレスを設定します。
    ※Windows Server 2016以前の場合は、上記に併せクラスターIPとして使用するIPアドレスも設定します。詳細については下記URLをご参照ください。
    セカンダリ IP を SQL Server VM に追加する(外部サイトを開きます)
  • クラスターのクォーラム監視はBlobストレージでのクラウド監視を指定します。

事前準備

可用性グループを作成するために、下記準備が必要です。

  • 仮想ネットワーク環境を準備し、2つ以上のサブネットを作成します。
  • ADドメイン環境を準備します。
  • SQL Server VMを2台作成します。
    この時、下記の点に注意してください。
    ・冗長性オプションは可用性ゾーン or 可用性セットを選択します。
    ・サブネットをプライマリとセカンダリで個別に設定します。
  • 各SQL Server VMに、セカンダリIPとしてリスナーとして使用するIPアドレスを設定します。
  • 各SQL Server VMをActive Directoryドメインに参加させます。
  • sysadminとSQL Server サービスアカウント用のドメインユーザーを作成し、必要な権限を割り当てます。
  • Azure ストレージアカウントを作成します。
    この時、下記の点に注意してください。
    ・ストレージアカウントのパフォーマンスはStandard v2を選択します。
    ・冗長性オプションはLRSを選択します。
  • SQL Server VMのWindows ファイアウォール設定で、下記2つのポートを受信の規則で許可します。
    ・SQL Server の既定のインスタンス用のポート:1433
    ・データベースミラーリングエンドポイント:使用可能な任意のポート(5022 等)

上記手順の詳細については、下記URLをご参照ください。
チュートリアル: 複数のサブネットでの可用性グループの前提条件 (Azure VM 上の SQL Server)(外部サイトを開きます)

可用性グループ構築手順

1.フェールオーバークラスター機能の追加

各SQL Server VMの[サーバーマネージャー]>[役割と機能の追加]から機能の追加を行います。

2.クラスターの作成

①1台目のSQL Server VMで、[サーバーマネージャー]>[ツール]>[フェールオーバークラスターマネージャー]を選択します。
②[フェールオーバークラスターマネージャー]を右クリックし、[クラスターの作成]を選択します。 ③[次へ]を選択します。 ④[サーバーの選択]で、2台のSQL Serverを追加し、[次へ]を選択します。 ⑤[はい。[次へ] をクリックして、構成検証テストを実行し、その後クラスターの作成プロセスに戻ります] を選択し、[次へ]を選択します。 ⑥[次へ]を選択します。 ⑦[選択するテストのみを実行する]を選択し、[次へ]を選択します。 ⑧[インベントリ]、[システムの構成]、[ネットワーク]が選択された状態で[次へ]を選択します。 ⑨[次へ]を選択します。 ⑩テストが完了したら、[レポートの表示]を選択してレポートを確認します。
「VM に到達できるネットワーク インターフェイスが 1 つしかない」という警告が表示されますが、Azure VMの場合は静観して問題ありません。
レポートの内容を確認できたら[完了]を選択します。 ⑪[クラスター名]を入力し、[次へ]を選択します。 ⑫[使用可能な記憶域をすべてクラスターに追加する]のチェックを外し、[次へ]を選択します。 ⑬[完了]を選択します。

3.クォーラムを構成する

①1台目のSQL Server VMで、Windows Powershellを管理者権限で開きます。
②下記2つのコマンドを実行します。


[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12

Set-ClusterQuorum -CloudWitness -AccountName "ストレージアカウント名" -AccessKey "ストレージアカウントアクセスキー"

※2つ目のコマンドで下記エラーが出る場合は、各SQL Server VMで「winrm quickconfig」というコマンドを実施後、もう一度試してみてください。


Set-ClusterQuorum : ERROR CODE : 0x80131500;
NATIVE ERROR CODE : 1.
クライアントは、要求で指定された接続先に接続できません。
接続先のサービスが実行されていて、要求を受け付けられる状態であることを確認してください。 
接続先で実行されている WS-Management サービス (通常は IIS または WinRM) に関するログとドキュメントを参照してください。 
接続先が WinRM サービスの場合は、リモート ホスト上で次のコマンドを実行して、
WinRM サービスを分析および構成してください: "winrm quickconfig"

4.可用性グループ機能を有効にする

①1台目のSQL Server VMで、[SQL Server 構成マネージャー]を起動します。
②[SQL Server のサービス]>[SQL Server (MSSQLSERVER)]を右クリックし、[プロパティ]を選択します。 ③[Always On 可用性グループ]>[Always On 可用性グループを有効にする]にチェックを入れ、[適用]を選択します。 ④[OK]を選択します。 ⑤SQL Server サービスを再起動します。
⑥2台目のSQL Server VMでも同様の手順を実施します。

5.データベースの作成

①1台目のSQL Server VMで、[SQL Server Management Studio(SSMS)]を起動し、SQL Server インスタンスに接続します。
②[データベース]を右クリックし、[新しいデータベース]を選択します。 ③[データベース名]を入力し、[オプション]を選択します。 ④[復旧モデル]が[完全]となっていることを確認し、[OK]を選択します。 ⑤データベースをバックアップします。
データベース名を右クリックし、[タスク]>[バックアップ]を選択します。 ⑥バックアップ先の場所を確認し、[OK]を選択します。 ⑦内容を確認し、[OK]を選択します。

6.ファイル共有の作成

①1台目のSQL Server VMで[コンピューターの管理]を開きます。
②[共有フォルダー]>[共有]を右クリックし、[新しい共有]を選択します。 ③[次へ]を選択します。 ④[フォルダーパス]にデータベースバックアップを保存するパスを指定し、[次へ]を選択します。 ⑤[共有名]と[共有パス]を確認し、[次へ]を選択します。 ⑥[アクセス許可のカスタマイズ]>[カスタマイズ] を選択します。 ⑦SQL Serverサービスアカウントに共有のフルコントロール権限を付与し、OKを選択します。 ⑧[完了]を選択します。

7.可用性グループを作成する

①1台目のSQL Server VMで、[SQL Server Management Studio(SSMS)]を起動し、SQL Server インスタンスに接続します。
②[Always On 高可用性]を右クリックし、[新しい可用性グループウィザード]を選択します。 ③[次へ]を選択します。 ④[可用性グループ名]を入力し、[次へ]を選択します。 ⑤対象のデータベースを選択し、[次へ]を選択します。 ⑥[レプリカの追加]を選択します。 ⑦2台目のSQL Server VMの名前を[サーバー名]に入力し、[接続]を選択します。 ⑧[自動フェールオーバー]のチェックを入れ、[可用性モード]は[同期コミット]を選択します。 ⑨[エンドポイント]を選択し、データベースミラーリングエンドポイントに使用されているポートがファイアウォールで解放したポートであることを確認します。 ⑩[リスナー]>[可用性グループリスナーの作成]を選択します。
[リスナーのDNS名]、[ポート]を入力し、[追加]を選択します。 ⑪事前準備で用意したリスナーに使用するIPアドレスを2つ指定します。[OK]を指定します。 ⑫設定値を確認し、[次へ]を選択します。 ⑬[完全なデータベースとログ バックアップ] を選択し、前に作成した共有フォルダを指定します。
[次へ]を選択します。 ⑭すべての検証チェックに成功していることを確認し、[次へ]を選択します。 ⑮[完了]を選択します。 ⑯[ウィザードは正常に終了しました]と表示されたら、[閉じる]を選択します。

8.可用性グループを確認する

①[Always On 高可用性]>[可用性グループ]を選択します。
可用性グループ名を右クリックし、[ダッシュボードの表示]を選択します。 ②可用性グループダッシュボードに、フェールオーバーモードや同期状態が表示されます。 ③[フェールオーバークラスターマネージャー]を開き、[役割]を選択すると、可用性グループのロールが表示されます。
リソースタブを選択すると、リスナー名とそれに関連付けられているIPアドレスが表示されます。
所有者ノードに割り当てられているIPが[オンライン]、片方は[オフライン]と表示されます。

9.リスナー接続をテストする

①セカンダリSQL Server VMにサインインし、[SQL Server Management Studio(SSMS)]を開きます。
[サーバー名]にリスナーの名前を入力し、[オプション]を選択します。 ②[追加の接続パラメーター]ウィンドウに、「MultiSubnetFailover=True」と入力し、[接続]を選択します。
「MultiSubnetFailover=True」を設定することで、接続にかかる時間を短縮することができます。 ③プライマリSQL Server がホストされているインスタンスに接続されることを確認します。

おわりに

いかがでしたでしょうか?
本記事でご紹介したようにマルチサブネット上のAzure VMを利用することで、SQL Server Always On 可用性グループを比較的簡単に構築することが可能です。
ただし、事前準備や前提条件が多いので、1つ1つ確認しながら進めていきましょう。
また、弊社ではAzureをはじめ、Microsoft 365やPower Platformでお悩みの方向けに、無料の個別相談会を開催しております。
さらに2023年9月29日まで「Azureお悩みキャンペーン」を実施しております。併せて是非ご活用ください!

配信日:2023年7月12日

■Azureお悩みキャンペーン開催中(法人様向け)■

Azureライセンスをカコムスでご契約いただくと、
一年間有効な「ご相談チケット」を5枚プレゼント!
※申込期限:2023年9月29日まで

【キャンペーン対象Azure サービス】
 オンプレサーバーのクラウド化案件
(AD、ファイルサーバ、アプリケーション)
 仮想デスクトップ基盤案件
 BCP/DR関連案件(Azure Backup)
 データ分析基盤案件
 アクセス制御、他

■個別相談会のご案内■

個別にご相談したい内容がございましたら、
無料の相談会を是非ご活用ください!

~Microsoft 365 なんでも相談会~

Power Platform、Azure、その他Microsoft 365ライセンス 等、
弊社専門スタッフが皆様のご相談、お悩みにお答えいたします。

オンライン・オンサイトセミナーも開催中!

Power PlatformやPower Apps、Power Automate、Power BIなどについてさらに詳しく知りたい方は、
Kacoms Worldにてセミナー動画を無料公開中です。下記バナーより是非ご確認ください。

その他のコラムはこちら