<-
Apache > Serveur HTTP > Documentation > Version 2.4 > Modules

Module Apache mod_proxy_hcheck

Langues Disponibles:  en  |  fr 

Description:Check up dynamique des membres du groupe de répartition de charge (équipiers) pour mod_proxy
Statut:Extension
Identificateur de Module:proxy_hcheck_module
Fichier Source:mod_proxy_hcheck.c
Compatibilité:Disponible à partir de la version 2.4.21 du serveur HTTP Apache

Sommaire

Ce module permet d'effectuer un check up dynamique des membres du groupe de répartition de charge (équipiers). Ce check up peut être activé pour un ou plusieurs équipiers et il est indépendant des requêtes de mandataire inverse proprement dites.

Pour fonctionner, ce module nécessite le chargement préalable de mod_watchdog.

Paramètres

Le mécanisme de check up est activé via l'utilisation de paramètres supplémentaires de la directive BalancerMember configurés de manière standard via la directive ProxyPass :

Ce module définit un nouveau drapeau d'état status pour BalancerMember : "C". Lorsque l'équipier est mis hors service suite à un disfonctionnement déterminé par le module de check up, ce drapeau est activé et peut être lu (et modifié) via le balancer-manager.

Paramètre Défaut Description
hcmethod None Aucun check up dynamique n'est effectué. Les choix possibles sont :
MethodDescriptionNote
NoneAucun check up dynamique effectué
TCPVérifie qu'un socket vers le serveur d'arrière-plan peut être créé ; par exemple "es-tu en état de fonctionner"
OPTIONSEnvoie une requête HTTP OPTIONS au serveur d'arrière-plan via HTTP/1.0*
HEADEnvoie une requête HTTP HEAD au serveur d'arrière-plan via HTTP/1.0*
GETEnvoie une requête HTTP GET au serveur d'arrière-plan via HTTP/1.0*
OPTIONS11Envoie une requête HTTP OPTIONS au serveur d'arrière-plan via HTTP/1.1*
HEAD11Envoie une requête HTTP HEAD au serveur d'arrière-plan via HTTP/1.1*
GET11Envoie une requête HTTP GET au serveur d'arrière-plan via HTTP/1.1*
*: si hcexpr n'est pas utilisé, un retour HTTP 2xx ou 3xx sera interprété comme un passage avec succès du check up.
hcpasses 1 Nombre de check up à passer avec succès avant de remettre en service l'équipier
hcfails 1 Nombre de check up échoués avant mettre hors service l'équipier
hcinterval 30 Intervalle entre deux check up en secondes (par défaut effectué toutes les 30 secondes)
hcuri   URI supplémentaire à ajouter à l'URL de l'équipier pour le check up.
hctemplate   Nom du modèle créé via ProxyHCTemplate à utiliser pour définir les paramètres de check up de cet équipier
hcexpr   Nom de l'expression créée via ProxyHCExpr utilisée pour analyser les en-têtes de la réponse du check up.
Si ce paramètre est absent, un état HTTP de 2xx à 3xx est interprété comme un check up réussi.

Compatibilité :

OPTIONS11, HEAD11 et GET11 sont disponibles à partir de la version 2.4.55 du serveur HTTP Apache.

Support Apache!

Sujets

Directives

Traitement des bugs

Voir aussi

top

Exemples d'utilisation

L'exemple suivant montre comment configurer le check up pour différents serveurs d'arrière-plan :

ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
ProxyHCExpr gdown {%{REQUEST_STATUS} =~ /^[5]/}
ProxyHCExpr in_maint {hc('body') !~ /Under maintenance/}

<Proxy balancer://foo>
  BalancerMember http://www.example.com/  hcmethod=GET hcexpr=in_maint hcuri=/status.php
  BalancerMember http://www2.example.com/ hcmethod=HEAD hcexpr=ok234 hcinterval=10
  BalancerMember http://www3.example.com/ hcmethod=TCP hcinterval=5 hcpasses=2 hcfails=3
  BalancerMember http://www4.example.com/
</Proxy>

ProxyPass "/" "balancer://foo"
ProxyPassReverse "/" "balancer://foo"

Dans ce scénario, on teste l'équipier http://www.example.com/ en lui envoyant une requête GET /status.php et en regardant si la réponse contient la chaîne Under maintenance. Si c'est le cas, le check up est considéré comme ayant échoué et l'équipier est mis hors service. Ce check up dynamique est effectué toutes les 30 secondes, ce qui correspond à la valeur par défaut.

