【カコムス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ライセンス 等、
弊社専門スタッフが皆様のご相談、お悩みにお答えいたします。
オンライン・オンサイトセミナーも開催中!