Équilibrage de charge sur les serveurs de backend

<ph type="x-smartling-placeholder"></ph> Vous consultez la documentation Apigee Edge.
Accédez à la page Documentation sur Apigee X.
En savoir plus

Apigee Edge améliore la disponibilité de votre API en offrant une compatibilité intégrée avec la charge l'équilibrage de charge et le basculement sur plusieurs instances de serveur backend.

Les configurations TargetServer dissocient des URL de point de terminaison concrètes de TargetEndpoint de configuration. Chaque TargetServer est référencé par son nom dans un TargetEndpoint. HTTPConnection Au lieu de définir une URL concrète dans la configuration, vous pouvez en configurer une un ou plusieurs TargetServers nommés, comme décrit dans la section TargetEndpoint :

Une définition TargetServer se compose d'un nom, d'un hôte et d'un port, avec un élément supplémentaire pour indiquer si TargetServer est activé ou désactivé.

Vidéos

Regardez les vidéos suivantes pour en savoir plus sur le routage des API et l'équilibrage de charge à l'aide de serveurs cibles.

Vidéo Description
Équilibrage de charge à l'aide de serveurs cibles Équilibrer la charge des API sur plusieurs serveurs cibles.
Routage d'une API basé sur l'environnement à l'aide de serveurs cibles Routage d'une API vers un serveur cible différent en fonction de l'environnement
Les API Équilibrage de charge à l'aide de serveurs cibles (Edge classique) Acheminer une API vers un autre serveur cible en fonction de l'environnement et de l'équilibrage de charge votre API sur les serveurs cibles dans l'interface utilisateur Classic Edge.

Exemple de configuration TargetServer

Le code suivant définit un serveur cible:

<TargetServer  name="target1">
  <Host>1.mybackendservice.com</Host>
  <Port>80</Port>
  <IsEnabled>true</IsEnabled>
</TargetServer >

Éléments de configuration du serveur cible

Le tableau suivant décrit les éléments utilisés pour créer et configurer un serveur cible:

Nom Description Par défaut Obligatoire ?
name Nom de la configuration TargetServer, qui doit être unique dans le environnement. Le nom TargetServer ne peut contenir que des caractères alphanumériques. N/A Oui
Host

URL de l'hôte du service de backend (sans le protocole).

N/A Oui
Port Port sur lequel le service de backend écoute N/A Oui
IsEnabled Valeur booléenne indiquant si la configuration de TargetServer est activée ou désactivée. Cela vous permet d'arrêter la rotation des TargetServers sans modifier le proxy de l'API configuration. Une utilisation courante consiste à écrire une application ou un script qui active ou désactive TargetServers automatiquement basés sur les exigences de capacité prévues, les calendriers de maintenance etc. true Oui

Gérer les serveurs cibles à l'aide de l'interface utilisateur

Gérez les serveurs cibles, comme décrit ci-dessous.

Edge

Pour gérer les serveurs cibles à l'aide de l'interface utilisateur Edge:

  1. Connectez-vous à apigee.com/edge.
  2. Sélectionnez Admin > Environnements > Target Servers (Serveurs cibles) dans la barre de navigation de gauche.
  3. Sélectionnez l'environnement souhaité, par exemple test ou prod.
  4. Pour créer un serveur cible: <ph type="x-smartling-placeholder">
      </ph>
    1. Cliquez sur + Serveur cible.
    2. Saisissez un nom, un hôte et un port pour le serveur cible.

      Exemple :

      • Nom:target1
      • Hôte:1.mybackendservice.com
      • Port:80
    3. Sélectionnez SSL, si nécessaire.
    4. Sélectionnez Activé pour activer le serveur cible.
    5. Cliquez sur Ajouter.
  5. Pour modifier le serveur cible: <ph type="x-smartling-placeholder">
      </ph>
    1. Placez votre curseur sur le serveur cible que vous souhaitez modifier pour afficher le menu d'actions.
    2. Cliquez sur .
    3. Modifiez les valeurs du serveur de destination.
    4. Cliquez sur Mettre à jour.
  6. Pour supprimer le serveur cible: <ph type="x-smartling-placeholder">
      </ph>
    1. Placez votre curseur sur le serveur cible que vous souhaitez supprimer pour afficher le menu d'actions.
    2. Cliquez sur .
    3. Cliquez sur Supprimer pour confirmer l'opération.

