这是我当前的上游定义
upstream mybackend {
server cache-server;
server app-server-1 backup;
server app-server-2 backup;
}
每个请求都转到缓存服务器,当缓存服务器关闭时,请求将转到应用服务器 1,而不会在应用服务器 1 和应用服务器 2 之间进行平衡。
可以做这样的事吗?
upstream mybackend {
server cache-server;
server app-server-cluster backup;
}
upstream app-server-cluster{
server app-server-1;
server app-server-2;
}
...当缓存服务器宕机时,nginx 将接管应用服务器集群并在 1 和 2 之间实现平衡?
答案1
不,目前不支持这种方式的嵌套。文档位于http://nginx.org/docs/http/ngx_http_upstream_module.html#serverserver
该指令接受什么类型的参数非常清楚。
另一方面,您是否确定在现有配置中nginx
,如果同时指定 appserver-1 和 -2,则不会平衡它们之间的负载backup
?文档并未具体说明在这种情况下应采取何种行为;我认为指定两台backup
服务器应该可以nginx
平衡所有这些备份服务器之间的请求;如果不是这种情况,但您需要这样做,那么也许您应该记录 RfE:http://nginx.org/en/support.html。
答案2
当然,您可以在同一 nginx.conf 中的其他端口上为您的 app-server-XX 创建单独的“服务器配置”,并根据需要进行配置。然后,您可以按照之前所说的在“mybackend”上游中使用它。