Service Broker avec les groupes de disponibilité Always On (SQL Server)

S’applique à :SQL Server

Cette rubrique contient des informations sur la configuration de Service Broker afin d'utiliser Groupes de disponibilité Always On dans SQL Server.

Recevoir des messages distants à partir d’autres instances Service Broker

  1. Assurez-vous que le groupe de disponibilité possède un écouteur.

    Pour plus d’informations, consultez Créer ou configurer un écouteur de groupe de disponibilité (SQL Server).

  2. Vérifiez que le point de terminaison Service Broker existe et est configuré correctement.

    Sur chaque instance de SQL Server qui héberge un réplica de disponibilité pour le groupe de disponibilité, configurez le point de terminaison Service Broker, comme suit :

    • Définissez LISTENER_IP sur « ALL ». Ce paramètre permet les connexions à une adresse IP valide liée à l'écouteur du groupe de disponibilité.

    • Définissez le PORT de Service Broker sur le même numéro de port pour toutes les instances de serveur hôte.

      Conseil

      Pour afficher le numéro de port du point de terminaison Service Broker sur une instance de serveur donnée, interrogez la colonne port de l’affichage catalogue sys.tcp_endpoints , où type_desc = 'SERVICE_BROKER'.

    L'exemple suivant crée un point de terminaison Service Broker authentifié par Windows qui utilise le port par défaut de Service Broker (4022) et écoute toutes les adresses IP valides.

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

    Pour plus d’informations, consultez CREATE ENDPOINT (Transact-SQL).

    Notes

    SQL Server Service Broker ne peut pas prendre en charge plusieurs sous-réseaux. Configurez RegisterAllProvidersIP sur 0, puis vérifiez que le cluster dispose des autorisations nécessaires dans le DNS pour utiliser des adresses IP statiques. Pour plus d’informations, consultez Configurer un écouteur de groupe de disponibilité. Service Broker peut retarder le message avec l’état « CONVERSING » en tentant d’utiliser une adresse IP désactivée.

  3. Accordez l'autorisation CONNECT sur le point de terminaison.

    Accordez l'autorisation CONNECT sur le point de terminaison Service Broker sur PUBLIC ou sur une connexion.

    L'exemple suivant accorde la connexion sur un point de terminaison Service Broker nommé broker_endpoint sur PUBLIC.

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

    Pour plus d’informations, consultez GRANT (Transact-SQL).

  4. Vérifiez que msdb contient un itinéraire AutoCreatedLocal ou un itinéraire vers le service spécifique.

    Notes

    Chaque base de données utilisateur qui englobe msdbcontient par défaut l'itinéraire AutoCreatedLocal. Cet itinéraire, qui correspond à tous les noms de services et instances de broker, spécifie que le message doit être remis dans l'instance active. AutoCreatedLocal a une priorité plus faible que les itinéraires qui spécifient explicitement un service spécifique qui communique avec une instance distante.

    Pour plus d’informations sur la création des routes, consultez Exemples de routage Service Broker (dans la version SQL Server 2008 R2 (10.50.x) de la documentation en ligne) et CREATE ROUTE (Transact-SQL).

Spécifications pour l'envoi de messages à un service distant dans un groupe de disponibilité

  1. Créez un itinéraire vers le service cible.

    Configurez l'itinéraire comme suit :

    • Définissez ADDRESS sur l'adresse IP de l'écouteur du groupe de disponibilité qui héberge la base de données de service.

    • Définissez PORT sur le port que vous avez spécifié dans le point de terminaison Service Broker de chacune des instances distantes de SQL Server.

    L'exemple suivant crée un itinéraire nommé RouteToTargetService pour le service ISBNLookupRequestService . L'itinéraire cible l'écouteur du groupe de disponibilité, MyAgListener, qui utilise le port 4022.

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

    Pour plus d’informations, consultez CREATE ROUTE (Transact-SQL).

  2. Vérifiez que msdb contient un itinéraire AutoCreatedLocal ou un itinéraire vers le service spécifique. (Pour plus d’informations, consultez Spécifications pour qu’un service dans un groupe de disponibilité reçoive les messages distants, plus haut dans cette rubrique.)

Tâches associées

Voir aussi

Vue d’ensemble des groupes de disponibilité Always On (SQL Server)
Écouteurs de groupe de disponibilité, connectivité client et basculement d’application (SQL Server)
SQL Server Service Broker