チュートリアル:可用性グループを手動で構成する (Azure VM 上の SQL Server)

適用対象: Azure VM 上の SQL Server

ヒント

同じ Azure 仮想ネットワーク内の複数のサブネットに SQL Server VM を作成することで、Always On 可用性グループ (AG) に対して Azure Load Balancer が不要になります。

このチュートリアルでは、Azure Virtual Machines (VM) の 1 つのサブネット内に SQL Server の Always On 可用性グループを作成する方法を説明します。 チュートリアル全体で、2 つの SQL サーバー上にデータベース レプリカを使用して可用性グループを作成します。

この記事では可用性グループ環境を手動で構成しますが、Azure portalPowerShell や Azure CLI、または Azure クイックスタート テンプレートを使用して構成することもできます。

推定所要時間: 前提条件が満たされてから完了までに約 30 分かかります。

前提条件

このチュートリアルでは、SQL Server Always On 可用性グループの基本的な知識があることを前提としています。 詳しくは、「Always On 可用性グループの概要 (SQL Server)」をご覧ください。

チュートリアルを始める前に、Azure Virtual Machines で Always On 可用性グループを作成するための前提条件を満たす必要があります。 これらの前提条件が既に満たされている場合は、「クラスターを作成する」に進んでかまいません。

次の表に、このチュートリアルを開始する前に完了している必要がある前提条件を示します。

要件 説明
2 つの SQL Server インスタンス - Azure 可用性セット内
- 単一のドメイン内
- フェールオーバー クラスタリング機能インストール済み
Windows Server クラスター監視用のファイル共有
SQL Server サービス アカウント ドメイン アカウント
SQL Server エージェント サービス アカウント ドメイン アカウント
ファイアウォール ポートを開く - SQL Server:1433 (既定インスタンス用)
- データベース ミラーリング エンドポイント:5022 または使用可能な任意のポート
- 可用性グループ ロードバランサーの IP アドレスの正常性プローブ:59999 または使用可能な任意のポート
- クラスター コア ロードバランサーの IP アドレスの正常性プローブ:58888 または使用可能な任意のポート
フェールオーバー クラスタリング機能を追加する 両方の SQL Server インスタンスにこの機能が必要です
インストール ドメイン アカウント - 各 SQL Server 上のローカル管理者
- SQL Server の各インスタンスの SQL Server sysadmin 固定サーバー ロールのメンバー

Note

このチュートリアルで説明する手順の多くは、Azure portalPowerShell や Az CLIAzure クイックスタート テンプレートを使用して自動化できるようになりました。

クラスターを作成する

前提条件が完了した後は、最初に、2 つの SQL Sever と監視サーバーを含む Windows Server フェールオーバー クラスターを作成します。

  1. リモート デスクトップ プロトコル (RDP) を使用して、最初の SQL Server に接続します。 SQL Server と監視サーバー両方の管理者であるドメイン アカウントを使用します。

    ヒント

    前提条件のドキュメントに従っている場合、CORP\Install という名前のアカウントを作成しているはずです。 このアカウントを使います。

  2. [サーバー マネージャー] ダッシュボードで、 [ツール] を選択し、 [フェールオーバー クラスター マネージャー] を選択します。

  3. 左側のペインで、 [フェールオーバー クラスター マネージャー] を右クリックし、 [クラスターの作成] を選択します。

    Create Cluster

  4. クラスターの作成ウィザードの各ページで、次の表の設定を使って、単一ノード クラスターを作成します。

    ページ 設定
    はじめに 既定値を使用
    サーバーの選択 1 番目の SQL Server の名前を [サーバー名を入力してください] に入力し、 [追加] を選択します。
    検証の警告 [いいえ、このクラスターに Microsoft のサポートは必要ありませんので、検証テストを実行しません。[次へ] を選択して、クラスターの作成を続行します。] を選択します。
    クラスター管理用のアクセス ポイント [クラスター名] にクラスター名を入力します (例: SQLAGCluster1)。
    確認 記憶域スペースを使用している場合を除き、既定値を使用します。 この表の次の注を参照してください。

Windows Server フェールオーバー クラスターの IP アドレスを設定する

Note

