答案1
虽然它不支持多备份服务器,正如@Alberto Mendoza 回答的那样——
如果您将备份放置到运行NGINX
负载均衡器的另一个 VPS 中以进行其自己的备份……这是我目前用于多区域网络的一种解决方法。
upstream routing {
server main_server:8080 max_fails=2 fail_timeout=5;
server backupServer1:8080 max_fails=1 fail_timeout=5;
server backupServer2:8080 backup;
}
如果您的主服务器在 2 次故障中没有响应 —— 它将尝试您的第一个 VPS 备份 —— 如果由于某些奇怪的原因(例如 DDOS 或其他原因)也关闭了 —— 它将转到您的第三个 VPS。您可以根据需要继续进行菊花链连接。
答案2
这是我 6 年多以来的 NGINX 配置,它允许多个备份服务器。但是,我认为它需要位于不同的端口上。如果使用同一个端口并且端口繁忙,则无法正确备份。我使用 PM2 在 5 个端口上启动我的应用程序,我的 nginx 使用这些应用服务器。
server 127.0.0.1:3000; # NodeJS Server 1
server 127.0.0.1:3002; # NodeJS Server 2
server 127.0.0.1:3003; # NodeJS Server 3
server 127.0.0.1:3004 backup; # NodeJS Server 4 - backup 1
server 127.0.0.1:3005 backup; # NodeJS Server 5 - backup 2
答案3
嗯,最近我也做了测试......就像@alberto-mendoza一样:
upstream a {
least_conn;
server main_server:8080 max_fails=2 fail_timeout=5;
server backup1:8080 backup max_fails=1 fail_timeout=30;
server backup2:8080 backup max_fails=1 fail_timeout=60;
}
当主服务器出现故障时,nginx 会在备份服务器之间进行正确的负载平衡(使用与主服务器相同的平衡方法)。
它还接受备份服务器的 max_fails 和 fail_timeout 等参数。
答案4
我做了一个测试,似乎nginx
不支持多备份服务器。
upstream a {
server main_server:8080 max_fails=2 fail_timeout=5;
server backup1:8080 backup;
server backup2:8080 backup;
}
每当main_server:8080
发生故障时,backup1:8080
都会正确回复。当main_server:8080
和backup1:8080
发生故障时,连接会被拒绝,并且永远不会到达backup2:8080
。