我有一个名为LB1的负载平衡器,当它在*上收到请求时,它会在我的2个ip之间进行平衡。领域通用域名格式。我设置了一个max\u fails和一个fail\u超时,以便在一个关闭时重定向另一个上的流量:
upstream upstreamdomain {
least_conn;
server X.X.X.1 max_fails=1 fail_timeout=10s;
server X.X.X.2 max_fails=1 fail_timeout=10s;
}
server {
listen 80;
server_name ~^(?<subdomain>.+)\.domain.com;
location / {
proxy_set_header Host $subdomain.domain.com;
proxy_pass http://upstreamdomain;
}
}
在每个X.X.X.1和X.X.X.2上,我的应用程序都运行在Y进程上,我还使用nginx管理进程之间的负载平衡
upstream defaultupstream {
least_conn;
server 127.0.0.1:9000 max_fails=1 fail_timeout=10s;
server 127.0.0.1:9001 max_fails=1 fail_timeout=10s;
server 127.0.0.1:9002 max_fails=1 fail_timeout=10s;
}
server {
listen 80;
server_name ~^(?<subdomain>.+)\.domain.com;
location / {
proxy_set_header Host $subdomain.domain.com;
proxy_pass http://defaultupstream;
}
}
当服务器崩溃时,我希望LB1在另一个服务器上重定向流量,并且
它工作得很好
.
当一个进程在X.X.X.1或X.X.X.2上崩溃时,我希望nginx在其他进程上重定向trafic,并且
它工作得很好
.
当所有进程都在X.X.X.1或X.X.X.2上崩溃时,我的问题是X.X.X.1或X.X.X.2上的nginx返回502服务器不可用
似乎没有增加max_的502响应在LB1上失败,LB1仍然认为没有工作进程的服务器是活动的。
如何在LB1上配置nginx以将502评估为失败?
如果不可能,在X.X.X.1和X.X.X.2上,我必须回复什么(503504.?)为了让我的LB1认为服务器停机?
----------------------编辑------------------
幸亏
俄克拉何马州
,通过在LB1配置中添加以下行进行修复,以强制nginx在出错、超时或http 502、503和504时更改上游:
proxy_next_upstream error timeout http_502 http_503 http_504;
LB1形态现在是:
upstream upstreamdomain {
least_conn;
server X.X.X.1 max_fails=1 fail_timeout=10s;
server X.X.X.2 max_fails=1 fail_timeout=10s;
}
server {
listen 80;
server_name ~^(?<subdomain>.+)\.domain.com;
location / {
proxy_set_header Host $subdomain.domain.com;
proxy_pass http://upstreamdomain;
proxy_next_upstream error timeout http_502 http_503 http_504;
}
}
提前谢谢。
当做