Windows Server 2019 では、クラスターはクラスターネットワーク名ではなく、分散サーバー名を作成します。 Windows Server 2019 を使用している場合は、このチュートリアルでクラスターのコア名を参照するすべての手順をスキップしてください。 クラスター ネットワーク名は、PowerShell を使用して作成できます。 詳細については、「フェールオーバー クラスター:クラスタ ネットワーク オブジェクト」のブログを参照してください。

  1. フェールオーバー クラスター マネージャーで、 [クラスター コア リソース] まで下にスクロールして、クラスターの詳細を展開します。 [名前][IP アドレス] リソースの両方が [失敗] 状態で表示されます。 クラスターにコンピューター自体と同じ IP アドレスが割り当てられていて、アドレスが重複するため、IP アドレス リソースをオンラインにすることができません。

  2. 失敗した IP アドレス リソースを右クリックし、 [プロパティ] を選択します。

    Cluster Properties

  3. [静的 IP アドレス] を選択し、仮想マシンと同じサブネットの使用可能なアドレスを指定します。

  4. [クラスター コア リソース] セクションで、クラスター名を右クリックして、 [オンラインにする] を選択します。 両方のリソースがオンラインになるまで待ちます。 クラスター名リソースがオンラインになると、新しい Active Directory (AD) コンピューター アカウントでドメイン コントローラー (DC) サーバーが更新されます。 この AD アカウントは、後で可用性グループのクラスター化サービスを実行するときに使用します。

他の SQL Server をクラスターに追加する

他の SQL Server をクラスターに追加します。

  1. ブラウザー ツリーで、クラスターを右クリックし、 [ノードの追加] を選択します。

    Add Node to the Cluster

  2. ノードの追加ウィザードで、 [次へ] を選択します。 [サーバーの選択] ページで、2 番目の SQL Server を追加します。 サーバー名を [サーバー名を入力してください] に入力し、 [追加] を選択します。 完了したら、 [次へ] を選択します。

  3. [検証の警告] ページで [いいえ] を選択します (実際の運用シナリオでは、検証テストを実施する必要があります)。 次に、 [次へ] を選択します。

  4. 記憶域スペースを使っている場合は、 [確認] ページの [使用可能な記憶域をすべてクラスターに追加する] チェック ボックスをオフにします。

    Add Node Confirmation

    警告

    [使用可能な記憶域をすべてクラスターに追加する] をオフにしないと、Windows はクラスター作成処理中に仮想ディスクをデタッチします。 その結果、仮想ディスクはディスク マネージャーやエクスプローラーに表示されなくなり、表示するためには、記憶域をクラスターから削除し、PowerShell を使って再アタッチしなければなりません。

  5. [次へ] を選択します。

  6. [完了] を選択します。

    フェールオーバー クラスター マネージャーで、クラスターに新しいノードがあることが示され、そのノードが [ノード] コンテナーの一覧に表示されます。

  7. リモート デスクトップ セッションからログアウトします。

クラスター クォーラム ファイル共有を追加する

この例では、Windows クラスターはファイル共有を使ってクラスター クォーラムを作成します。 このチュートリアルでは、"ノードおよびファイル共有マジョリティ" クォーラムを使います。 詳細については、「クォーラムを構成および管理する」を参照してください。

  1. リモート デスクトップ セッションでファイル共有監視メンバー サーバーに接続します。

  2. サーバー マネージャーで、 [ツール] を選択します。 [コンピューターの管理] を開きます。

  3. [共有フォルダー] を選択します。

  4. [共有] を右クリックし、 [新しい共有] を選択します。

    Right-click shares and select new share

    共有フォルダーの作成ウィザードを使って共有を作成します。

  5. [フォルダー パス] で、 [参照] を選択して、共有フォルダーのパスを検索するか作成します。 [次へ] を選択します。

  6. [名前、説明および設定] で、共有名とパスを確認します。 [次へ] を選択します。

  7. [共有フォルダーのアクセス許可] で、 [アクセス許可のカスタマイズ] を設定します。 [カスタム] を選択します。

  8. [アクセス許可のカスタマイズ] で、 [追加] を選択します。

  9. クラスターの作成に使うアカウントがフル コントロールを持っていることを確認します。

    Make sure the account used to create the cluster has full control

  10. [OK] を選択します。

  11. [共有フォルダーのアクセス許可] で、 [完了] を選択します。 [完了] をもう一度選択します。

  12. サーバーからログアウトします。

クラスター クォーラムを構成する

次に、クラスター クォーラムを設定します。

Note

