我们正在寻找 Debian Squeeze,开源多站点“wan 故障转移”解决方案(如果有这方面的文章请见谅 - 没有看到)。多站点是关键……
在小型办公室环境中,我们希望将两台服务器放置在两个不同的站点。每台服务器都有自己的公共 WAN 静态 IP 地址。
例如,Site1:24.xxx.xxx.xxx 和 Site2:52.xxx.xxx.xxx
我们计划使用 DRDB、pacemaker 和 corosycn 来保持两个盒子同步。
问:如果站点一的连接中断,有没有办法立即将故障转移到站点二?
我们看到的起搏器示例似乎是为单个站点配置的(我们可能没有明白这些示例是多站点的)。
VIP 就是用来干这个的吗?如果我们在第三个站点(例如云服务器)有一台具有公共 WAN 静态 IP 的第三台服务器,并将其用作 VIP,那么我们是否走在正确的轨道上?也就是说,所有流量都指向这台第三台服务器,该服务器将其路由到 Site1 的公共 IP,如果 Site1 出现故障,这台第三台服务器会将所有流量路由到 Site2?
谢谢!
答案1
DNS 故障转移
DNS
/ \
SiteA SiteB
大多数 DNS 故障转移 TTL 将设置为 30 秒,在您的服务检查将站点标记为“坏”之后,最多允许 60 秒的中断时间,以便站点 IP 地址停止向客户端公布。大多数 DNS 缓存将遵守 TTL,有些则不遵守。有些客户端也可以缓存 IP(java!)。
负载均衡器
LB
/ \
SiteA SiteB
您在帖子中提到的单个云负载均衡器 (vip) 的“VIP”选项确实允许您更快地对站点进行故障转移,因为您可以在服务被标记为不良时立即将流量从一个站点转移到另一个站点。但这确实增加了单点故障。
负载均衡器 + DNS 故障转移
DNS
/ \
LB LB
| \ / |
| X |
| / \ |
SiteA SiteB
如果您有两个基于云的负载均衡器(最好位于不同的站点或不同的提供商)并在它们前面设置 DNS 故障转移,那么您可以在检测到故障时立即将客户端从 SiteX 移动到 SiteN,并且在负载均衡器发生故障时也能得到保护,这种情况比通过办公室的网络链接托管的虚拟桌面服务发生故障的频率要低得多。
如果您控制自己的 IP 范围并拥有 BGP 路由器,还有其他方法可以通过 BGP 路由和 BGP 任播在网络级别实现故障转移。这听起来有点超出您的目标?
为了使任何故障转移都能顺利进行,您需要对虚拟桌面服务进行彻底的服务检查,以确认站点确实在运行。我不确定除了身份验证之外,您还能对虚拟桌面进行多大程度的检查,除非您编写了一个非常漂亮的客户端。也许您还可以提供来自您站点的系统指标,这可能有助于指示站点是否“变坏”。这些可能来自您在站点内部进行的集群,因为这必须对服务的状态有一个很好的了解。
此外,对于多个站点,需要考虑客户端最终连接到哪里。它们是否可以随意切换。它们是否最好一直保持在一条路径上。主动/被动是更好的方法吗?地理位置是一个重要因素吗?这些都与您正在实施的内容非常相关。始终测试您认为最好的方法,并始终测试您能想到的每个故障场景。