我目前已经在 ubuntu linux 服务器上很好地设置了心跳,这样如果检测不到心跳服务(无论是因为服务器关闭还是只是心跳服务关闭),它都会转移到辅助服务器,如我的网站上的博客文章中所述。
因此,我们从初始状态开始,工作服务器上的 apache 在过渡状态下死亡,然后辅助服务器上的 apache 在最终状态下启动。目前,如果 apache 发生故障但心跳没有,则不会发生切换。有人知道怎么做吗?
答案1
我曾在生产中成功使用过一个使用 heartbeat 1.x 监控守护进程的潜在解决方案,即让一个 perl 守护进程以一定间隔轮询进程列表,如果未看到进程名称,则启动 heartbeat 待机。您可以配置星期一复制此功能。
Heartbeat 2.x 原生支持此功能,并且ocf_heartbeat_apache资源代理将允许您监控该过程。
还值得注意的是,心跳处于仅维护模式,并且Corosync应该会继承它。
在可能的情况下,我会避免使用主动/被动方法来实现 Web 或应用服务器的高可用性。这种方法浪费资源,而且通常很难水平扩展。在某些情况下,这种情况是不可避免的,但使用 Apache,这种情况很少发生。
您的 Web 应用程序需要共享会话状态,这通常通过将会话存储在数据库或内存中来实现。此时,您可以使用以下解决方案对所有传入连接进行负载平衡:低压开关柜或者Nginx当然,您的代理和负载平衡解决方案需要冗余,以防止单点故障。您也可以为此使用心跳。