可用性グループの構成によっては、Windows Server フェールオーバー クラスターに参加しているノードのクォーラム投票を変更することが必要な場合があります。 詳細については、「Azure VM での SQL Server 向けクラスター クォーラムの構成」を参照してください。

  1. リモート デスクトップで 1 番目のクラスター ノードに接続します。

  2. フェールオーバー クラスター マネージャーで、クラスターを右クリックし、 [その他の操作] をポイントして、 [クラスター クォーラム設定の構成] を選択します。

    Select configure cluster quorum settings

  3. クラスター クォーラム構成ウィザードで、 [次へ] を選択します。

  4. [クォーラム構成オプションの選択] で、 [クォーラム監視を選択する] を選択し、 [次へ] を選択します。

  5. [クォーラム監視の選択] で、 [ファイル共有監視を構成する] を選択します。

    ヒント

    Windows Server 2016 では、クラウド監視がサポートされています。 この種類の監視を選んだ場合は、ファイル共有監視は必要ありません。 詳しくは、「Deploy a cloud witness for a Failover Cluster」(フェールオーバー クラスターにクラウド監視を展開する) をご覧ください。 このチュートリアルでは、以前のオペレーティング システムでサポートされているファイル共有監視を使います。

  6. [ファイル共有監視の構成] で、作成した共有のパスを入力します。 [次へ] を選択します。

  7. [確認] で設定を確認します。 [次へ] を選択します。

  8. [完了] を選択します。

クラスター コア リソースにファイル共有監視が構成されます。

可用性グループを有効にする

次に、AlwaysOn 可用性グループ機能を有効にします。 以下の手順は、両方の SQL Server に対して実行してください。

  1. スタート画面から SQL Server 構成マネージャーを起動します。

  2. ブラウザー ツリーで、 [SQL Server のサービス] を選択し、 [SQL Server (MSSQLSERVER)] サービスを右クリックして、 [プロパティ] を選択します。

  3. 次に示すように、 [AlwaysOn 高可用性] タブを選択し、 [AlwaysOn 可用性グループを有効にする] をオンにします。

    Enable AlwaysOn availability groups

  4. [適用] を選択します。 ポップアップ ダイアログで [OK] を選択します。

  5. SQL Server サービスを再起動します。

もう一方の SQL Server についても同じ手順を繰り返します。

1 番目の SQL Server でデータベースを作成する

  1. sysadmin 固定サーバー ロールのメンバーであるドメイン アカウントを使って、1 番目の SQL Server に対する RDP ファイルを起動します。
  2. SQL Server Management Studio を開き、1 番目の SQL Server に接続します。
  3. オブジェクト エクスプローラーで、 [データベース] を右クリックし、 [新しいデータベース] を選択します。
  4. [データベース名] に「MyDB1」と入力し、 [OK] を選択します。

バックアップ共有を作成する

  1. サーバー マネージャーの 1 番目の SQL Server で、 [ツール] を選択します。 [コンピューターの管理] を開きます。

  2. [共有フォルダー] を選択します。

  3. [共有] を右クリックし、 [新しい共有] を選択します。

    Select New Share

    共有フォルダーの作成ウィザードを使って共有を作成します。

  4. [フォルダー パス] で、 [参照] を選択して、データベース バックアップ共有フォルダーのパスを検索するか作成します。 [次へ] を選択します。

  5. [名前、説明および設定] で、共有名とパスを確認します。 [次へ] を選択します。

  6. [共有フォルダーのアクセス許可] で、 [アクセス許可のカスタマイズ] を設定します。 [カスタム] を選択します。

  7. [アクセス許可のカスタマイズ] で、 [追加] を選択します。

  8. SQL Server アカウントと SQL Server エージェント サービス アカウントの両方にフル コントロールがあることを確認します。

    Make sure that the SQL Server and SQL Server Agent service accounts for both servers have full control.

  9. [OK] を選択します。

  10. [共有フォルダーのアクセス許可] で、 [完了] を選択します。 [完了] をもう一度選択します。

データベースの完全バックアップを作成する

ログ チェーンを初期化するには、新しいデータベースをバックアップする必要があります。 新しいデータベースのバックアップを作成しないと、データベースを可用性グループに含めることはできません。

  1. オブジェクト エクスプローラーで、データベースを右クリックし、 [タスク] をポイントして、 [バックアップ] を選択します。

  2. [OK] を選択して、既定のバックアップ場所に完全バックアップを作成します。

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

