有许多不同的系统可以平衡负载并在生产服务器中实现冗余(不仅仅是Web服务器)
- 轮询DNS
- Linux虚拟服务器
- Cisco本地导演
- F5 BigIP
- Windows网络负载平衡(NLB)
- 等等?
如果您在生产中使用其中之一(或其他),那么使用的是哪一个?它对您的工作效果如何?您已经评估过其他方案了吗?
有许多不同的系统可以平衡负载并在生产服务器中实现冗余(不仅仅是Web服务器)
如果您在生产中使用其中之一(或其他),那么使用的是哪一个?它对您的工作效果如何?您已经评估过其他方案了吗?
我们目前使用Zeuz ZXTM负载均衡器,并且迄今为止感到满意。然而,我们的托管提供商最初在运行防火墙服务的机器上配置了它的虚拟机。这是一个相当愚蠢的错误,因为连接在流量成为问题之前就已经饱和了。一旦移动到自己的专用盒子上,我们能够处理100Mb/s的出站流量,没有失败或问题(在4Gb/s突发互联网管道上)。
轮询 DNS 可以实现负载均衡,但不能实现冗余。如果其中一个服务器出现故障,它仍然会承担其份额的请求。
我们使用 Apache mod_jk 在一对 Java 应用服务器之间处理负载平衡和冗余。这非常有效,并且很简单。
我们还有一个冷备份 Apache 服务器,以防主服务器出现故障。理想情况下,我们将使用 Linux-HA 来实现 Apache 的热备份,但我们不确定是否可以证明其复杂性。
加州大学洛杉矶分校的一个部门使用 Juniper Acceleration Platform 并对此非常满意。它甚至接管了 SSL 加密的任务,而基于硬件的 SSL 加速效果非常好!他们目前正在将更多的服务迁移到该平台上运行。
以下是它的亮点:
这不便宜,但对于大量流量的公司非常高效。请查看加州大学洛杉矶分校选择的规格此处。
我相信我们使用的是带有粘性会话的轮询。我们必须设置ASP/ASP.Net会话信息以保留用户与具有会话的服务器的连接。
我们曾经遇到过一个小问题,涉及从http切换到SSL,导致我们的网站将已认证的用户发送到非安全页面,未认证的用户则被发送到安全登录页面,这看起来有点奇怪,但最终解决了这个问题,通过SSL终止实现了最佳解决方案,除了回到单个服务器这个即时解决方案。
也许会有一天需要使用更复杂的方法来确定哪个服务器是“最不繁忙的”,并将下一个请求发送到该机器,但我不确定基础架构人员如何获得负载均衡器的这种功能。