Classic Edge (cloud privé)

Pour accéder à l'assistant de création de proxy à l'aide de l'interface utilisateur Classic Edge:

  1. Connectez-vous à http://ms-ip:9000, où ms-ip est le Adresse IP ou nom DNS du nœud du serveur de gestion.
  2. Sélectionnez API > Configuration de l'environnement > Target Servers (Serveurs cibles) dans la barre de navigation de gauche.
  3. Sélectionnez l'environnement souhaité, par exemple test ou prod.
  4. Pour créer un serveur cible: <ph type="x-smartling-placeholder">
      </ph>
    1. Cliquez sur Modifier.
    2. Cliquez sur + Serveur cible.
    3. Saisissez un nom, un hôte et un port pour le serveur cible.

      Exemple :

      • Nom:target1
      • Hôte:1.mybackendservice.com
      • Port:80
    4. Sélectionnez Activé pour activer le serveur cible.
    5. Cliquez sur Enregistrer.
  5. Pour modifier le serveur cible: <ph type="x-smartling-placeholder">
      </ph>
    1. Cliquez sur Modifier.
    2. Modifiez les valeurs du serveur de destination.
    3. Cliquez sur Enregistrer.
  6. Pour supprimer le serveur cible: <ph type="x-smartling-placeholder">
      </ph>
    1. Cliquez sur Modifier.
    2. Cliquez sur Supprimer.

Gérer les serveurs cibles à l'aide de l'API

Vous pouvez utiliser l'API Edge pour créer, supprimer, mettre à jour, obtenir et répertorier des serveurs cibles. Pour Pour en savoir plus, consultez la section TargetServers.

Utilisez l'appel d'API suivant pour créer un serveur cible:

$ curl -H "Content-Type:text/xml" -X POST -d \
'<TargetServer name="target1">
   <Host>1.mybackendservice.com</Host>
   <Port>80</Port>
   <IsEnabled>true</IsEnabled>
 </TargetServer>' \
-u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/environments/test/targetservers

Exemple de réponse :

{
  "host" : "1.mybackendservice.com",
  "isEnabled" : true,
  "name" : "target1",
  "port" : 80
}

Après avoir créé le premier TargetServer, utilisez l'appel d'API suivant pour créer un deuxième TargetServer. En définissant deux TargetServers, vous fournissez deux URL qu'un TargetEndpoint peut utiliser pour l'équilibrage de charge :

$ curl -H "Content-type:text/xml" -X POST -d \
'<TargetServer  name="target2">
  <Host>2.mybackendservice.com</Host>
  <Port>80</Port>
  <IsEnabled>true</IsEnabled>
</TargetServer >' \
-u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/environments/test/targetservers

Exemple de réponse :

{
  "host" : "2.mybackendservice.com",
  "isEnabled" : true,
  "name" : "target2",
  "port" : 80
}

Utilisez l'appel d'API suivant pour récupérer la liste des TargetServers dans un environnement:

$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/environments/test/targetservers

Exemple de réponse :

[ "target2", "target1" ]

Il existe maintenant deux TargetServers disponibles pour être utilisés par les proxys d'API déployés dans le test environnement. Pour équilibrer la charge du trafic entre ces TargetServers, vous configurez la connexion HTTP dans le point de terminaison cible d'un proxy d'API afin qu'elle utilise ces TargetServers.

La limite est de 500 TargetServers par environnement, car dans la section Limites.

Configurer un TargetEndpoint de manière à effectuer un équilibrage de charge sur des TargetServers nommés