これで、次の手順を使用して可用性グループを構成する準備が整いました。

  • 1 番目の SQL Server でデータベースを作成する
  • データベースの完全バックアップとトランザクション ログ バックアップの両方を作成します。
  • NORECOVERY オプションを使って、完全バックアップとログ バックアップを 2 番目の SQL Server に復元する。
  • 同期コミット、自動フェールオーバー、読み取り可能なセカンダリのレプリカを含む可用性グループ (AG1) を作成します。

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

  1. 1 番目の SQL Server へのリモート デスクトップ セッションを開きます。 SSMS のオブジェクト エクスプローラーで、 [AlwaysOn 高可用性] を右クリックし、 [新しい可用性グループ ウィザード] を選択します。

    Launch New availability group Wizard

  2. [説明] ページで [次へ] を選択します。 [可用性グループ名の指定] ページで、 [可用性グループ名] に可用性グループの名前を入力します。 たとえば、「AG1」のように入力します。 [次へ] を選択します。

    New availability group Wizard, Specify availability group Name

  3. [データベースの選択] ページで、対象のデータベースを選択し、 [次へ] を選択します。

    Note

    対象とするプライマリ レプリカで完全バックアップを少なくとも 1 つは作成しているため、このデータベースは可用性グループの前提条件を満たしています。

    New availability group Wizard, Select Databases

  4. [レプリカの指定] ページで [レプリカの追加] を選択します。

    New availability group Wizard, Specify Replicas

  5. [サーバーに接続] ダイアログが表示されます。 2 番目のサーバーの名前を [サーバー名] に入力します。 [接続] を選択します。

    [レプリカの指定] ページに戻ると、 [可用性レプリカ] の一覧に 2 番目のサーバーが表示されていることがわかります。 次に示すようにレプリカを構成します。

    New availability group Wizard, Specify Replicas (Complete)

  6. [エンドポイント] を選択して、この可用性グループのデータベース ミラーリング エンドポイントを表示します。 データベース ミラーリング エンドポイントのファイアウォール ルールを設定するときに使ったものと同じポートを使います。

    New availability group Wizard, Select Initial Data Synchronization

  7. [最初のデータ同期を選択] ページで、 [完全] を選び、共有ネットワークの場所を指定します。 この場所としては、先に作成したバックアップ共有を使います。 この例では、\\<1 番目の SQL Server>\Backup\ でした。 [次へ] を選択します。

    注意

    完全同期では、SQL Server の 1 番目のインスタンスにあるデータベースの完全バックアップが作成されて、2 番目のインスタンスに復元されます。 大規模なデータベースの場合、完全同期は長い時間がかかることがあるのでお勧めできません。 手動でデータベースのバックアップを作成し、NO RECOVERY で復元することにより、この時間を短縮できます。 可用性グループを構成する前に 2 番目の SQL Server のデータベースが NO RECOVERY で既に復元されている場合は、 [参加のみ] を選びます。 可用性グループを構成した後でバックアップを作成する場合は、 [最初のデータ同期をスキップ] を選びます。

    Choose Skip initial data synchronization

  8. [検証] ページで [次へ] を選択します。 このページは次の図のようになります。

    New availability group Wizard, Validation

    Note

    可用性グループ リスナーを構成していないため、リスナー構成に関する警告が表示されます。 Azure Virtual Machines で Azure Load Balancer を作成した後にリスナーを作成するので、この警告は無視してかまいません。

  9. [概要] ページで、 [完了] を選択し、新しい可用性グループが構成されるまで待ちます。 [進行状況] ページで [詳細] を選択すると、進行状況が詳しく表示されます。 ウィザードが終了した後、[結果] ページを調べ、可用性グループが正常に作成されたことを確認します。

    New availability group Wizard, Results

  10. [閉じる] を選択してウィザードを終了します。

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

  1. オブジェクト エクスプローラーで、 [AlwaysOn 高可用性][可用性グループ] の順に展開します。 このコンテナー内に新しい可用性グループが表示されます。 可用性グループを右クリックして [ダッシュボードの表示] をクリックします。

    Show availability group Dashboard

    AlwaysOn ダッシュボードが、次のスクリーンショットのように表示されます。

    availability group Dashboard

    レプリカ、各レプリカのフェールオーバー モード、および同期の状態を確認できます。

  2. フェールオーバー クラスター マネージャーで、対象のクラスターを選択します。 [役割] を選びます。 使った可用性グループの名前は、クラスターでの役割です。 リスナーを構成していないため、その可用性グループにはクライアント接続用の IP アドレスがありません。 Azure Load Balancer を作成した後で、リスナーを構成します。

    availability group in Failover Cluster Manager

    警告

    フェールオーバー クラスター マネージャーから、可用性グループのフェールオーバーを実行しないでください。 すべてのフェールオーバー操作は、SSMS の AlwaysOn ダッシュボード から実行する必要があります。 詳細については、フェールオーバー クラスター マネージャーと可用性グループの使用に関する制限事項のページを参照してください。

