Service Broker と Always On 可用性グループ (SQL Server)

適用対象: SQL Server

このトピックでは、 Always On 可用性グループ で Service Broker を SQL Serverと共に使用できるように構成する方法について説明します。

他の Service Broker インスタンスからリモート メッセージを受信する

  1. 可用性グループにリスナーが存在している。

    詳細については、可用性グループのリスナーの作成および構成 (SQL Server) に関するページを参照してください。

  2. Service Broker エンドポイントが存在し、正しく構成されている。

    可用性グループの可用性レプリカをホストするすべての SQL Server のインスタンスで、次のように Service Broker エンドポイントを構成します。

    • LISTENER_IP を "ALL" に設定します。 この設定により、可用性グループ リスナーにバインドされている有効な IP アドレスに接続できるようになります。

    • すべてのホスト サーバー インスタンスで Service Broker の PORT を同じポート番号に設定します。

      ヒント

      特定のサーバー インスタンスの Service Broker エンドポイントのポート番号を確認するには、 sys.tcp_endpoints カタログ ビューの port 列に対してクエリを実行します ( type_desc = 'SERVICE_BROKER')。

    次の例では、既定の Service Broker ポート (4022) を使用し、有効なすべての IP アドレスをリッスンする Windows 認証済みの Service Broker エンドポイントを作成します。

    CREATE ENDPOINT [SSBEndpoint]  
        STATE = STARTED  
        AS TCP  (LISTENER_PORT = 4022, LISTENER_IP = ALL )  
        FOR SERVICE_BROKER (AUTHENTICATION = WINDOWS)  
    

    詳細については、「 CREATE ENDPOINT (Transact-SQL)」を参照してください。

    Note

    SQL Server Service Broker はマルチサブネット対応ではありません。 RegisterAllProvidersIP を 0 に設定し、静的 IP アドレスを使用するために DNS の必須アクセス許可がクラスターに与えられていることを確認します。 詳細については、可用性グループのリスナーの構成に関するページを参照してください。 無効になっている IP アドレスを使用しようとして Service Broker がメッセージを遅らせることがあります。そのとき、ステータスは "CONVERSING" になります。

  3. エンドポイントに対する CONNECT 権限を許可する。

    Service Broker エンドポイントに対する CONNECT 権限を PUBLIC またはログインに許可します。

    次の例では、 broker_endpoint という名前の Service Broker エンドポイントに対する接続を PUBLIC に許可します。

    GRANT CONNECT ON ENDPOINT::[broker_endpoint] TO [PUBLIC]  
    

    詳細については、「GRANT (Transact-SQL)」を参照してください。

  4. msdb に AutoCreatedLocal ルートまたは特定のサービスへのルートが含まれている。

    Note

    msdbを含む各ユーザー データベースには、既定で AutoCreatedLocalというルートが含まれています。 このルートは、どのサービス名および任意のブローカー インスタンスにも適用でき、現在のインスタンス内でメッセージを配信するように指定します。 AutoCreatedLocal の優先度は、リモート インスタンスと通信する特定のサービスを明示的に指定したルートよりも低くなります。

    ルートの作成の詳細については、(SQL Server 2008 R2 (10.50.x) バージョンのオンライン ブックの)「Service Broker のルーティングの例」および「CREATE ROUTE (Transact-SQL)」を参照してください。

可用性グループのリモート サービスにメッセージを送信するための要件

  1. 対象サービスへのルートを作成する。

    次のようにルートを構成します。

    • ADDRESS を、サービス データベースをホストする可用性グループのリスナーの IP アドレスに設定します。

    • PORT を、各リモート SQL Server インスタンスの Service Broker エンドポイントに指定したポートに設定します。

    次の例では、 RouteToTargetService サービスに対する ISBNLookupRequestService という名前のルートを作成します。 ルートの対象は、ポート 4022 を使用している可用性グループ リスナー MyAgListenerです。

    CREATE ROUTE [RouteToTargetService] WITH   
    SERVICE_NAME = 'ISBNLookupRequestService',   
    ADDRESS = 'TCP://MyAgListener:4022';  
    
    

    詳細については、「CREATE ROUTE (Transact-SQL)」を参照してください。

  2. msdb に AutoCreatedLocal ルートまたは特定のサービスへのルートが含まれている。 (詳細については、このトピックの前の「 可用性グループのサービスでリモート メッセージを受信するための要件」を参照してください)。

Related Tasks

参照

Always On 可用性グループの概要 (SQL Server)
可用性グループ リスナー、クライアント接続、およびアプリケーションのフェールオーバー (SQL Server)
SQL Server Service Broker (SQL Server Service Broker)