在一些关于问题的建议之后,我开始使用基于 linux 的软件来平衡两台服务器之间的流量。
基本上我们有我们的生产网站和一个备份系统(在远程站点)。产品会不断地镜像到备份中,以保持同步。我们的域名指向 Linux Ubuntu 9.04 服务器(除了负载平衡软件之外,什么都没有安装)。它正在运行最新版本的 Crossroads(又名 XR)。
XR 设置为将所有连接交给实时网络服务器,直到它失去与该服务器的“心跳”连接,一旦发生这种情况,它就会将连接反弹到我们的备份系统。
我遇到的问题表现为我们的网络服务器缺乏响应,基本上客户端将正确格式的 XML 消息传递给 .NET Web 服务,该服务对数据进行一些计算和更改,然后回复 XML 响应,但是客户似乎从来没有得到回应。
我一直在使用wireshark来调查这个问题,它似乎在响应进行到一半时连接被切断或断开(由于我缺乏wireshark经验,我不太确定)。
我一直在与 XR 软件的作者交谈,他们在软件本身中找不到任何可以解释这种行为的原因或问题,并且相信这可能与我正在使用的 linux 发行版或内核问题有关。
谁能帮我解决这个问题,因为我们将在接下来的几周内启用这个系统,这个问题阻碍了我们。
我现在已经从 Ubuntu 切换到 CentOS 4 并再次尝试,现在当我使用wireshark 时,我收到了来自系统的随机回复。有时我会从服务器得到一个完整的 XMl 回复,而下一次尝试我可能只会在 Linux 机器发送 RST 数据包之前得到部分回复。
可能不是最有用的答案,但是您是否尝试过另一个负载均衡器?仅建议您这样做,因为您现在已经 6 天以上没有回复了 :-)
像 HAproxy ( http://haproxy.1wt.eu ) 这样的东西非常好,不需要大量的设置来执行大多数任务,这里是一个示例站点配置:
它是由维护 Linux 2.4 内核树的 Willy Tarreau 编写的,并且在相对普通的硬件上处理 10Gbps+ 吞吐量的基准测试始终如一。使用 Apache + mod_ssl或stunnel处理 SSL 终止也是非常可能的。
在处理 HTTP 流量时,它还可以做一些非常时髦的 Layer7 的事情,它还支持平衡其他协议,SMTP 支持对我来说非常有用!
好的,这与操作系统无关,而是我正在使用的软件(xr aka Crossroads)的问题。在配置 xml 文件中输入一些超时值(感谢软件作者的建议),这似乎已经解决了问题。
这是您需要在# 符号之间添加到配置文件中的条目的示例,给出的超时时间有点过长(1 分钟)
#
#