この時点で、SQL Server の 2 つのインスタンス上にレプリカを含む可用性グループができています。 可用性グループは、インスタンス間で移動できます。 リスナーがないため、可用性グループにはまだ接続できません。 Azure Virtual Machines では、リスナーにはロード バランサーが必要です。 次に、Azure でロード バランサーを作成します。

Azure Load Balancer を作成する

Note

SQL Server 2019 CU8 以降および Windows 2016 以降をお使いのお客様は、従来の VNN リスナーと Azure Load Balancer を分散ネットワーク名 (DNN) リスナーで置き換えることができます。 リスナーとロード バランサーを作成するこの記事の残りの手順はスキップしてください。

Azure Virtual Machines では、SQL Server 可用性グループにはロード バランサーが必要です。 ロード バランサーには、可用性グループ リスナーと Windows Server フェールオーバー クラスターの IP アドレスが保持されます。 このセクションでは、Azure Portal でロード バランサーを作成する方法の概要を説明します。

Azure のロード バランサーは、Standard Load Balancer または Basic Load Balancer のいずれかです。 Standard Load Balancer には、Basic Load Balancer よりも多くの機能があります。 可用性グループで、(可用性セットではなく) 可用性ゾーンを使用する場合は、Standard Load Balancer が必要です。 ロード バランサーの SKU の違いについては、「Load Balancer の SKU の比較」を参照してください。

  1. Azure portal で、対象の SQL Server が存在するリソース グループに移動し、 [+ 追加] を選択します。

  2. ロード バランサー」を検索します。 Microsoft が公開しているロード バランサーを選びます。

    Choose the load balancer published by Microsoft

  3. [作成] を選択します

  4. ロード バランサーに関して次のパラメーターを構成します。

    設定 フィールド
    名前 ロード バランサーのテキスト名を使います (例: sqlLB)。
    Type 内部
    Virtual Network Azure 仮想ネットワークの名前を使います。
    サブネット 仮想マシンが存在するサブネットの名前を使います。
    IP アドレスの割り当て 静的
    IP アドレス (IP address) サブネットで利用できるアドレスを使います。 可用性グループ リスナーにはこのアドレスを使用します。 これはクラスター IP アドレスと異なることに注意してください。
    サブスクリプション 仮想マシンと同じサブスクリプションを使います。
    場所 仮想マシンと同じ場所を使います。

    Azure Portal のブレードは次のようになります。

    Create Load Balancer

  5. [作成] を選択して、ロード バランサーを作成します。

ロード バランサーを構成するには、バックエンド プールとプローブを作成し、負荷分散規則を設定する必要があります。 これらは Azure Portal で行います。

可用性グループ リスナーのバックエンド プールを追加する

  1. Azure Portal で、可用性グループに移動します。 新しく作成したロード バランサーを表示するため、ビューの更新が必要な場合があります。

    Find Load Balancer in Resource Group

  2. ロード バランサーを選択し、 [バックエンド プール] を選択し、 [+ 追加] を選択します。

  3. バックエンド プールの名前を入力します。

  4. VM を含む可用性セットにバックエンド プールを関連付けます。

  5. [ターゲット ネットワーク IP 構成] の下で、 [仮想マシン] を確認し、可用性グループ レプリカをホストする仮想マシンを両方とも選択します。 ファイル共有監視サーバーは含めないでください。

    Note

    仮想マシンを両方とも指定しないと、プライマリ レプリカにしか接続できません。

  6. [OK] を選択して、バックエンド プールを作成します。

プローブを設定する

  1. ロード バランサーを選択し、 [正常性プローブ] を選択し、 [+ Add] を選択します。

  2. リスナーの正常性プローブを次のように設定します。

    設定 説明
    名前 Text SQLAlwaysOnEndPointProbe
    プロトコル TCP を選びます TCP
    [ポート] 未使用の任意のポート 59999
    間隔 プローブの試行の間隔 (秒単位) 5
    異常のしきい値 仮想マシンが異常と判断されるために必要な、連続したプローブ失敗の数 2
  3. [OK] を選択して、正常性プローブを設定します。