Maintenant que deux TargetServers sont disponibles, vous pouvez modifier le paramètre de connexion HTTP de TargetEndpoint pour référencer ces deux TargetServers par leur nom :

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <LoadBalancer>
      <Server name="target1" />
      <Server name="target2" />
    </LoadBalancer>
    <Path>/test</Path>
  </HTTPTargetConnection>
</TargetEndpoint>

La configuration ci-dessus est la configuration d'équilibrage de charge la plus basique possible. L'équilibreur de charge accepte trois algorithmes d'équilibrage de charge : Round robin (à tour de rôle), Weighted (pondération) et Least Connection (plus faible nombre de requêtes). Round robin est l'algorithme par défaut. Aucun algorithme n'étant spécifié dans la configuration ci-dessus, les requêtes sortantes du proxy API vers les serveurs backend alternent, une pour une, entre cibles 1 et 2.

L'élément <Path> constitue le chemin de base de l'URI TargetEndpoint pour tous les serveurs cibles. Il n'est utilisé que lorsque <LoadBalancer> est utilisé. Sinon, il est ignoré. Dans l'exemple ci-dessus, une requête atteignant "target1" sera http://target1/test, et ainsi pour les autres serveurs cibles.

Définir les options de l'équilibreur de charge

Vous pouvez ajuster la disponibilité à l'aide des options d'équilibrage de charge et de basculement au niveau à l'échelle de l'équilibreur de charge et du serveur cible. Cette section décrit ces options.

Algorithme

Définit l'algorithme utilisé par <LoadBalancer>. Les algorithmes disponibles sont RoundRobin, Weighted et LeastConnections. Ils sont décrits ci-dessous.

Round robin (à tour de rôle)

L'algorithme par défaut Round robin transfère une requête à chaque TargetServer, dans l'ordre dans lequel les serveurs sont répertoriés dans la connexion HTTP du point de terminaison cible. Exemple :

<TargetEndpoint name="default">
  <HTTPTargetConnection>
      <LoadBalancer>
        <Algorithm>RoundRobin</Algorithm>
        <Server name="target1" />
        <Server name="target2" />
      </LoadBalancer>
      <Path>/test</Path>
  </HTTPTargetConnection>
</TargetEndpoint>

Weighted

L'algorithme d'équilibrage de charge Weighted vous permet de configurer des charges de trafic proportionnelles pour vos TargetServers. L'équilibreur de charge pondéré distribue la requête à vos TargetServers à la pondération de chaque TargetServer. Par conséquent, l'algorithme Weighted vous oblige à définir un attribut weight pour chaque TargetServer. Exemple :

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <LoadBalancer>
      <Algorithm>Weighted</Algorithm>
      <Server name="target1">
        <Weight>1</Weight>
      </Server>
      <Server name="target2">
        <Weight>2</Weight>
      </Server>
    </LoadBalancer>
    <Path>/test</Path>
  </HTTPTargetConnection>
</TargetEndpoint>

Dans cet exemple, deux requêtes seront routées vers "target2" pour chaque requête routée vers "target1".

Least Connection

Les équilibreurs de charge configurés avec l'algorithme Least Connection routent les requêtes sortantes vers le TargetServer qui compte le plus petit nombre de connexions HTTP ouvertes. Exemple :

<TargetEndpoint name="default">
  <HTTPTargetConnection>
      <LoadBalancer>
        <Algorithm>LeastConnections</Algorithm>
        <Server name="target1" />
        <Server name="target2" />
      </LoadBalancer>
  </HTTPTargetConnection>
  <Path>/test</Path>
</TargetEndpoint>

Nombre maximal d'échecs

Nombre maximal de requêtes en échec entre le proxy d'API et le TargetServer, ayant pour effet de rediriger la requête vers un autre TargetServer.

Un échec de réponse signifie qu'Apigee ne reçoit aucune réponse d'un serveur cible. Lorsque cela se produit, le compteur d'échecs augmente d'une unité.