On teste l'équipier http://www2.example.com/ en lui envoyant simplement une requête HEAD toutes les 10 secondes et en vérifiant que la réponse HTTP est bien un code d'état de 2xx, 3xx ou 4xx. On teste l'équipier http://www3.example.com/ en vérifiant simplement toutes les 5 secondes que le socket vers ce serveur est bien opérationnel. Si ce serveur est marqué "hors service", il lui faudra 2 check up réussis pour être réactivé et participer à nouveau à la répartition de charge. Si à ce moment-là il échoue à 3 check up successifs, il sera à nouveau mis hors service. Enfin, l'équipier http://www4.example.com/ ne fait l'objet d'aucun check up.

top

Directive ProxyHCExpr

Description:Crée et nomme une expression conditionnelle à utiliser pour déterminer la santé d'un serveur d'arrière-plan en fonction de sa valeur
Syntaxe:ProxyHCExpr name {ap_expr expression}
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy_hcheck

La directive ProxyHCExpr permet de créer et nommer une expression conditionnelle dont la valeur calculée en fonction des en-têtes de la réponse du serveur d'arrière-plan permettra d'évaluer la santé de ce dernier. Cette expression nommée peut alors être assignée aux serveurs d'arrière-plan via le paramètre hcexpr.

ProxyHCExpr: interprète les réponses 2xx/3xx/4xx comme des check up réussis

ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}
ProxyPass "/apps"     "balancer://foo"

<Proxy balancer://foo>
  BalancerMember http://www2.example.com/  hcmethod=HEAD hcexpr=ok234 hcinterval=10
</Proxy>
L'expression peut utiliser des accolades ("{}") comme délimiteurs en plus des guillemets normaux.

Si l'on utilise une méthode de check up (par exemple GET) qui génère un corps de réponse, ce corps peut lui-même être ausculté via ap_expr en utilisant la fonction associée aux expressions hc() spécifique à ce module.

Dans l'exemple suivant, on envoie une requête GET au serveur d'arrière-plan, et si le corps de la réponse contient la chaîne Under maintenance, ce serveur d'arrière-plan est mis hors service.

ProxyHCExpr: auscultation du corps de la réponse

ProxyHCExpr in_maint {hc('body') !~ /Under maintenance/}
ProxyPass "/apps"     "balancer://foo"

<Proxy balancer://foo>
  BalancerMember http://www.example.com/ hcexpr=in_maint hcmethod=get hcuri=/status.php
</Proxy>

NOTE: Comme le corps de la réponse peut être assez grand, il est recommandé de privilégier un check up basé sur les codes d'état.

top

Directive ProxyHCTemplate

Description:Crée et nomme un modèle permettant de définir différents paramètres de check up
Syntaxe:ProxyHCTemplate name parameter=setting [...]
Contexte:configuration globale, serveur virtuel
Statut:Extension
Module:mod_proxy_hcheck

La directive ProxyHCTemplate permet de créer et nommer un modèle de paramètres de check up qui peut alors être assigné aux équipiers via le paramètre hctemplate.

ProxyHCTemplate

ProxyHCTemplate tcp5 hcmethod=tcp hcinterval=5
ProxyPass "/apps"     "balancer://foo"

<Proxy balancer://foo>
  BalancerMember http://www2.example.com/ hctemplate=tcp5
</Proxy>
top

Directive ProxyHCTPsize

Description:Définit la taille totale, pour l'ensemble du serveur, du jeu de threads utilisé pour le check up des équipiers
Syntaxe:ProxyHCTPsize size
Défaut:ProxyHCTPsize 16
Contexte:configuration globale
Statut:Extension
Module:mod_proxy_hcheck

Si Apache httpd et APR ont été compilés avec le support des threads, le module de check up peut confier ce travail à un jeu de threads associé au processus Watchdog, ce qui permet l'exécution des check up en parallèle. La directive ProxyHCTPsize permet de déterminer la taille de ce jeu de threads. Une valeur de 0 signifie qu'aucun jeu de threads ne sera utilisé, et le check up des différents équipiers sera alors effectué séquentiellement.

ProxyHCTPsize

ProxyHCTPsize 32

Langues Disponibles:  en  |  fr 

top

Commentaires

Notice:
This is not a Q&A section. Comments placed here should be pointed towards suggestions on improving the documentation or server, and may be removed by our moderators if they are either implemented or considered invalid/off-topic. Questions on how to manage the Apache HTTP Server should be directed at either our IRC channel, #httpd, on Libera.chat, or sent to our mailing lists.