我知道已经问过这个问题的许多变体,但我仍然找不到满足我需求的好答案。
我想要做的是设置几个(至少 2 个)VPS来托管我的网络应用程序。我想提供一些负载平衡(使用 Varnish 很容易实现)和相对较高的可用性 - 这是我的问题。
使用负载平衡器(我需要在其中一个 VPS 上托管)会引入单点故障,这几乎与只有一台机器来提供内容一样糟糕。
http://i.stack.imgur.com/lFafj.png
而且 AFAIK DNS 循环方法不仅是负载平衡的坏主意,而且不提供故障转移机制。如果其中一台服务器出现故障,一些人(使用缓存的 DNS IP)仍会尝试连接到不可用的服务器。忘记短 TTL - 这不是正确的解决方案。
http://i.stack.imgur.com/mTLRf.png
需要考虑的一件非常重要的事情:我希望将我的VPS 划分到多个数据中心,这样如果一个数据中心的电力或 ISP 出现故障,网站就不会关闭。
我能想到的唯一 2 个解决方案是依赖 dns 循环(如果服务器出现故障,至少将内容提供给一定比例的用户直到恢复),或者在数据中心购买专用服务器,为停电做好准备并配备有几个互联网连接(与租用甚至 10 个 VPS 相比,这是非常昂贵的)。
所以问题是:在拥有多个负载平衡 VPS 时避免单点故障的正确方法是 什么?
请原谅图片。它们只是我的意思的基本示例。
domain-name-system vps high-availability load-balancing round-robin