Cependant, quand Apigee reçoit une réponse d'une cible, même si la réponse est une erreur HTTP (telle que 500), elle est comptabilisée comme une réponse le serveur cible, et le compteur d'échecs est réinitialisé. Pour vous assurer que les mauvaises réponses HTTP (par exemple, 500) incrémentent également le compteur d'échecs pour retirer un serveur non opérationnel de rotation de l'équilibrage de charge dès que possible, vous pouvez ajouter Élément <ServerUnhealthyResponse> avec <ResponseCode> les éléments enfants à la configuration de votre équilibreur de charge. Edge comptera également les réponses avec ces comme des échecs.

Dans l'exemple suivant, target1 sera supprimé de la rotation au bout de cinq requêtes ayant échoué, y compris des réponses 5XX du serveur cible.

<TargetEndpoint name="default">
  <HTTPTargetConnection>
      <LoadBalancer>
        <Algorithm>RoundRobin</Algorithm>
        <Server name="target1" />
        <Server name="target2" />
        <MaxFailures>5</MaxFailures>
        <ServerUnhealthyResponse>
            <ResponseCode>500</ResponseCode>
            <ResponseCode>502</ResponseCode>
            <ResponseCode>503</ResponseCode>
        </ServerUnhealthyResponse>
      </LoadBalancer>
      <Path>/test</Path>
  </HTTPTargetConnection>
</TargetEndpoint>

Par défaut, le nombre maximal d'échecs est défini sur 0. Cela signifie qu'Edge essaie toujours se connectent à la cible pour chaque requête et ne supprime jamais le serveur cible de la rotation.

Il est préférable d'utiliser une valeur MaxFailures (nombre maximal d'échecs) supérieure à 0 avec un HealthMonitor. Si vous configurez MaxFailures > 0, le serveur cible est supprimé de la rotation lorsque la cible échoue le nombre de fois que vous avez indiqué. Lorsqu'un HealthMonitor, Apigee place automatiquement la TargetServer est de nouveau en rotation une fois que la cible est à nouveau opérationnelle, selon le la configuration de ce HealthMonitor. Voir Surveillance de l'état de santé pour en savoir plus.

Si vous configurez une valeur MaxFailures supérieure à 0 et que vous ne configurez pas d'objet HealthMonitor, Apigee ne réinclut pas le TargetServer dans la rotation automatiquement une fois qu'Apigee a détecté un échec. Dans ce cas, vous devez redéployer le proxy d'API avant qu'Apigee ne replace le TargetServer en rotation. Consultez la page Déployer un proxy d'API.

Réessayer

Si les nouvelles tentatives sont activées, une requête fera l'objet d'une nouvelle tentative en cas d'échec de réponse (erreur d'E/S ou expiration du délai HTTP) ou si la réponse correspond à une valeur définie par <ServerUnhealthyResponse>. Pour en savoir plus sur la définition de <ServerUnhealthyResponse>, consultez la section Nombre maximal d'échecs ci-dessus.

Par défaut, <RetryEnabled> est défini sur true. Définissez la valeur sur false pour désactiver les nouvelles tentatives. Exemple :

<RetryEnabled>false</RetryEnabled>

IsFallback

Un (et un seul) TargetServer peut être défini comme serveur "de remplacement". Le TargetServer de remplacement n'est pas inclus dans les routines d'équilibrage de charge tant que tous les autres TargetServers ne sont pas identifiés comme étant indisponibles par l'équilibreur de charge. Lorsque l'équilibreur de charge détermine que tous les TargetServers sont indisponibles, tout le trafic est routé vers le serveur de remplacement. Exemple :

<TargetEndpoint name="default">
  <HTTPTargetConnection>
      <LoadBalancer>
        <Algorithm>RoundRobin</Algorithm>
        <Server name="target1" />
        <Server name="target2" />
        <Server name="target3">
          <IsFallback>true</IsFallback>
        </Server>
      </LoadBalancer>
      <Path>/test</Path>
  </HTTPTargetConnection>