負荷分散規則を設定する

  1. ロード バランサーを選択し、 [負荷分散規則] を選択し、 [+ 追加] を選択します。

  2. 次のようにリスナーの負荷分散規則を設定します。

    設定 説明
    名前 Text SQLAlwaysOnEndPointListener
    フロントエンド IP アドレス アドレスを選びます ロード バランサーの作成時に作成したアドレスを使います。
    プロトコル TCP を選びます TCP
    [ポート] 可用性グループ リスナーのポートを使用する 1433
    バックエンド ポート Direct Server Return に Floating IP を設定するときは、このフィールドは使われません 1433
    プローブ プローブに指定した名前 SQLAlwaysOnEndPointProbe
    セッション永続化 ドロップダウン リスト なし
    アイドル タイムアウト TCP 接続を開いたままにしておく時間 (分) 4
    フローティング IP (ダイレクト サーバー リターン) Enabled

    警告

    Direct Server Return は作成の間に設定されます。 この値は変更しないでください。

  3. [OK] を選択して、リスナーの負荷分散規則を設定します。

Windows Server フェールオーバー クラスター (WSFC) のクラスターコア IP アドレスを追加する

WSFC の IP アドレスもロード バランサー上に存在する必要があります。

  1. Azure portal で、同じ Azure ロード バランサーに移動します。 [フロントエンド IP 構成] を選択し、 [+ 追加] を選択します。 クラスター コア リソース内の WSFC 用に構成した IP アドレスを使用します。 この IP アドレスを静的として設定します。

  2. ロード バランサーで、 [正常性プローブ] を選択し、 [+ 追加] を選択します。

  3. WSFC クラスターのコア IP アドレスの正常性プローブを次のように設定します。

    設定 説明
    名前 Text WSFCEndPointProbe
    プロトコル TCP を選びます TCP
    [ポート] 未使用の任意のポート 58888
    間隔 プローブの試行の間隔 (秒単位) 5
    異常のしきい値 仮想マシンが異常と判断されるために必要な、連続したプローブ失敗の数 2
  4. [OK] を選択して、正常性プローブを設定します。

  5. 負荷分散規則を設定します。 [負荷分散規則] を選択し、 [+ 追加] を選択します。

  6. クラスターのコア IP アドレスの負荷分散規則を次のように設定します。

    設定 説明
    名前 Text WSFCEndPoint
    フロントエンド IP アドレス アドレスを選びます WSFC の IP アドレスの構成時に作成したアドレスを使用します。 これはリスナーの IP アドレスとは異なります
    プロトコル TCP を選びます TCP
    [ポート] クラスター IP アドレスのポートを使用します。 これは、リスナー プローブ ポートには使用されない使用可能なポートです。 58888
    バックエンド ポート Direct Server Return に Floating IP を設定するときは、このフィールドは使われません 58888
    プローブ プローブに指定した名前 WSFCEndPointProbe
    セッション永続化 ドロップダウン リスト なし
    アイドル タイムアウト TCP 接続を開いたままにしておく時間 (分) 4
    フローティング IP (ダイレクト サーバー リターン) Enabled

    警告

    Direct Server Return は作成の間に設定されます。 この値は変更しないでください。

  7. [OK] を選択して、負荷分散規則を設定します。

リスナーを構成する

次の手順は、フェールオーバー クラスター上の可用性グループ リスナーの構成です。

Note

このチュートリアルでは、1 つの ILB IP アドレスを持つ 1 つのリスナーを作成する方法を示します。 1 つまたは複数の IP アドレスを使用して 1 つまたは複数のリスナーを作成する方法については、Azure での可用性グループ リスナーとロード バランサーの作成に関するページを参照してください。

