Service Broker と Always On 可用性グループ (SQL Server)
適用対象: SQL Server
このトピックでは、 Always On 可用性グループ で Service Broker を SQL Serverと共に使用できるように構成する方法について説明します。
他の Service Broker インスタンスからリモート メッセージを受信する
可用性グループにリスナーが存在している。
詳細については、可用性グループのリスナーの作成および構成 (SQL Server) に関するページを参照してください。
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" になります。エンドポイントに対する CONNECT 権限を許可する。
Service Broker エンドポイントに対する CONNECT 権限を PUBLIC またはログインに許可します。
次の例では、
broker_endpoint
という名前の Service Broker エンドポイントに対する接続を PUBLIC に許可します。GRANT CONNECT ON ENDPOINT::[broker_endpoint] TO [PUBLIC]
詳細については、「GRANT (Transact-SQL)」を参照してください。
msdb に AutoCreatedLocal ルートまたは特定のサービスへのルートが含まれている。
Note
msdbを含む各ユーザー データベースには、既定で AutoCreatedLocalというルートが含まれています。 このルートは、どのサービス名および任意のブローカー インスタンスにも適用でき、現在のインスタンス内でメッセージを配信するように指定します。 AutoCreatedLocal の優先度は、リモート インスタンスと通信する特定のサービスを明示的に指定したルートよりも低くなります。
ルートの作成の詳細については、(SQL Server 2008 R2 (10.50.x) バージョンのオンライン ブックの)「Service Broker のルーティングの例」および「CREATE ROUTE (Transact-SQL)」を参照してください。
可用性グループのリモート サービスにメッセージを送信するための要件
対象サービスへのルートを作成する。
次のようにルートを構成します。
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)」を参照してください。
msdb に AutoCreatedLocal ルートまたは特定のサービスへのルートが含まれている。 (詳細については、このトピックの前の「 可用性グループのサービスでリモート メッセージを受信するための要件」を参照してください)。
Related Tasks
参照
Always On 可用性グループの概要 (SQL Server)
可用性グループ リスナー、クライアント接続、およびアプリケーションのフェールオーバー (SQL Server)
SQL Server Service Broker (SQL Server Service Broker)