多服务器、多应用实例的Nginx负载均衡

多服务器、多应用实例的Nginx负载均衡

我使用 nginx 来平衡我的 tornado 应用程序的负载。server_A 上有 3 个相同应用程序的实例(监听不同的端口)。以下是我的配置。

http {
    upstream myapp1 {
        server server_A_IP:8888;
        server server_A_IP:8887;
        server server_A_IP:8886;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://myapp1;
        }
    }
}

现在我有另一个 server_B,并且我在此服务器上启动了 3 个实例,因此我在配置的上游添加了 3 行。

   upstream myapp1 {
    server server_A_IP:8888;
    server server_A_IP:8887;
    server server_A_IP:8886;

    server server_B_IP:8888;
    server server_B_IP:8887;
    server server_B_IP:8886;
}

如果我在每台服务器上启动 10 个实例或者向上游添加大量服务器,情况就会很糟糕。

有没有合适的方法可以做到这一点? 推荐的负载平衡多服务器方法是什么? 谢谢!

答案1

正确的方法是使用专门的工具进行平衡。

server另一种方法非常简单,就是拥有指向多个 IP 的域名并在指令中使用该域名。

http://nginx.org/en/docs/http/ngx_http_upstream_module.html#server

一个域名解析到多个IP地址,一次定义多个服务器。

所以你会用

upstream myapp1 {
    server upstream.example.net:8886;
    server upstream.example.net:8887;
    server upstream.example.net:8888;
}

并在需要时将 IP 添加到 DNS。

相关内容