可用性グループ リスナーとは、SQL Server 可用性グループがリッスンする IP アドレスとネットワーク名のことです。 可用性グループ リスナーを作成するには、次の手順を実行します。

  1. クラスター ネットワーク リソースの名前を取得します。

    a. プライマリ レプリカのホストとなっている Azure 仮想マシンに RDP で接続します。

    b. フェールオーバー クラスター マネージャーを開きます。

    c. Networks ノードを選択し、クラスター ネットワーク名をメモします。 この名前は、PowerShell スクリプトの $ClusterNetworkName 変数に使用します。 次の図では、クラスター ネットワーク名は Cluster Network 1 です。

    Cluster Network Name

  2. クライアント アクセス ポイントを追加します。
    クライアント アクセス ポイントは、アプリケーションが可用性グループ内のデータベースに接続するために使用するネットワーク名です。 クライアント アクセス ポイントは、フェールオーバー クラスター マネージャーで作成します。

    a. クラスター名を展開して、 [ロール] をクリックします。

    b. [ロール] ウィンドウで、可用性グループ名を右クリックし、 [リソースの追加]>[クライアント アクセス ポイント] の順にクリックします。

    Screenshot that shows the Client Access Point menu option.

    c. [名前] ボックスで、この新しいリスナーの名前を指定します。 新しいリスナーの名前は、アプリケーションが SQL Server 可用性グループ内のデータベースへの接続に使用するネットワーク名です。

    d. [次へ] を 2 回クリックしてから [完了] をクリックし、リスナーの作成を完了します。 この時点では、リスナーまたはリソースをオンラインにしないでください。

  3. 可用性グループ クラスター ロールをオフラインにします。 [フェールオーバー クラスター マネージャー][ロール] で該当するロールを右クリックし、 [ロールの停止] を選択します。

  4. 可用性グループの IP リソースを構成します。

    a. [リソース] タブをクリックして、作成したクライアント アクセス ポイントを展開します。
    クライアント アクセス ポイントはオフラインになっています。

    Client Access Point

    b. IP リソースを右クリックし、[プロパティ] をクリックします。 この IP アドレス名はメモしておき、PowerShell スクリプトの $IPResourceName 変数に使用します。

    c. [IP アドレス][静的 IP アドレス] をクリックします。 静的 IP アドレスを、Azure Portal でロード バランサーのアドレス設定時に使用したものと同じアドレスに設定します。

    Screenshot that shows where you set the IP address.

  5. SQL Server 可用性グループ リソースがクライアント アクセス ポイントに依存するように設定します。

    a. フェールオーバー クラスター マネージャーで、 [ロール] 、可用性グループの順にクリックします。

    b. [その他のリソース] の下の [リソース] タブで可用性リソース グループを右クリックし、 [プロパティ] をクリックします。

    c. [依存関係] タブで、クライアント アクセス ポイント (リスナー) リソースの名前を追加します。

    Screenshot that shows where to add the name on the Dependencies tab.

    d. [OK] をクリックします。

  6. クライアント アクセス ポイント リソースが IP アドレスに依存するように設定します。

    a. フェールオーバー クラスター マネージャーで、 [ロール] 、可用性グループの順にクリックします。

    b. [リソース] タブで [サーバー名] の下にあるクライアント アクセスポイント リソースを右クリックし、 [プロパティ] をクリックします。

    Screenshot that shows the Properties menu option for the server's name.

    c. [依存関係] タブをクリックします。IP アドレスが依存関係の要素であることを確認します。 そうでない場合は、IP アドレスへの依存関係を設定します。 複数のリソースが一覧表示される場合は、IP アドレスに OR (AND ではなく) 依存関係があることを確認します。 [OK] をクリックします。

    IP Resource

    ヒント

    依存関係が正しく構成されていることを確認できます。 フェールオーバー クラスター マネージャーで [ロール] に移動します。次に、可用性グループを右クリックし、[他の操作] をクリックしてから、[依存関係レポートの表示] をクリックします。 依存関係が正しく構成されると、可用性グループはネットワーク名に依存し、ネットワーク名は IP アドレスに依存します。

  7. PowerShell でクラスターのパラメーターを設定します。

    a. いずれかの SQL Server インスタンスに次の PowerShell スクリプトをコピーします。 環境に合わせて変数を更新してください。

    • $ListenerILBIP は、Azure Load Balancer に対して作成した、可用性グループ リスナーの IP アドレスです。

    • $ListenerProbePort は、Azure Load Balancer に対して構成した、可用性グループ リスナーのポートです。

    $ClusterNetworkName = "<MyClusterNetworkName>" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name)
    $IPResourceName = "<IPResourceName>" # the IP Address resource name
    $ListenerILBIP = "<n.n.n.n>" # the IP Address of the Internal Load Balancer (ILB). This is the static IP address for the load balancer you configured in the Azure portal.
    [int]$ListenerProbePort = <nnnnn>
    
    Import-Module FailoverClusters
    
    Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ListenerILBIP";"ProbePort"=$ListenerProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
    

    b. いずれかのクラスター ノード上で PowerShell スクリプトを実行して、クラスター パラメーターを設定します。

    Note

    SQL Server インスタンスが別個のリージョンに存在する場合は、PowerShell スクリプトを 2 回実行する必要があります。 1 回目の実行では、1 番目のリージョンの $ListenerILBIP$ListenerProbePort を使用します。 2 回目の実行では、2 番目のリージョンの $ListenerILBIP$ListenerProbePort を使用します。 クラスター ネットワーク名とクラスター IP リソース名も、リージョンごとに異なります。

  8. 可用性グループ クラスター ロールをオンラインにします。 [フェールオーバー クラスター マネージャー][ロール] で該当するロールを右クリックし、 [ロールの起動] を選択します。

