Citrix ADC

Découverte de service à l’aide d’enregistrements SRV DNS

Un enregistrement SRV (enregistrement de service) est une spécification de données dans le système de noms de domaine qui définit l’emplacement, c’est-à-dire le nom d’hôte et le numéro de port des serveurs pour les services spécifiés. L’enregistrement définit également le poids et la priorité de chaque serveur.

Exemple d’enregistrement SRV :

_http._tcp.example.com. 100 IN SRV 10 60 5060 a.example.com.

Le tableau suivant décrit chaque élément d’un enregistrement SRV :

Exemple d'enregistrements de découverte SRV

Vous pouvez utiliser les enregistrements SRV DNS pour découvrir les points de terminaison du service. L’appliance Citrix ADC est configurée pour interroger périodiquement les serveurs DNS avec l’enregistrement SRV associé à un service. Lors de la réception de l’enregistrement SRV, chaque hôte cible publié dans l’enregistrement SRV est lié à un groupe de services associé au service. Chacune des liaisons hérite du port, de la priorité et du poids de l’enregistrement SRV. Pour chaque déploiement de service, l’utilisateur doit configurer l’appliance Citrix ADC une fois lors de sa mise en service, ce qui en fait un déploiement tactile unique pour les applications.

Important : le poids des membres du groupe de services appris dynamiquement ne peut pas être modifié à l’aide de l’interface de ligne de commande ou de l’interface graphique.

Cas d’utilisation : microservices d’équilibrage de charge

Les applications évoluent vers l’architecture microservice à partir d’architectures monolithiques. Le passage à l’architecture de microservices avec une solution d’échelle automatique du serveur back-end rend le déploiement d’applications plus dynamique. Pour prendre en charge un tel déploiement dynamique, les proxy ou ADC doivent être en mesure de détecter dynamiquement l’application ou les instances de service back-end et de les absorber dans la configuration du proxy. La découverte de service à l’aide de DNS SRV enregistre la fonctionnalité facilite la configuration de l’appliance Citrix ADC dans un tel scénario de déploiement dynamique. Les développeurs d’applications peuvent utiliser certaines des plates-formes d’orchestration pour déployer l’application. Les plates-formes d’orchestration lors de l’instanciation de conteneurs pendant le déploiement d’applications peuvent ne pas attribuer le port standard spécifique au protocole pour chacun de ces conteneurs. Dans de tels scénarios, la découverte des informations de port devient la clé de la configuration de l’appliance Citrix ADC. Les enregistrements SRV sont utiles dans un tel scénario. Les paramètres d’enregistrement SRV tels que la priorité et le poids peuvent être utilisés pour un meilleur équilibrage de charge des applications.

  • Le paramètre de priorité peut être utilisé pour dicter la priorité du pool de serveurs.
  • Le paramètre de poids peut être utilisé pour dicter la capacité des instances de service back-end et peut donc être utilisé pour l’équilibrage de charge pondérée.
  • Chaque fois qu’il y a une modification dans le pool de serveurs back-end, par exemple une instance back-end est supprimée du pool, l’instance n’est gracieusement supprimée qu’une fois toutes les connexions client existantes honorées.

Remarque :

  • Une découverte de service basée sur les enregistrements A/AAAA, toutes les adresses IP résolues ont le même poids car vous affectez le poids au domaine en cours de résolution.

  • Si la pondération dans la réponse SRV est supérieure à 100, les services ne sont pas créés.

Équilibrage de charge basé sur la priorité à l’aide d’enregistrements SRV

Vous pouvez utiliser les enregistrements SRV pour effectuer un équilibrage de charge basé sur la priorité. Le pool de serveurs basé sur la priorité peut être une alternative pour les serveurs virtuels de sauvegarde. Le fichier ns.conf nécessite une configuration minimale par rapport aux serveurs virtuels de sauvegarde.

Dans l’équilibrage de charge basé sur la priorité à l’aide d’enregistrements SRV, un numéro de priorité est attribué à chaque pool de serveurs. Le nombre le plus faible a la priorité la plus élevée. L’un des serveurs du pool de priorité la plus élevée est sélectionné pour l’équilibrage de charge en fonction de l’intégrité et de la disponibilité du serveur. Si tous les serveurs du pool de serveurs de priorité la plus élevée sont en panne, les serveurs qui ont la priorité la plus élevée sont sélectionnés pour l’équilibrage de charge. Toutefois, si les serveurs du pool de serveurs de priorité la plus élevée sont à nouveau activés, les serveurs sont de nouveau sélectionnés dans le pool de priorité la plus élevée.

