Vous consultez la documentation d'Apigee Edge.
Accédez à la documentation sur Apigee X. info
Apigee Edge améliore la disponibilité de votre API en fournissant une compatibilité intégrée avec l'équilibrage de charge et le basculement sur plusieurs instances de serveurs de backend.
Les configurations TargetServer dissocient les URL de point de terminaison concrètes des configurations TargetEndpoint. Chaque TargetServer est référencé par son nom dans une connexion HTTPConnection TargetEndpoint. Au lieu de définir une URL concrète dans la configuration, vous pouvez configurer 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 le 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 |
Routage des API et équilibrement de charge à l'aide de serveurs cibles (Edge classique) | Routez une API vers un serveur cible différent en fonction de l'environnement et équilibrez la charge de votre API sur plusieurs serveurs cibles dans l'UI Edge classique. |
Exemple de configuration de 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 de TargetServer
Le tableau suivant décrit les éléments utilisés pour créer et configurer un TargetServer:
Nom | Description | Par défaut | Obligatoire ? |
---|---|---|---|
name |
Nom de la configuration TargetServer, qui doit être unique dans l'environnement. Le nom de 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 TargetServer est activée ou désactivée. Vous pouvez ainsi désactiver la rotation des TargetServers sans modifier la configuration du proxy de l'API. Une utilisation courante consiste à écrire une application ou un script qui active ou désactive automatiquement les TargetServers en fonction des conditions de capacité requises, de calendriers de maintenance, etc. | true |
Oui |
Gérer les serveurs cibles à l'aide de l'UI
Gérez les serveurs cibles, comme décrit ci-dessous.
Edge
Pour gérer les serveurs cibles à l'aide de l'interface utilisateur Edge:
- Connectez-vous à apigee.com/edge.
- Sélectionnez Admin > Environnements > Serveurs cibles dans la barre de navigation de gauche.
- Sélectionnez l'environnement souhaité, par exemple test ou prod.
- Pour créer un serveur cible :
- Cliquez sur + Serveur cible.
- Saisissez un nom, un hôte et un port pour le serveur cible.
Exemple :
- Nom:target1
- Hôte:1.mybackendservice.com
- Port:80
- Sélectionnez SSL, si nécessaire.
- Sélectionnez Enabled (Activé) pour activer le serveur cible.
- Cliquez sur Ajouter.
- Pour modifier le serveur cible :
- Placez le curseur sur le serveur cible que vous souhaitez modifier pour afficher le menu d'actions.
- Cliquez sur
.
- Modifiez les valeurs du serveur cible.
- Cliquez sur Mettre à jour.
- Pour supprimer le serveur cible :
- Placez le curseur sur le serveur cible que vous souhaitez supprimer pour afficher le menu d'actions.
- Cliquez sur
.
- Cliquez sur Supprimer pour confirmer l'opération.
Edge classique (cloud privé)
Pour accéder à l'assistant de création de proxy à l'aide de l'interface utilisateur classique d'Edge:
- Connectez-vous à
http://ms-ip:9000
, où ms-ip est l'adresse IP ou le nom DNS du nœud de serveur de gestion. - Sélectionnez API > Configuration de l'environnement > Serveurs cibles dans la barre de navigation de gauche.
- Sélectionnez l'environnement souhaité, par exemple test ou prod.
- Pour créer un serveur cible :
- Cliquez sur Modifier.
- Cliquez sur + Serveur cible.
- Saisissez un nom, un hôte et un port pour le serveur cible.
Exemple :
- Nom:target1
- Hôte:1.mybackendservice.com
- Port:80
- Sélectionnez Enabled (Activé) pour activer le serveur cible.
- Cliquez sur Enregistrer.
- Pour modifier le serveur cible :
- Cliquez sur Modifier.
- Modifiez les valeurs du serveur cible.
- Cliquez sur Enregistrer.
- Pour supprimer le serveur cible :
- Cliquez sur Modifier.
- 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 lister des serveurs cibles. Pour en savoir plus, consultez 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 d'un environnement:
$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/environments/test/targetservers
Exemple de réponse :
[ "target2", "target1" ]
Deux TargetServers sont désormais disponibles et utilisables par les proxys d'API déployés dans l'environnement de test. 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.
Il existe une limite de 500 TargetServers par environnement, comme indiqué 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. Étant donné qu'aucun algorithme n'est spécifié dans la configuration ci-dessus, les requêtes sortantes du proxy d'API vers les serveurs de backend s'alternent à tour de rôle entre target1 et target 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" aura donc la forme http://target1/test
et ainsi de suite 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 de l'équilibreur de charge et du TargetServer. 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é répartit les requêtes dans vos TargetServers proportionnellement à 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.
Une réponse en échec 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é.
Toutefois, lorsque Apigee reçoit une réponse d'une cible, même s'il s'agit d'une erreur HTTP (par exemple, une erreur 500
), celle-ci est comptabilisée comme une réponse du serveur cible, et le compteur d'échecs est réinitialisé. Pour vous assurer que les réponses HTTP incorrectes (telles que les erreurs 500
) incrémentent également le compteur d'échecs visant à retirer dès que possible un serveur non opérationnel de la rotation d'équilibrage de charge, vous pouvez ajouter l'élément <ServerUnhealthyResponse>
avec des éléments enfants <ResponseCode>
à la configuration de votre équilibreur de charge. Edge comptabilise alors comme des échecs les réponses comportant ces codes.
Dans l'exemple suivant, target1
sera supprimé de la rotation après cinq requêtes en échec, y compris certaines 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 tente toujours de se connecter à 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 la configurez sur une valeur supérieure à 0, le TargetServer est supprimé de la rotation lorsque la cible échoue le nombre de fois que vous avez indiqué. Lorsqu'un HealthMonitor est en place, Apigee replace automatiquement le TargetServer en rotation une fois que la cible est à nouveau opérationnelle, en fonction de la configuration de cet HealthMonitor. Pour en savoir plus, consultez la section Surveillance de l'état.
Si vous configurez une valeur MaxFailures supérieure à 0 et que vous ne configurez pas de moniteur d'intégrité, Apigee retire automatiquement le serveur cible de la rotation lorsque le premier échec est détecté. Apigee vérifie l'état du serveur cible toutes les cinq minutes et le remet en rotation lorsqu'il répond normalement.
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 TargetServer pour les protocoles TLS/SSL unidirectionnels, 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 informations sur la configuration de ces propriétés pour un hôte virtuel dans la section Configurer l'accès TLS à une API pour le cloud privé.
Pour obtenir des instructions complètes sur la configuration de TLS/SSL sortant, consultez la page Configurer TLS de la périphérie 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 serveur cible. Une vérification de l'état est une requête envoyée au serveur cible, qui détermine si celui-ci est opérationnel ou non.
Une vérification d'état peut générer l'un des deux résultats suivants :
- Succès : le serveur cible est considéré comme opérationnel lorsqu'une vérification d'état réussit. 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"
- Le serveur cible répond à une requête de vérification de l'état avec un code 200 (OK) ou un autre code d'état HTTP que vous déterminez comme acceptable.
- Le serveur cible répond à une requête de vérification d'état avec un corps de message qui correspond à celui attendu.
Lorsqu'Edge détermine qu'un serveur est opérationnel, Edge continue ou reprend l'envoi de requêtes à ce serveur.
- Échec : le serveur cible peut échouer à une vérification d'état de différentes manières, en fonction du type de vérification. Un échec peut être enregistré lorsque le serveur cible :
- refuse la connexion d'Edge au port de la vérification d'é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 est défaillant lors d'une vérification de l'état, Edge incrémente le nombre d'échecs associé au serveur. Si le nombre d'échecs de ce serveur atteint ou dépasse un seuil prédéfini (
<MaxFailures>
), Edge interrompt l'envoi de 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. Au lieu de cela, vous créez une configuration de proxy puis vous l'importez dans Edge en tant que fichier ZIP. 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. La valeur <MaxFailures>
est définie par défaut sur 0, ce qui signifie qu'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 HTTPS (HTTP sécurisé) doit être utilisé pour surveiller les connexions. Valeurs possibles :
|
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 | Non |
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 | Non |
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 |
| 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 | Non |
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 |