Citrix ADC

Configurez un ensemble de membres de groupe de services souhaité pour un groupe de services dans un appel d’API NITRO

La prise en charge est ajoutée pour configurer un ensemble souhaité de membres de groupe de services pour un groupe de services dans un appel d’API NITRO. Une nouvelle API, l’API d’état souhaité, est ajoutée pour prendre en charge cette configuration. À l’aide de l’API État souhaité, vous pouvez :

  • Fournissez une liste des membres du groupe de services dans une seule demande PUT sur la ressource « servicegroup_servicegroupmemberlist_binding ».
  • Indiquez leur poids et leur état (facultatif) dans cette demande PUT.
  • Synchronisez efficacement la configuration de l’appliance avec les modifications de déploiement autour des serveurs d’applications.

L’appliance Citrix ADC compare le jeu de membres souhaité demandé avec le jeu de membres configuré. Ensuite, il lie automatiquement les nouveaux membres et délie les membres qui ne sont pas présents dans la demande.

Remarque :

  • Cette fonctionnalité est prise en charge uniquement pour les groupes de services de type API.
  • Vous ne pouvez lier des services basés sur des adresses IP qu’à l’aide de l’API d’état souhaité, les services basés sur les noms de domaine ne sont
  • Auparavant, un seul membre du groupe de services peut être lié dans un appel NITRO.

Important

L’API d’état souhaitée pour l’adhésion à ServiceGroup est prise en charge dans le déploiement du cluster Citrix ADC.

Cas d’utilisation : Synchroniser les modifications de déploiement apportées à l’appliance Citrix ADC dans les déploiements à grande échelle, tels que Kubernetes

Dans les déploiements à grande échelle et hautement dynamiques (par exemple Kubernetes), le défi consiste à maintenir la configuration de l’appliance à jour avec le taux de changement des déploiements afin de répondre avec précision au trafic applicatif. Dans de tels déploiements, les contrôleurs (Ingress ou E-W Controller) sont responsables de la mise à jour de la configuration de ADC. Chaque fois que des modifications sont apportées au déploiement, kube-api server envoie l’ensemble effectif de points de terminaison via l’ « événement Endpoints » au contrôleur. Le Controller utilise l’approche Read-Delta-Modify où il effectue les opérations suivantes :

  • Récupère l’ensemble de points de terminaison actuellement configuré (jeu de membres de groupe de services d’un groupe de services) pour le service à partir de l’appliance ADC.
  • Compare l’ensemble de points de terminaison configuré avec celui de l’événement reçu.
  • Lie les nouveaux points de terminaison (membres du groupe de services) ou dissocie les points de terminaison supprimés.

Étant donné que le taux de modification et la taille des services sont élevés dans cet environnement, cette méthode de configuration n’est pas efficace et peut retarder les mises à jour de configuration.

L’API d’état désiré résout le problème en acceptant le jeu de membres prévu pour un groupe de services dans une seule API, et met à jour efficacement la configuration.

Créer un groupe de services de type API à l’aide de l’interface de ligne de commande

À l’invite de commandes, tapez ;

add serviceGroup <serviceGroupName>@ <serviceType> [-autoScale <autoScale>]

Exemple :

add serviceGroup svg1 HTTP -autoScale API

Vous pouvez configurer les paramètres autoDisablegraceful, autoDisabledelay et autoScale à l’aide de la commande add serviceGroup ou set serviceGroup.

add serviceGroup <serviceGroupName>@ <serviceType> [-autoScale <autoScale>] [-autoDisablegraceful ( YES | NO)] [-autoDisabledelay <secs>]

add serviceGroup <serviceGroupName>@ <serviceType> [-autoScale (API |CLOUD | DISABLED| DNS |POLICY)]

set serviceGroup <serviceGroupName [-autoDisablegraceful ( YES | NO)] [-autoDisabledelay <secs>]

set serviceGroup <serviceGroupName [-autoScale (API |CLOUD | DISABLED| DNS |POLICY)]

Exemple :

add serviceGroup svg1 HTTP autoDisablegraceful YES -autoDisabledelay 100

add serviceGroup svg1 HTTP -autoScale API

set serviceGroup svg1 -autoDisablegraceful  YES -autoDisabledelay 100

set serviceGroup svg1 -autoScale API

Arguments

autoDisablegraceful

Indique l’arrêt normal du service. Si cette option est activée, l’appliance attend que toutes les connexions en suspens à ce service soient fermées avant de supprimer le service. Pour les clients qui ont déjà une session persistante sur le système, de nouvelles connexions ou demandes continuent d’être envoyées à ce service. Le membre du service est supprimé uniquement s’il n’y a aucune connexion en attente. Valeur par défaut : NON

autoDisabledelay

Indique le temps alloué (en secondes) pour un arrêt progressif. Au cours de cette période, de nouvelles connexions ou demandes continuent d’être envoyées à ce service pour les clients qui ont déjà une session persistante sur le système. Les connexions ou les demandes de nouveaux clients qui n’ont pas de session de persistance sur le système ne sont pas envoyées au service. Au lieu de cela, ils sont équilibrés en charge entre les autres services disponibles. Une fois le délai expiré, le membre du service est supprimé.

