我正在使用 HAProxy 反向代理和 Keepalive 构建一个高可用性的 Apache / MySql 虚拟服务器组。
我知道我将使用浮动公共 IP,然后配置 HAProxy 以将流量中继到配置文件中的服务器。
据我所知,所有服务器实例都需要位于同一网络上,这是一个问题,因为如果数据中心发生故障,服务器组就会发生故障。如何创建一个高可用性设置,而不需要所有虚拟服务器都位于一个网络下。我认为问题出在浮动 IP 和 HAProxy 上。
例如:
Digital Ocean 上有 2 台服务器 Linode 上有 2 台服务器 aws 上有 2 台服务器
Digital Ocean 对此进行了详细说明页“两台服务器必须位于同一数据中心内,并且应启用专用网络。”
他们正在使用 keepalive。
答案1
处理多站点故障转移的正常方法是在站点 A 上安装一对负载平衡器,采用主/从故障转移配置。然后在远程站点上安装一对相同的负载平衡器。
如果站点 A 上的所有后端服务器都发生故障,则使用站点 B 上的公共 VIP 作为后备(当然,跨 WAN 的延迟很高)...但要使用适当的基于 DNS 的负载平衡服务(如 Amazon 路由 53(具有健康检查和故障转移功能))进行备份,这样很快就不会有流量流向站点 A。
如果您在两个具有相同 IP 方案的站点之间拥有一个真正快速延伸的 VLAN,那么您只需一对负载均衡器即可实现这一点。
但听起来你应该忘记 HAProxy,转而使用 Amazon Route 53?(除非你遇到持久性问题。)
答案2
您还可以通过从本地机器到远程云执行 iptables 重定向来“模拟”本地网络。