</TargetEndpoint>

La configuration ci-dessus entraîne un équilibrage de charge de type Round robin entre les cibles 1 et 2 jusqu'à ce qu'elles deviennent indisponibles. Lorsque les cibles 1 et 2 ne sont pas disponibles, l'intégralité du trafic est routé vers la cible 3.

Chemin

Le chemin définit un fragment d'URI qui sera ajouté à toutes les requêtes émises par le TargetServer au serveur de backend.

Cet élément accepte un chemin sous forme de chaîne littérale ou un modèle de message. Un modèle de message vous permet de remplacer une chaîne de variable au moment de l'exécution. Par exemple, dans la définition de point de terminaison cible suivante, la valeur de {mypath} est utilisée pour le chemin :

<HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
    </SSLInfo>
    <LoadBalancer>
      <Server name="testserver"/>
    </LoadBalancer>
    <Path>{mypath}</Path>
</HTTPTargetConnection>

Configurer un serveur cible pour TLS/SSL

Si vous utilisez un TargetServer pour définir le service de backend et que celui-ci nécessite une connexion au protocole HTTPS, vous devez activer TLS/SSL dans la définition du TargetServer. Cette opération est nécessaire, car le tag <Host> ne vous permet pas de spécifier le protocole de connexion. Vous trouverez ci-dessous la définition du serveur de ciblage à sens unique TLS/SSL où Edge envoie des requêtes HTTPS au service de backend:

<TargetServer name="target1">
  <Host>mocktarget.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
      <Enabled>true</Enabled>
  </SSLInfo> 
</TargetServer>

Si le service de backend requiert une approche bidirectionnelle, ou mutuelle, pour les protocoles TLS/SSL, configurez le TargetServer à l'aide des mêmes paramètres de configuration TLS/SSL que ceux des TargetEndpoints :

<TargetServer  name="TargetServer 1">
    <IsEnabled>true</IsEnabled>
    <Host>www.example.com</Host>
    <Port>443</Port>
    <SSLInfo>
        <Ciphers/>
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <Enabled>true</Enabled>
        <IgnoreValidationErrors>false</IgnoreValidationErrors>
        <KeyAlias>keystore-alias</KeyAlias>
        <KeyStore>keystore-name</KeyStore>
        <Protocols/>
        <TrustStore>truststore-name</TrustStore>
    </SSLInfo>
</TargetServer >

Pour en savoir plus sur les propriétés <SSLInfo>, telles que <Ciphers> et <ClientAuthEnabled>, consultez les des informations sur la définition de ces propriétés pour un hôte virtuel sur la page Configuration de l'accès TLS à une API pour le cloud privé.

Pour obtenir des instructions complètes sur la configuration du protocole TLS/SSL sortant, consultez la section Configuration de TLS/SSL d'Edge au backend (cloud et cloud privé).

Schéma TargetServer

Consultez le schéma de TargetServer et d'autres entités sur GitHub.

Surveillance d'état

Cette fonctionnalité vous permet d'améliorer les configurations de l'équilibrage de charge en interrogeant activement les URL du service de backend définies dans les configurations TargetServer. Lorsque la surveillance de l'état est activée, un TargetServer en échec est automatiquement renvoyé en rotation lorsque l'objet HealthMonitor détermine que le TargetServer est actif.

La surveillance de l'état fonctionne avec le paramètre <MaxFailures>. Lorsque la surveillance de l'état est activée, <MaxFailures> spécifie le nombre de requêtes en échec entre le proxy d'API et le TargetServer qui a pour effet de rediriger la requête vers un autre TargetServer. Le TargetServer en échec est ensuite supprimé de la rotation jusqu'à ce que vous redéployiez le proxy.

Lorsque la surveillance de l'état est activée, un TargetServer défaillant est automatiquement renvoyé en rotation et aucun redéploiement de proxy n'est requis.

