我有两台 VPS 服务器,分别来自两家不同的托管公司。如果第一台 VPS 不可用,我想回退到第二台 VPS(最好是自动的)。我知道,如果我有一个具有 root 访问权限的单个负载均衡器,我可以将其设置为在不同的后端服务器之间切换。但是,使用来自两家不同托管公司的 VPS 是否可行?谢谢。
答案1
这一切都取决于具体情况。实现更高可用性的标准方法确实是负载均衡器。问题是您至少需要两个负载均衡器
画一张小图来说明一下:
+-----------+
+--->| Backend 1 |
+----------------+ | +-----------+
WAN --->| Loadbalancer 1 |---+
+----------------+ | +-----------+
| +--->| Backend 2 |
| Fallback +-----------+
v
+ - - - - - - - -+
| Loadbalancer 2 |
+ - - - - - - - -+
解释
负载均衡器位于所有后端服务器之前,并代理所有请求到后端服务器。辅助负载均衡器也保持在线,并检查主负载均衡器是否可访问。如果主负载均衡器发生故障,辅助负载均衡器将接管其 IP 并开始提供服务。
(此配置的)优点
- 负载均衡器本身不需要承担太多负载,就可以分配流量,因此可以比后端服务器服务更多的用户。[1]
- 负载均衡器可以检测后端是否无法再处理流量,并可以停止向后端发送流量 [2]
- 负载均衡器可以为后端缓存静态文件
- 负载均衡器可以终止 SSL [3][4]
- 如果负载均衡器发生故障,它可以回退到辅助均衡器而无需停机[5][6]
缺点
- 它需要更多的钱
- 如果平衡器前面的网络出现故障,这将无济于事。
脚注
[1] 当然,负载均衡器需要的带宽要大于后端服务器的最大带宽总和(这不一定是接口的最大带宽,具体取决于应用程序)
[2] 这不仅仅是好事。如果两个后端都达到或接近其最大容量,并且负载均衡器关闭了一个后端,则另一个后端将获得所有流量,整个系统将崩溃。这需要很好的调整
[3] 事实上,如果负载均衡器不想盲目地通过连接路由流量,就必须这样做。
[4] 如果你不信任后端网络,也许你必须在后端之后重新建立一个新的 SSL 连接
[5] 你必须确保当主服务器宕机时,它会一直处于宕机状态,直到你再次需要它为止,以防止诸如切换和 IP 重复使用之类的问题
[6] 你必须确保负载均衡器之间的连接非常非常稳定
答案2
如果您有单个负载均衡器,它在高可用性方面不会有太大帮助,您仍然会有一个单点故障。内容分发网络 (CDN) 曾经是一种可行的方法,但您可能需要等待更多答案......
答案3
即使您在第三个位置有负载均衡器(您可以在 HA 主动-备用中配置它们),您仍然容易出现网络问题。由于您的两个 VPS 可能位于两个不同的数据中心,因此您的网络性能可能会很差,因为您的负载均衡器会联系 VPS,发出请求并将响应转发给客户端,因此如果包含平衡器的数据中心离线或遇到网络问题,您的 2 个 VPS 就毫无用处了。
答案4
发布的所有内容都很好且正确。但是,我可以看到实现所述目标的不同方法(由第三方托管公司托管的后备系统):
DNS 回退
使用此方法,DNS 提供商会检查主系统的可用性,如果被检查的系统没有正确响应,则切换到后备系统。
市场上有很多供应商提供此类服务(Amazon Route 53、DNS Made Easy ......)。此外,您还将获得更快的 DNS 系统(全球分布、任意播送监听 DNS 服务器)。
但- 这不是高可用性!如果发生中断,需要一些时间来识别中断并调整 DNS。但也许这已经足以满足您的要求了。