Verwenden Sie Nginx, um einen einfachen Lastausgleich zu implementieren. Die Konfiguration ist wie folgt
...
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;
}
...
}
}
...
Das aktuelle Problem ist: Wenn beide Tomcats normal sind, kann Nginx Anfragen normal an den angegebenen Server verteilen. Die Gewichtung kann auch funktionieren, aber wenn ich einen der Tomcats ausschalte, bleibt die Anfrage hängen werden Anfragen von nginx an den ausgefallenen Server verteilt. Wie geht man mit dieser Situation um? Verfügt ngxin über eine entsprechende Lösungsstrategie? Gibt es eine Möglichkeit für Nginx, den Betriebsstatus von Clusterservern zu überwachen? Wie konfiguriere ich?
upstream 有两个参数 max_fails和fail_timeout,如果某台server在fail_timeout时间内出现了max_fails次连接失败,那么Nginx会认为其已经挂掉了,从而在fail_timeout时间内不再去请求它。
fail_timeout默认为10s,max_fails默认为1。
另外 有个第三方模块 nginx_upstream_check_module 专门用来检测后端server的健康情况
。
yaoweibin/nginx_upstream_check_module: Health checks upstreams for nginx
https://github.com/yaoweibin/...
不用ip_hash的方式,把session存在redis里面