ADC

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

Un enregistrement SRV (enregistrement de service) est une spécification des données du 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 des services spécifiés. L’enregistrement définit également le poids et la priorité de chaque serveur.

Exemple d’enregistrement SRV :

_http._tcp.exemple.com. 100 IN SRV 10 60 5060 a.exemple.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. À la réception de l’enregistrement SRV, chacun des hôtes cibles publiés 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 son lancement, ce qui en fait un déploiement d’une seule touche 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 une architecture de microservices à 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 fonctionnalité de découverte de services à l’aide des enregistrements DNS SRV 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 Priority 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 du service principal et peut donc être utilisé pour l’équilibrage de charge pondéré.
  • Chaque fois que le pool de serveurs principaux est modifié, par exemple qu’une instance principale est supprimée du pool, l’instance n’est supprimée gracieusement qu’une fois que toutes les connexions client existantes ont été honorées.

Remarque :

  • Lors d’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 attribuez le poids au domaine en cours de résolution.

  • Si le poids de la réponse SRV est supérieur à 100, aucun service n’est créé.

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

Vous pouvez utiliser les enregistrements SRV pour effectuer un équilibrage de charge basé sur les priorités. Le pool de serveurs basé sur les priorités peut être une alternative aux 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 ayant la priorité la plus élevée sont hors service, les serveurs ayant 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 de nouveau opérationnels, ils 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 fait facilement en effacant les transactions client existantes. Par conséquent, les clients actuels ne constatent aucune rupture dans l’accès à l’application.

Pour activer la recherche d’enregistrements SRV à l’aide de l’interface de ligne de commande

Effectuez les tâches suivantes pour activer la recherche d’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 autoscale comme 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 à saisir 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 lors de la liaison d’un serveur au groupe de services.

Pour activer la recherche d’enregistrements SRV à l’aide de l’interface graphique

Création d’un serveur

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

  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éez un groupe de services avec le mode autoscale comme DNS

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

  2. Sur 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.

  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 .

Remarque :

  • Lors de la liaison, il n’est pas nécessaire de saisir le numéro de port pour les types de serveurs 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 lors de la liaison d’un serveur au groupe de services.

Remplacement des 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 durée de vie publiée dans l’enregistrement SRV. Dans les applications du monde des microservices ou du cloud, les déploiements changent de manière plus dynamique. Par conséquent, les proxys doivent absorber plus rapidement les modifications apportées au déploiement des applications. Par conséquent, il est recommandé aux utilisateurs de définir explicitement le paramètre TTL du service basé sur le domaine sur une valeur inférieure à la durée de vie de l’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.

Remplacement des valeurs TTL à l’aide de la CLI

  • Pour remplacer 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 remplacer la valeur TTL globalement, à l’invite de commandes, tapez :

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

    Exemple :

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

Remplacement des 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 la zone Durée de vie du 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 la zone Durée de vie du 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’aucun serveur de noms n’est 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

À 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

  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 services à l’aide d’enregistrements DNS SRV