Le passage d’un pool de serveurs prioritaires à un autre pool de serveurs se produit gracieusement en saignant les transactions client existantes. Par conséquent, les clients actuels ne voient aucune rupture dans l’accès à l’application.

Pour activer l’interrogation des enregistrements SRV à l’aide de l’interface de ligne de commande

Effectuez les tâches suivantes pour activer l’interrogation des enregistrements SRV :

  1. Créez un serveur en spécifiant le paramètre de type de requête comme SRV.

    À l’invite de commandes, tapez :

    add server <name> <domain> [-queryType <queryType>])
    <!--NeedCopy-->
    

    Exemple :

    add server web_serv example.com -queryType SRV
    <!--NeedCopy-->
    

    Remarque :

    • Par défaut, les requêtes IPv4 sont envoyées. Pour envoyer des requêtes IPv6, vous devez activer le domaine IPv6.
    • Le nom de domaine cible SRV ne doit pas dépasser 127 caractères.
  2. Créez un groupe de services avec le mode de mise à l’échelle automatique en tant que DNS.

    À l’invite de commandes, tapez :

    add serviceGroup <serviceGroupName> <serviceType> [-autoScale <autoScale>]
    <!--NeedCopy-->
    

    Exemple :

    add servicegroup svc_grp_1 http -autoscale dns
    <!--NeedCopy-->
    
  3. Liez le serveur créé à l’étape 1 au groupe de services en tant que membre.

    À l’invite de commandes, tapez :

    bind serviceGroup <serviceGroupName> <serverName>
    <!--NeedCopy-->
    

    Exemple :

    bind servicegroup svc_grp_1 web_serv
    <!--NeedCopy-->
    

Remarque :

  • Lorsque vous liez des serveurs à des membres du groupe de services, vous n’avez pas à entrer le numéro de port pour les types de serveurs SRV. Si vous spécifiez un numéro de port pour le type de serveur SRV, un message d’erreur s’affiche.

  • Vous pouvez éventuellement spécifier un serveur de noms et une valeur TTL tout en liant un serveur au groupe de services.

Pour activer l’interrogation des enregistrements SRV à l’aide de l’interface graphique

Créer un serveur

  1. Accédez à Gestion du trafic > Équilibrage de charge > Serveurs, puis cliquez sur Ajouter .

    Créer un serveur

  2. Dans la page Créer un serveur, sélectionnez nom de domaine.

  3. Entrez les détails de tous les paramètres requis.

  4. Dans Type de requête, sélectionnez SRV.

  5. Cliquez sur Créer.

Créer un groupe de services avec le mode de mise à l’échelle automatique en tant que DNS

  1. Accédez à Gestion du trafic > Équilibrage de charge > Groupes de services.

  2. Dans la page Groupe de services d’équilibrage de charge, entrez les détails de tous les paramètres requis.

  3. En mode Mise à l’échelle automatique, sélectionnez DNS.

    Sélectionner le mode en tant que DNS

  4. Cliquez sur OK.

Lier le serveur au membre du groupe de services

  1. Accédez à Gestion du trafic > Équilibrage de charge > Groupes de services.

  2. Dans la page Groupes de services, sélectionnez le groupe de services que vous avez créé et cliquez sur Modifier.

  3. Dans la page Groupes de services d’équilibrage de charge, cliquez sur Membres du groupe de services.

  4. Dans la page Liaison de membres du groupe de services, sélectionnez le serveur que vous avez créé et cliquez sur Fermer .

    Serveur de liaison

Remarque :

  • Lors de la liaison, vous n’avez pas à entrer le numéro de port pour les types de serveur SRV. Si vous entrez un numéro de port pour le type de serveur SRV, un message d’erreur s’affiche.

  • Vous pouvez éventuellement spécifier un serveur de noms et une valeur TTL tout en liant un serveur au groupe de services.

Remplacer les valeurs TTL