L'objet HealthMonitor agit comme un client simple qui appelle un service de backend via TCP ou HTTP :

  • Un client TCP garantit simplement qu'un socket peut être ouvert.
  • Vous devez configurer le client HTTP pour qu'il envoie une requête HTTP valide au service de backend. Vous pouvez définir des opérations HTTP GET, PUT, POST ou DELETE. La réponse de l'appel de surveillance HTTP doit correspondre aux paramètres configurés dans le bloc <SuccessResponse>.

Succès et échecs

Lorsque vous activez la surveillance de l'état, Edge commence à envoyer des vérifications d'état à votre cible Google Cloud. Une vérification de l'état est une requête envoyée au serveur cible qui détermine si le le serveur cible est opérationnel ou non.

Une vérification d'état peut générer l'un des deux résultats suivants :

  • Opération réussie:le serveur cible est considéré comme opérationnel lorsqu'une lors d'une vérification. Cela se produit généralement dans l'un ou plusieurs des cas suivants :
    • Le serveur cible accepte une nouvelle connexion au port spécifié, répond à une requête sur ce port, puis ferme le port dans le délai spécifié. La réponse du serveur cible contient "Connection: Close" (Connexion : fermer).
    • Le serveur cible répond à une requête de vérification de l'état avec un code d'état 200 (OK) ou un autre code d'état HTTP que vous estimez acceptable.
    • Le serveur cible répond à une requête de vérification d'état avec un corps de message correspondant au corps de message attendu.

    Lorsqu'Edge détermine qu'un serveur est opérationnel, il poursuit ou reprend son envoi de requêtes.

  • Échec:le serveur cible peut échouer à une vérification de l'état de différentes manières, selon le type de vérification. Une erreur peut être consignée lorsque le serveur cible: <ph type="x-smartling-placeholder">
      </ph>
    • Refuse une connexion d'Edge au port de vérification de l'état.
    • ne répond pas à une requête de vérification d'état dans le délai spécifié ;
    • renvoie un code d'état HTTP inattendu ;
    • répond avec un corps de message qui ne correspond pas à celui attendu.

    Lorsqu'un serveur cible échoue lors d'une vérification de l'état, Edge incrémente le nombre d'échecs de ce serveur. Si Le nombre de défaillances de ce serveur atteint ou dépasse un seuil prédéfini (<MaxFailures>), Edge arrête d'envoyer des requêtes à ce serveur.

Activer un objet HealthMonitor

Pour créer un objet HealthMonitor, ajoutez l'élément <HealthMonitor> à la configuration HTTPConnection du TargetEndpoint correspondant à un proxy. Vous ne pouvez pas réaliser cette opération dans l'interface utilisateur. À la place, vous créez une configuration de proxy et téléchargez-la en tant que fichier ZIP sur Edge. Une configuration de proxy est une description structurée de l'ensemble des aspects d'un proxy d'API. Les configurations de proxy sont constituées de fichiers XML organisés une structure de répertoires prédéfinie. Pour plus d'informations, consultez la documentation de référence sur la configuration des proxys d'API.

Un HealthMonitor simple définit un paramètre IntervalInSec avec un TCPMonitor ou un HTTPMonitor. L'élément <MaxFailures> spécifie le nombre de requêtes en échec entre le proxy d'API et le TargetServer qui a pour effet de rediriger la requête vers un autre TargetServer. Par défaut, <MaxFailures> est défini sur 0, ce qui signifie Edge n'effectue aucune action corrective. Lors de la configuration d'un HealthMonitor, veillez à définir <MaxFailures> sur une valeur non nulle dans le tag <HTTPTargetConnection> du tag <TargetEndpoint>.

TCPMonitor

