Prise en charge le contrôle de santé en amont (TCP / UDP / HTTP) et fournissez une interface HTTP pour obtenir l'état du serveur backend "
Ce module peut fournir à Nginx des vérifications de santé active du serveur backend (les types de vérification prennent en charge TCP / UDP / HTTP).
Git Clone https://github.com/zhouchangxun/nginx/nginx.git git clone https://github.com/zhouchangxun/ngx_stream_upstream_check_module.git
cd nginx /; git appliquer ../ngx_stream_upstream_check_module/nginx-stable-1.12+.patch
./auto/configure ---with-stream --add-module = .. / ngx_stream_upstream_check_module /
faire et faire l'installation
stream {
upstream tcp - cluster {
# simple round-robin
server 192.168 .0 .1 : 22 ;
server 192.168 .0 . 2 : 22 ;
check interval = 3000 rise = 2 fall = 5 timeout = 5000 default_down = true type = tcp ;
}
upstream udp - cluster {
# simple round-robin
server 192.168 .0 .3 : 53 ;
server 192.168 .0 . 4 : 53 ;
check interval = 3000 rise = 2 fall = 5 timeout = 5000 default_down = true type = udp ;
}
upstream http - cluster {
# simple round-robin
server 192.168 .0 .5 : 80 ;
server 192.168 .0 . 6 : 80 ;
check interval = 3000 rise = 2 fall = 5 timeout = 5000 type = http ;
check_keepalive_requests 100 ;
check_http_send "HEAD / HTTP/1.1 r n Connection: keep-alive r n r n " ;
check_http_expect_alive http_2xx http_3xx ;
}
server {
listen 522 ;
proxy_pass tcp - cluster ;
}
server {
listen 53 ;
proxy_pass udp - cluster ;
}
server {
listen 8080 ;
proxy_pass http - cluster ;
}
}
http {
server {
listen 80 ;
location / status {
l4check_status ;
}
}
}Syntaxe:
Vérifier Interval = millisecondes [Fall = Count] [Rise = Count] [Timeout = millisecondes] [Default_down = true | false] [Type = TCP | UDP | http] [port = Check_port]
Par défaut: Interval = 30000 chute = 5 Rise = 2 Timeout = 1000 Default_Down = True Type = TCP
Contexte: Stream / en amont
Cette commande peut activer la fonction de vérification de la santé du serveur backend.
Intervalle: L'intervalle entre les paquets de contrôle de santé envoyés au backend.
Fall (Fall_Count): Si le nombre de défaillances consécutives atteint Fall_Count, le serveur est considéré en baisse.
Rise (RISE_COUNT): Si le nombre de succès atteint RISE_COUNT, le serveur est considéré comme en hausse.
Timeout: le délai d'expiration de la demande de santé backend.
Default_down: définit l'état du serveur au début. Si c'est vrai, cela signifie que la valeur par défaut est en baisse. Si c'est faux, c'est en place. La valeur par défaut est vraie, ce qui signifie que le serveur estime initialement qu'il n'est pas disponible, et il ne sera considéré comme sain que après que le package de vérification de la santé atteint un certain nombre de temps réussis.
Type: Le type de package de contrôle de santé, prend désormais en charge les types suivants
Port: spécifiez le port de contrôle du serveur backend. Vous pouvez spécifier le port du serveur backend différent du service réel. Par exemple, le backend fournit une application avec le port 443. Vous pouvez vérifier l'état du port 80 pour déterminer l'état de santé du backend. La valeur par défaut est 0, ce qui signifie la même chose que le port fourni par le serveur backend.
Syntaxe: check_keepalive_requests request_num
Par défaut: 1
Contexte: Stream / en amont
Cette instruction peut configurer le nombre de demandes envoyées par une connexion, et sa valeur par défaut est 1, ce qui signifie que Nginx ferme la connexion après avoir terminé une demande.
Syntaxe: check_http_send http_packet
Par défaut: "get / http / 1.0 r n r n"
Contexte: Stream / en amont
Cette directive peut configurer le contenu de la demande envoyé par le paquet HTTP Health Check. Afin de réduire la quantité de données transmises, il est recommandé d'utiliser la méthode "tête".
Lorsque vous utilisez une longue connexion pour la vérification de la santé, vous devez ajouter l'en-tête de requête de conservation à cette commande, telle que: "head / http / 1.1 r nconnection: keep-alive r n r n". Dans le même temps, lors de l'utilisation de la méthode "Get", la taille de l'URI demandée ne doit pas être trop grande pour s'assurer qu'elle peut être transférée dans un intervalle, sinon elle sera considérée comme un serveur backend ou une exception de réseau par le module de vérification de la santé.
Syntaxe: check_http_expect_alive [http_2xx | http_3xx | http_4xx | http_5xx]
Par défaut: http_2xx | http_3xx
Contexte: Stream / en amont
Cette directive spécifie l'état réussi de la réponse HTTP, et par défaut, l'état de 2xx et 3xx est considéré comme sain.
Syntaxe : Check_shm_size Taille
Par défaut : 1m
Contex : Stream
Tous les statuts de vérification de la santé du serveur backend sont stockés dans la mémoire partagée, et cette instruction peut définir la taille de la mémoire partagée. La valeur par défaut est 1M. Si vous avez plus de 1 000 serveurs et que vous avez des erreurs pendant la configuration, vous devrez peut-être étendre la taille de la mémoire.
Syntaxe: l4check_status [html | csv | json]
Par défaut: l4check_status html
Contexte: http / serveur / emplacement