我有多个运行 nginx 反向代理的服务器指向同一个 IP 地址,因为我需要保持 100% 的正常运行时间,而且我的服务依靠它们来向恶意攻击者隐藏真实 IP,不仅如此。
我想知道是否存在一种 DNS 技术或其他某种魔法,以便能够将单个 IP 地址或域名指向不同的 IP 地址(我的一个反向代理服务器),以防其中一个出现故障。
我希望用户能够通过一个静态 IP 或域访问我的服务,然后将他指向我选择的当前正在工作的反向代理。
本质上它需要能够将用户重定向到我选择的其他 IP,并且更新真快因为如果一台服务器宕机,他需要立即将流量转移到另一台服务器(在理想情况下)。它需要具有 DDoS 防护功能,否则一开始就毫无意义。
我对网络一无所知,请不要对我太苛刻,感谢您的任何建议
答案1
我会在这些服务器上安装 keepalive。这样,只有其中一台服务器拥有“真实”IP 地址,如果该服务器发生故障,其中一台服务器将接管。
答案2
一般来说,你需要的是 VIP(虚拟 IP)。一些路由器可以做到这一点。使用冗余路由器可能会获得更高的可用性
您可以使用代理监听单个 IP 地址来提供此功能。 类似这样的应用程序haproxy
可以为您完成此操作。
无论如何,您都需要进行健康检查来测试服务器的状态。这将触发切换到其他服务器。如果代理发生故障,您将失去访问权限,但您可以在主动被动对中使用冗余代理。如果主动服务器发生故障,可以使用 keepalive 进程自动激活被动服务器。
任何一种选择都允许您将负载分散到多个服务器上。代理服务器可以针对不同的上下文(路径)使用不同的服务器。某些路由器还可以进行基于上下文的路由。
答案3
另一个需要注意的选择是轮询 DNS,其中您只需为同一个主机名指定多个 IP。
但也有局限性:
- 客户端如何处理这些多个 IP 取决于客户端。我认为浏览器倾向于连续尝试它们
- 如果发生故障,这不会从列表中清除失败的 IP。