La configuration ci-dessous définit un objet HealthMonitor qui interroge chaque TargetServer en ouvrant une connexion sur le port 80 toutes les cinq secondes. (Le port est facultatif. S'il n'est pas spécifié, le port TCPMonitor est le port du TargetServer.)

  • Si la connexion échoue ou prend plus de 10 secondes, le nombre d'échecs augmente d'une unité pour ce TargetServer.
  • Si la connexion réussit, le nombre d'échecs pour le TargetServer est réinitialisé à zéro.

Vous pouvez ajouter un HealthMonitor en tant qu'enfant de l'élément HTTPTargetConnetion du TargetEndpoint, comme illustré ci-dessous :

<TargetEndpoint name="default">
  <HTTPTargetConnection>
      <LoadBalancer>
        <Algorithm>RoundRobin</Algorithm>
        <Server name="target1" />
        <Server name="target2" />
        <MaxFailures>5</MaxFailures>
      </LoadBalancer>
      <Path>/test</Path>
      <HealthMonitor>
        <IsEnabled>true</IsEnabled>
        <IntervalInSec>5</IntervalInSec>
        <TCPMonitor>
            <ConnectTimeoutInSec>10</ConnectTimeoutInSec>
            <Port>80</Port>
        </TCPMonitor>
      </HealthMonitor>
  </HTTPTargetConnection>
. . .

HealthMonitor avec les éléments de configuration TCPMonitor

Le tableau suivant décrit les éléments de configuration TCPMonitor :

Nom Description Par défaut Obligatoire ?
IsEnabled Valeur booléenne qui active ou désactive HealthMonitor. faux No
IntervalInSec Intervalle de temps, en secondes, entre chaque requête TCP sondant le service. 0 Oui
ConnectTimeoutInSec Intervalle pendant lequel la connexion au port TCP doit être établie pour être considérée comme un succès. L'échec de la connexion dans l'intervalle spécifié compte comme un échec et a pour effet d'augmenter le nombre d'échecs de l'équilibreur de charge pour le TargetServer. 0 Oui
Port Facultatif. Port sur lequel la connexion TCP est établie. S'il n'est pas spécifié, le port TCPMonitor est le port du TargetServer. 0 No

HTTPMonitor

Un exemple d'objet HealthMonitor utilisant HTTPMonitor envoie une requête GET au service de backend toutes les cinq secondes. L'exemple ci-dessous ajoute un en-tête d'autorisation HTTP de base (Basic Authorization) au message de la requête. La configuration de la réponse définit les paramètres qui seront comparés à la réponse réelle du service de backend. Dans l'exemple ci-dessous, la réponse attendue est un code de réponse HTTP 200 et un en-tête HTTP personnalisé ImOK dont la valeur est YourOK. Si la réponse ne correspond pas, la requête est alors traitée comme un échec par la configuration de l'équilibreur de charge.

HTTPMonitor est compatible avec les services de backend configurés pour utiliser les protocoles HTTP et HTTPS unidirectionnels. Toutefois, il n'est pas compatible avec les éléments suivants:

  • HTTPS bidirectionnel (également appelé TLS/SSL bidirectionnel)
  • Certificats autosignés

Notez que tous les paramètres de requête et de réponse d'un objet HTTPMonitor sont spécifiques au service de backend qui doit être appelé.

    <HealthMonitor>
      <IsEnabled>true</IsEnabled>
      <IntervalInSec>5</IntervalInSec>
      <HTTPMonitor>
        <Request>
          <IsSSL>true</IsSSL>
          <ConnectTimeoutInSec>10</ConnectTimeoutInSec>
          <SocketReadTimeoutInSec>30</SocketReadTimeoutInSec>
          <Port>80</Port>
          <Verb>GET</Verb>
          <Path>/healthcheck</Path>
          <Header name="Authorization">Basic 12e98yfw87etf</Header>
          <IncludeHealthCheckIdHeader>true</IncludeHealthCheckIdHeader>
        </Request>
        <SuccessResponse>
          <ResponseCode>200</ResponseCode>
          <Header name="ImOK">YourOK</Header>
        </SuccessResponse>
      </HTTPMonitor>
    </HealthMonitor>
    

