1. basculement Nginx
Basculement: dans la configuration d'équilibrage de charge nginx, si la demande transmise à un serveur échoue, nginx la transmet automatiquement à un autre serveur et réessaye. Le basculement dépend du type de demande et les demandes GET sont automatiquement transmises et réessayées. Les demandes telles que POST et PUT ne seront pas transmises si elles ont été envoyées à un serveur et sont traitées de manière anormale; si le serveur ne peut pas être connecté à, nginx les transmettra à d'autres serveurs pour traitement. Donc, n'utilisez pas la demande GET pour insérer et mettre à jour des affaires, sinon il y aura des problèmes.
http {
#application
cluster load balancing upstream com.zhujn.hot {#two
tomcat, weight: weight
server 192.168.1.100:8081 weight = 3;
server 192.168.1.101:8081 weight = 2;
}
server { #virtual server, default Port: 80
10s proxy_read_timeout,
délai d' attente d'erreur de proxy_next_upstream; état # basculement
proxy_next_upstream_tries 3, n retries, afin d' éviter un grand infini de cluster retries
proxy_next_upstream_timeout 60; # nouvelle tentative la plus longue
LIEU / {
# proxy inverse, le point d' équilibrage de charge Nom de la configuration
proxy_pass http://com.zhujn.hot
}
}
}
2. Avalanche
Dans un scénario à concurrence élevée avec équilibrage de charge entre plusieurs serveurs, en raison des caractéristiques du basculement nginx, en supposant que 3000 des 10000 requêtes d'un certain serveur n'ont pas pu être traitées, nginx divisera ces 3000 requêtes vers d'autres serveurs. En arrêtant les autres serveurs, nginx transmettra la demande sur la machine problématique aux serveurs restants, ce qui provoquera un effet boule de neige et provoquera le plantage de l'ensemble du cluster.
Solution: ajoutez un mécanisme de fusible et configurez comme suit.
com.zhujn.hot en amont {
serveur
#max_fails 192.168.1.100:8081 max_fails = 10 fail_timeout = 60s;
serveur 192.168.1.101:8081 max_fails = 10 fail_timeout = 60s;
}