我正在考虑为 Apache 和 MySQL 设置自动故障转移。我计划在两个 Apache 盒和两个 MySQL 盒前面放置一个小型代理服务器。Apache 将不时地从主服务器 rsync 到从服务器的数据,MySQL 将设置为主/从服务器以进行复制。如果发生故障,备份盒可以接管,直到主服务器重建。
前面的代理服务器将作为交通警察与某种心跳软件一起运行(此时我并不寻求负载平衡)。这样,我就不必担心在主设备出现故障时更换防火墙。Linux 高可用性最好的选择或者有什么建议吗?
答案1
Linux HA 是一款不错的工具集。如果您想要简单,请使用 heartbeat 1;heartbeat 2 适用于 2 个以上节点的集群和 XML 配置。1 足以满足大多数简单的 2 节点情况。
但是,虽然我同意在应用程序前面安装代理始终是一个好主意(运行来自一个虚拟服务器的多个服务器等),但您描述的设置听起来像是引入了一个新的 SPF:代理。
在您的情况下,最好做的是在主动-主动配置中运行两个服务器,包括两个服务器上的完整 Web 服务和完整代理服务(!)。
只需设置心跳来接管三个 IP:一个用于活动 MySQL 服务器,一个用于活动 Web 服务器,一个用于活动代理(只有最后一个需要公开)。
然后将代理设置为始终转到内部的“活动 Web 服务器”IP,并将 Web 服务器设置为转到“活动 DB 服务器”IP。
当您准备好进行负载平衡配置时,您只需放弃 Web 服务器 IP 的切换,而是将两个 Web 服务器都放入代理的后端服务器组中。
初始设置可能如下所示:
Server A (Apache on Port 80) Server A (Apache Port 8080) Server A MySQL <-----------
| \ | \ | \
Web <-> Public Proxy IP >-> Shared Private Web IP >--> Shared Private MySQL IP | Mysql Synchronization Link
| / | / | /
Server B (Apache on Port 80) Server B (Apache Port 8080) Server B MySQL <-----------
然后,当您准备就绪时,您可以无缝地进入真正的负载平衡(如 Web 中提到的)和 MySQL 集群,而无需用户可见的变化。
最重要的是:仍然将您的应用程序立即置于代理后面(即使代理“实际上”只是相同的服务器)将会尽早暴露您的 Web 应用程序中的许多错误(关于链接创建中的主机名和路径的假设等)!
答案2
http://studyhat.blogspot.com/2009/11/clustering-linux-ha.html
上面的链接帮助你设置Linux HA