Utilisez nginx pour implémenter un équilibrage de charge simple, la configuration est la suivante
...
http{
...
upstream mytomcatscluster{
#ip_hash 在同一台服务器部署了2个tomcat,使用不同的端口
server 127.0.0.1:8080 weight=2;
server 127.0.0.1:8180 weight=1;
}
...
server{
...
# 将所有后端请求分发到我定义的集群服务器上
location /service/fen/{
proxy_pass http://mytomcatscluster;
}
...
}
}
...
Le problème actuel est le suivant : si les deux Tomcats sont normaux, nginx peut distribuer normalement les requêtes au serveur spécifié. En utilisant le sondage, le poids peut également fonctionner, mais si j'éteins l'un des Tomcats, alors la requête sera bloquée car il y a. Les requêtes seront-elles distribuées par nginx au serveur défaillant ? Comment gérer cette situation ? Ngxin a-t-il une stratégie de solution correspondante ? Existe-t-il un moyen pour nginx de surveiller l'état d'exécution des serveurs de cluster ? Comment configurer ?
upstream a deux paramètres max_fails et fail_timeout. Si un certain serveur a des échecs de connexion max_fails dans le délai fail_timeout, alors Nginx pensera qu'il a raccroché et ne le demandera pas pendant le délai fail_timeout.
fail_timeout est par défaut de 10 s, max_fails est par défaut de 1.
De plus, il existe un module tiers nginx_upstream_check_module spécialement utilisé pour détecter la santé du serveur backend
.
yaoweibin/nginx_upstream_check_module : vérifications de l'état en amont pour nginx
https://github.com/yaoweibin/...
Pas besoin d'utiliser ip_hash pour stocker la session dans redis