API Autoscale

L’argument API Autoscale permet d’utiliser l’API État souhaité pour lier le jeu de membres à un groupe de services prévu. Vous pouvez définir le groupe de services de type non-autoscale au type Autoscale de l’API d’état souhaité, si toutes les conditions fournies correspondent.

L’API d’état souhaité vérifie si l’adresse IP du membre du groupe de services est associée à un serveur existant. Si l’adresse IP correspond à un serveur existant, l’API réutilise l’adresse IP et le nom du serveur existant. Si l’adresse IP ne correspond à aucun serveur existant, l’API crée un serveur et attribue l’adresse IP elle-même comme nom de serveur.

Exemple :

Considérez un serveur dont l’adresse IP est 2.2.2.2 et dont le nom est myserver et qui existe dans une appliance Citrix ADC. À l’aide de l’API d’état souhaitée, vous liez un ensemble de membres du groupe de services dont l’adresse IP est comprise entre 2.2.2.1 et 2.2.2.3.

Comme l’adresse IP 2.2.2.2 est associée à un serveur existant, l’API réutilise l’adresse IP et le nom (2.2.2.2 et monserveur). Comme il n’existe aucun serveur avec des adresses IP 2.2.2.1, 2.2.2.3, l’API crée des serveurs avec ces adresses IP. L’API attribue l’adresse IP elle-même comme nom du serveur.

Si l’adresse IP fournie dans la commande d’état souhaitée entre en conflit avec d’autres entités Citrix ADC telles que le serveur virtuel CS, un conflit se produit. Un message d’erreur contenant la raison de l’échec s’affiche. L’adresse IP du premier membre du groupe de services parmi la liste des membres ayant échoué est affichée dans le message d’erreur.

Exemple :

Prenons l’exemple d’un serveur dont l’adresse IP est 2.2.2.8 et qui est utilisé comme serveur LB. À l’aide de l’API d’état souhaitée, vous essayez de lier un ensemble de membres du groupe de services dont l’adresse IP est comprise entre 2.2.2.2 et 2.2.2.11.

Comme 2.2.2.8 est déjà utilisé pour le service LB, un conflit se produit. Le message d’erreur suivant s’affiche et contient la raison de l’échec et les liaisons de membres ayant échoué :

{ "errorcode": 304, "message": "Address already in use", "severity": "ERROR", "servicegroup_servicegroupmemberlist_binding": { "servicegroupname": "sg1", "failedmembers": [ { "ip": "2.2.2.8", "port": 80 }, { "ip": "2.2.2.9", "port": 80 } ] } }
<!--NeedCopy-->

Le code d’erreur 304 affiche le premier membre du groupe de services parmi la liste des membres défaillants, qui est 2.2.2.8.

La commande set serviceGroup Autoscale peut échouer si les liaisons de membres existantes répondent à l’une des conditions suivantes :

  • Si le serveur lié au groupe de services est un serveur de noms ou un serveur basé sur un domaine.
  • Si le nom du serveur de bouclage est autre que 127.0.0.1 ou 0000:0000:0000:0000:0000:0000:0000:0001.
  • Si vous choisissez différents types de Autoscale (Cloud, API, DNS et stratégie) dans une commande set ServiceGroup et ajoutez la commande ServiceGroup.

Important :

  • Les paramètres AutoDisableGraceful et AutoDisableDelay s’appliquent uniquement aux groupes de services de type Autoscale « API » et « CLOUD ».
  • Si les paramètres AutoDisableGraceful ou AutoDisableDelay ne sont pas configurés, les membres du service sont immédiatement supprimés.

Dissocier un membre d’un groupe de services avec élégance

Si l’un des membres du groupe de services ne figure pas dans la liste des états souhaités, ces membres sont indépendants de manière gracieuse en fonction de la configuration du paramètre autoDisablegraceful ou autoDisabledelay.

  • Si l’un de ces paramètres est défini, le membre du groupe de services n’est pas lié correctement.
  • Si aucun de ces paramètres n’est défini, le membre du groupe de services est immédiatement indépendant.

Remarque :

  • Les membres du groupe de services identifiés pour une déliaison gracieuse sont affichés uniquement lorsque la commande show service group est exécutée.
  • Vous ne pouvez pas effectuer d’opération (définie, non définie, par exemple) sur le membre du groupe de services identifié pour la déliaison gracieuse.

La figure suivante montre un exemple de commande show service group.

Exemple de commande show service group

Créer un groupe de services de type API à l’aide de l’interface graphique

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

  2. En mode AutoScale, sélectionnez API.

Configurer un arrêt progressif ou un délai pour un groupe de services de type API à l’aide de l’interface graphique

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

    Paramètres de base des groupes de services

  2. En mode AutoScale, sélectionnez API.

  3. Dans Auto Disable Graceful, sélectionnez OUI.

  4. Dans Délai de désactivation automatique, saisissez le temps d’attente pour un arrêt progressif.

Remarque : Les champs Désactivation automatiqueou Délai d’affichage automatiquesont activés uniquement si vous sélectionnezAPIouCLOUDenmode AutoScale.