Nginx负载均衡器策略-始终向同一服务器进行流量

时间:2019-02-08 23:44:43

标签: nginx nginx-location nginx-reverse-proxy

我在不同的大陆(美洲和欧洲)有2个不同的上游

我希望每个服务器始终将流量发送到同一台服务器,但是如果停机,我需要在每台服务器上指定2台服务器-流量应该发送到备用服务器。

问题在于没有执行此操作的策略。我在首选服务器上进行了weight = 1000000000的变通方法,但是我觉得这不是正确的方法。

upstream US_UPSTREAM  {
    ip_hash;
    server 2.2.2.2 weight=100000000 max_fails=10  fail_timeout=3600s;
    server 1.1.1.1 #should only be used as backup, not round robin or any other strategy
}

upstream EU_UPSTREAM {
    ip_hash;
    server 1.1.1.1 weight=100000000 max_fails=10  fail_timeout=3600s;
    server 2.2.2.2 #should only be used as backup, not round robin or any other strategy
}

1 个答案:

答案 0 :(得分:0)

好吧,终于找到了解决方法。

仅备份无效。如果第一台服务器处于脱机状态,我会从中获得502。使之起作用的关键是在第二台服务器上添加备份,并在位置上设置错误:

location / {
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection "upgrade";
      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forward-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forward-Proto http;
      proxy_set_header X-Nginx-Proxy true;


      proxy_pass http://$preferred_upstream$request_uri;
      *proxy_next_upstream error http_502;*
}

上游

upstream eu_upstream {
    ip_hash;
    server 1.1.1.1 max_fails=5 fail_timeout=3600s;
    server 2.2.2.2 *backup*;
}