我使用 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。