有没有办法在Linux下执行以下操作:
- 有两个 Web 服务器,主服务器和备份服务器
- 有两个数据库服务器(postgres),主服务器和备份服务器
- Web 服务器彼此同步,即配置/内容/应用程序相同
- 备份数据库与主数据库持续同步。
- 如果任何一个主服务器出现故障,它将被备份服务器即时替换。
- 当主数据库服务器恢复时,备份服务器中的所有数据都会上传到主数据库服务器。
为了使其变得更加复杂,一个重要的细节是这两个服务器实际上是 VPS,它们由不同的提供商托管在不同的国家/地区,因此同一子网/机架等中的服务器的明显解决方案都无法在这里发挥作用。
本质上,如果可能的话,我需要热插拔自动工作,无需或尽量减少用户干预。恢复过程最好是自动的,但可以包括一些手动步骤。
答案1
http://www.linuxvirtualserver.org/
允许您在生产和备份服务器前面放置一个负载均衡器(或更好的是两个)。
您可以单独使用心跳,这样可以让一个公共 IP 由两个 IP 提供服务。它必须感知到主 IP 或辅助 IP 发生故障,然后发出公告以成为该公共 IP。
你可能会得到类似这样的结果:
Public IP 1.2.3.4
Primary Server 1.2.3.5
Backup Server 1.2.3.6
每个人都会看到单个 IP,该 IP 实际上由处于“活动”状态的机器提供服务
答案2
将 haproxy 或 Nginx 作为前端负载均衡器。如果主服务器发生故障,它将监控并将流量从主服务器重定向到备份服务器,反之亦然,即自动故障转移。
对于数据库之间的数据同步,请查看多主复制。
答案3
您可能应该查看 Web 层的 DNS 故障转移,或许还应该查看 DB 层的 Tungsten Cluster。
干杯