L’appliance Citrix ADC est configurée pour interroger périodiquement le serveur DNS pour toute mise à jour de l’enregistrement SRV associé à l’application au démarrage de l’application. Par défaut, la périodicité de cette requête dépend de la TTL publiée dans l’enregistrement SRV. Dans les applications microservice ou cloud world, les déploiements changent de manière plus dynamique. Par conséquent, les proxys doivent être plus rapides dans l’absorption des modifications apportées au déploiement des applications. Par conséquent, il est recommandé aux utilisateurs de définir explicitement le paramètre TTL de service basé sur le domaine sur une valeur inférieure à la TTL d’enregistrement SRV et optimale pour votre déploiement. Vous pouvez remplacer la valeur TTL par deux méthodes :

  • Lors de la liaison d’un membre au groupe de services
  • Définition de la valeur TTL globalement à l’aide de la commande set lb parameter.

Si la valeur TTL est configurée à la fois lors de la liaison du membre du groupe de services et également globalement, la valeur TTL spécifiée lors de la liaison du membre du groupe de services est prioritaire. Si la valeur TTL n’est pas spécifiée lors de la liaison d’un membre d’un groupe de services ou au niveau global, l’intervalle de surveillance DBS est dérivé de la valeur TTL dans la réponse DNS.

Remplacer les valeurs TTL à l’aide de l’interface de ligne de commande

  • Pour écraser la valeur TTL lors de la liaison, à l’invite de commandes, tapez :

     bind serviceGroup <serviceGroupName> (<serverName> [-dbsTTL <secs>])
     <!--NeedCopy-->
    

    Exemple :

     bind servicegroup svc_grp_1 web_serv -dbsTTL 10
     <!--NeedCopy-->
    
  • Pour écraser globalement la valeur TTL, à l’invite de commandes, tapez :

     set lb parameter [-dbsTTL <secs>]
     <!--NeedCopy-->
    

    Exemple :

     set lb parameter -dbsTTL 15
     <!--NeedCopy-->
    

Remplacer les valeurs TTL à l’aide de l’interface graphique

Pour remplacer la valeur TTL lors de la liaison :

  1. Accédez à Gestion du trafic > Équilibrage de charge > Groupes de services.

  2. Dans la page Groupes de services, sélectionnez le groupe de services que vous avez créé et cliquez sur Modifier.

  3. Dans la page Groupes de services d’équilibrage de charge, cliquez sur Membres du groupe de services.

  4. Dans la page Liaison de membres du groupe de services, sélectionnez le serveur que vous avez créé et cliquez sur Modifier.

  5. Dans TTL de service basé sur le domaine, entrez la valeur TTL.

Pour remplacer la valeur TTL au niveau global :

  1. Accédez à Gestion du trafic > Équilibrage de charge > Modifier les paramètres d’équilibrage de charge.

  2. Dans TTL de service basé sur le domaine, entrez la valeur TTL.

Remarque : Si la valeur TTL du serveur basé sur un domaine est définie sur 0, la valeur TTL du paquet de données est utilisée.

Spécification de différents serveurs de noms pour les liaisons de groupes de services et de noms de domaine

Vous pouvez configurer différents serveurs de noms pour différents noms de domaine dans un groupe spécifique. La définition du paramètre NameServer est facultative lors de la liaison d’un serveur DBS au groupe de services. Lorsqu’un serveur de noms n’est pas spécifié lors de la liaison d’un membre au groupe de services, le serveur de noms configuré globalement est pris en compte.

Spécification de serveurs de noms lors de la liaison d’un serveur à des groupes de services à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez :

bind serviceGroup <serviceGroupName> (<serverName> [-nameServer <ip_addr>] [-dbsTTL <secs>])
<!--NeedCopy-->

Exemple :

bind servicegroup svc_grp_1 web_serv  -ns.nameserver.com 10.102.27.155 -dbsTTL 10
<!--NeedCopy-->

Spécification de serveurs de noms lors de la liaison d’un serveur à des groupes de services à l’aide de l’interface graphique graphique

  1. Accédez à Gestion du trafic > Équilibrage de charge > Groupes de services.

  2. Dans la page Groupes de services, sélectionnez le groupe de services que vous avez créé et cliquez sur Modifier.

  3. Dans la page Groupes de services d’équilibrage de charge, cliquez sur Membres du groupe de services.

  4. Dans la page Liaison de membres du groupe de services, sélectionnez le serveur que vous avez créé et cliquez sur Modifier.

  5. Dans Name Server, spécifiez le nom du serveur de noms auquel la requête du domaine lié doit être envoyée.

Découverte de service à l’aide d’enregistrements SRV DNS