必要に応じて上記の手順を繰り返し、WSFC クラスター IP アドレスのクラスター パラメーターを設定します。

  1. WSFC クラスター IP アドレスの IP アドレス名を取得します。 [フェールオーバー クラスター マネージャー][クラスター コア リソース] で、 [サーバー名] を見つけます。

  2. [IP アドレス] を右クリックし、 [プロパティ] を選択します。

  3. IP アドレスの [名前] をコピーします。 たとえば Cluster IP Address です。

  4. PowerShell でクラスターのパラメーターを設定します。

    a. いずれかの SQL Server インスタンスに次の PowerShell スクリプトをコピーします。 環境に合わせて変数を更新してください。

    • $ClusterCoreIP は、Azure Load Balancer に対して作成した、WSFC コア クラスター リソースの IP アドレスです。 可用性グループ リスナーの IP アドレスとは異なります。

    • $ClusterProbePort は、Azure Load Balancer に対して構成した、WSFC 正常性プローブのポートです。 可用性グループ リスナーのプローブとは異なります。

    $ClusterNetworkName = "<MyClusterNetworkName>" # the cluster network name (Use Get-ClusterNetwork on Windows Server 2012 of higher to find the name)
    $IPResourceName = "<ClusterIPResourceName>" # the IP Address resource name
    $ClusterCoreIP = "<n.n.n.n>" # the IP Address of the Cluster IP resource. This is the static IP address for the load balancer you configured in the Azure portal.
    [int]$ClusterProbePort = <nnnnn> # The probe port from the WSFCEndPointprobe in the Azure portal. This port must be different from the probe port for the availability group listener probe port.
    
    Import-Module FailoverClusters
    
    Get-ClusterResource $IPResourceName | Set-ClusterParameter -Multiple @{"Address"="$ClusterCoreIP";"ProbePort"=$ClusterProbePort;"SubnetMask"="255.255.255.255";"Network"="$ClusterNetworkName";"EnableDhcp"=0}
    

    b. いずれかのクラスター ノード上で PowerShell スクリプトを実行して、クラスター パラメーターを設定します。

警告

可用性グループ リスナーの正常性プローブのポートは、クラスター コア IP アドレスの正常性プローブ ポートとは違っている必要があります。 これらの例では、リスナー ポートが 59999 で、クラスター コア IP アドレスの正常性プローブ ポートが 58888 です。 どちらのポートも、受信を許可するようにファイアウォール規則が設定されている必要があります。

リスナーのポートを設定する

SQL Server Management Studio で、リスナー ポートを設定します。

  1. SQL Server Management Studio を起動し、プライマリ レプリカに接続します。

  2. [AlwaysOn 高可用性]>[可用性グループ]>z [可用性グループ リスナー] の順に移動します。

  3. フェールオーバー クラスター マネージャーで作成したリスナー名が表示されます。 リスナー名を右クリックし、 [プロパティ] を選択します。

  4. [ポート] ボックスで、可用性グループ リスナーのポート番号を指定します。 既定値は 1433 です。 [OK] を選択します。

これで、SQL Server 可用性グループが Resource Manager モードの Azure 仮想マシンにデプロイされました。

リスナーへの接続をテストする

接続をテストするには、次の手順に従います。

  1. RDP を使用して、同じ仮想ネットワークに存在する、レプリカを所有していない SQL Server に接続します。 クラスター内の他の SQL Server を使うことができます。

  2. sqlcmd ユーティリティを使用して接続をテストします。 たとえば次のスクリプトは、Windows 認証を使用し、リスナー経由でプライマリ レプリカとの sqlcmd 接続を確立しています。

    sqlcmd -S <listenerName> -E
    

    リスナーが既定のポート (1433) 以外のポートを使用している場合は、そのポートを接続文字列で指定します。 たとえば、次の sqlcmd コマンドでは、ポート 1435 でリスナーに接続します。

    sqlcmd -S <listenerName>,1435 -E
    

SQLCMD 接続では、プライマリ レプリカをホストしている SQL Server インスタンスに対して自動的に接続されます。

ヒント

指定したポートは、両方の SQL Server のファイアウォールで必ず開放してください。 使用する TCP ポートに対する入力方向の規則が両方のサーバーに必要となります。 詳しくは、「ファイアウォール規則を追加または編集する」をご覧ください。

次のステップ

詳細については、以下をご覧ください。