NGINX ip_hash 负载平衡不起作用

NGINX ip_hash 负载平衡不起作用

我已经设置了 NGINX 来平衡对我的 Web 应用的请求。一个前端服务器将请求传递给两个后端服务器。一切正常。

但是,我一直在使用 ip_hash 指令来确保用户每次都由同一台服务器提供服务。这似乎不起作用 - 请求在两个后端服务器之间交替,这导致用户会话出现问题。

配置应该很简单,所以我不知道哪里出了问题——任何想法都值得赞赏。

upstream webservers  {
  ip_hash;
  server node1.mysite.com;
  server node2.mysite.com;
  server localhost:8080 backup;
}

server {
    listen 80;

    server_name www.mysite.com;

    location / {

        proxy_set_header    Host                $host;
        proxy_set_header    X-Real-IP           $remote_addr;
        proxy_set_header    X-Forwarded-For     $proxy_add_x_forwarded_for;
        proxy_set_header    X-Forwarded-Proto   $scheme;
        proxy_pass  http://webservers;

    }

}

答案1

我找到了一种解决方案。

看起来 ip_hash 与备份指令不兼容,并且可能与上游块中的任何其他指令不兼容。

一旦我删除了备份行,ip_hash 就可以正常工作。

但是,这似乎很奇怪。我使用的是最新版本的 NGINX - 1.6 - 但在较新的文档中找不到任何内容表明 ip_hash 和备份指令仍然不兼容。

答案2

backup 将服务器标记为备份服务器。当主服务器不可用时,将转而使用备份服务器的连接。此参数不能与哈希随机的负载平衡方法。您可以在此链接找到它 http://nginx.org/en/docs/stream/ngx_stream_upstream_module.html

相关内容