HealthMonitor avec les éléments de configuration HTTPMonitor

Le tableau suivant décrit les éléments de configuration HTTPMonitor :

Nom Description Par défaut Obligatoire ?
IsEnabled Valeur booléenne qui active ou désactive HealthMonitor. faux No
IntervalInSec Intervalle de temps, en secondes, entre chaque requête sondant le service. 0 Oui
Request

Options de configuration pour le message de requête sortant envoyé par l'objet HealthMonitor aux TargetServers figurant dans la rotation.

Le chemin n'accepte pas les variables.

N/A Oui
IsSSL Indique si le protocole HTTPS (HTTP sécurisé) est utilisé pour surveiller les connexions.

Potentiel : <ph type="x-smartling-placeholder">
    </ph>
  • true: HTTPS est utilisé.
  • false: HTTP est utilisé.
  • Non spécifié: utilise la configuration du serveur cible.
faux Non
ConnectTimeoutInSec Intervalles, en secondes, pendant lequel le handshake de connexion TCP au service HTTP doit être réalisé pour être considéré comme un succès. L'échec de la connexion dans l'intervalle spécifié compte comme un échec et a pour effet d'augmenter le nombre d'échecs de l'équilibreur de charge pour le TargetServer. 0 No
SocketReadTimeoutInSec Intervalle, en secondes, pendant lequel les données doivent être lues à partir du service HTTP pour que la lecture soit considérée comme un succès. L'échec de la lecture dans l'intervalle spécifié compte comme un échec et a pour effet d'augmenter le nombre d'échecs de l'équilibreur de charge pour le TargetServer. 0 No
Port Port sur lequel est établie la connexion HTTP au service de backend. N/A No
Verb Verbe HTTP utilisé pour chaque requête HTTP d'interrogation envoyée au service de backend. N/A No
Path Chemin ajouté à l'URL définie dans le TargetServer. Utilisez l'élément Path pour configurer un "point de terminaison d'interrogation" sur votre service HTTP. N/A No

IncludeHealthCheckIdHeader

Permet de suivre les requêtes de vérification d'état sur les systèmes en amont. Le paramètre IncludeHealthCheckIdHeader prend une valeur booléenne et la valeur par défaut false. Si vous le définissez sur true, un Header nommé X-Apigee-Healthcheck-Id est injecté dans la requête de vérification d'état. La valeur de l'en-tête est attribuée de manière dynamique et se présente sous la forme ORG/ENV/SERVER_UUID/N, où ORG est le nom de l'organisation et ENV est le nom de l'environnement, SERVER_UUID est un ID unique identifiant le processeur de messages, et N correspond au nombre de millisecondes écoulées depuis le 1er janvier 1970.

Exemple d'en-tête de requête obtenu :

X-Apigee-Healthcheck-Id: orgname/envname/E8C4D2EE-3A69-428A-8616-030ABDE864E0/1586802968123
faux No
Payload Corps HTTP généré pour chaque requête HTTP d'interrogation. Notez que cet élément n'est pas exigé pour les requêtes GET. N/A No
SuccessResponse Options de correspondance pour le message de réponse HTTP entrant généré par le service de backend interrogé. Les réponses qui ne correspondent pas incrémentent le nombre d'échecs de 1. N/A No
ResponseCode Code de réponse HTTP attendu en provenance du TargetServer interrogé. Un code différent du code spécifié constitue un échec, et le nombre d'échecs est incrémenté pour le service de backend interrogé. Vous pouvez définir plusieurs éléments ResponseCode. N/A No
Headers Liste d'un ou plusieurs en-têtes et valeurs HTTP attendus en provenance du service de backend interrogé. Tout en-tête ou valeur HTTP de réponse qui diffère des éléments spécifiés ici entraîne un échec, et le décompte est incrémenté de 1 pour le TargetServer interrogé. Vous pouvez définir plusieurs éléments d'en-tête. N/A Non