【发布时间】:2011-09-08 15:37:47
【问题描述】:
为动态网站实现高可用性的最佳方式是什么?如果我在另一台服务器上创建第二个副本并且不希望使用负载均衡器,因为它会扰乱用户会话,那么最好的选择是什么?
【问题讨论】:
-
负载均衡器应该能够处理会话的事情。
标签: apache web load-balancing high-availability
为动态网站实现高可用性的最佳方式是什么?如果我在另一台服务器上创建第二个副本并且不希望使用负载均衡器,因为它会扰乱用户会话,那么最好的选择是什么?
【问题讨论】:
标签: apache web load-balancing high-availability
您可以将会话数据存储在数据库中,从而解决该问题,然后您可以将请求轮询到应用程序服务器。
(良好)负载均衡器可以配置为“粘性”,这意味着它们每次都将来自同一个 IP 的请求发送到同一个服务器。
【讨论】:
即使您有一个负载平衡器位于两个后端网络服务器前面,您也只需将单点故障转移到负载平衡器而不是网络服务器上。所以你的应用程序仍然不是高可用的。
我强烈建议使用负载平衡器和至少一对 Web 服务器。在工作中,我们使用 HA 代理,它完全能够确保会话是“粘性的”,并被发送到同一个 Web 服务器,除非它发生故障,它将在那里进行故障转移。
为了使您的负载平衡器具有高可用性,您可以设置两个彼此镜像的负载平衡服务器。为两个负载均衡器分配一个虚拟 IP。编写一个脚本来轮询另一台服务器以检查它是否已关闭;如果它出现故障,让该脚本获取该虚拟 IP 地址。该脚本应该在两台服务器上都运行。
This link 描述了一种管理虚拟 IP 地址的方法。类似的文章已经为大量的 linux 发行版写过,但都是基于相同的方法。
【讨论】:
负载平衡器。它们应该以可以处理会话的方式进行配置。也许每次都将相同的 ip 发送到相同的后端。或者将它们存储在数据库中,或者如果出于某种我没有想到的原因需要非常快的共享内存。
【讨论】: