Ubuntu Linux 和 Crossroads 负载均衡器无法正常工作

Ubuntu Linux 和 Crossroads 负载均衡器无法正常工作

在针对我使用基于 Linux 的软件来平衡两台服务器之间的流量所遇到的问题获得一些建议后。

基本上,我们有我们的生产网站和备份系统(在远程站点)。生产被不断地镜像到备份以保持它们同步。我们的域名指向 Linux Ubuntu 9.04 服务器(全新安装,除负载平衡软件外没有任何其他内容)。它运行的是最新版本的 Crossroads(又名 XR)。

XR 设置为将所有连接转交给实时网络服务器,直到它与该服务器失去“心跳”连接,一旦发生这种情况,它就会将连接反弹到我们的备份系统。

我遇到的问题表现为我们的 Web 服务器缺乏响应,基本上,客户端将正确格式的 XML 消息传递给 .NET Web 服务,该服务对数据进行一些计算和更改,然后使用 XML 响应进行回复,但是客户端似乎从未收到响应。

我一直在使用 wireshark 来调查这个问题,似乎在响应过程中连接被切断或丢失(由于我缺乏使用 wireshark 的经验,所以不太确定)。

我一直在与 XR 软件的作者交谈,他们无法在软件本身中找到任何可以解释这种行为的原因或问题,并且相信这可能与我正在使用的 Linux 发行版或内核问题有关。

有人能帮助我解决这个问题吗,因为我们将在接下来的几周内上线这个系统,但这个问题阻碍了我们的进展。

我现在已经从 Ubuntu 转到 CentOS 4 并再次尝试,现在当我使用 wireshark 时我会从系统获得随机回复。有时我会从服务器获得完整的 XMl 回复,而下一次尝试时我可能只会在 Linux 机器发送 RST 数据包之前收到部分回复。

答案1

可能不是最有用的答案,但你试过其他负载均衡器吗?我只能建议你这么做,因为你已经 6 天多没有收到回复了 :-)

类似 HAproxy(http://haproxy.1wt.eu)非常好,并且不需要大量设置即可执行大多数任务,这是一个示例站点配置:

listen corporate_web_live
  bind 1.2.3.4:80  # www.site.com
  bind 1.2.3.5:80  # www.site.net
    option httpchk HEAD /server.txt HTTP/1.0
    cookie HAPSRV insert postonly indirect
    server webapp-corp-1 10.0.0.1:80 weight 50 maxconn 150 slowstart 30s cookie WAC1 check
    server webapp-corp-2 10.0.0.2:80 weight 50 maxconn 150 slowstart 30s cookie WAC2 check

它是由 Willy Tarreau 编写的,他维护着 Linux 2.4 内核树,并且一直在基准测试中处理相对常见的硬件上 10Gbps 以上的吞吐量。使用 Apache + mod_ssl 处理 SSL 终止或者stunnel 也很有可能。

在处理 HTTP 流量时,它还可以执行一些非常时髦的 Layer7 操作,并且它还支持平衡其他协议,SMTP 支持对我来说非常有用!

答案2

好的,事实证明这与操作系统完全无关,而是我使用的软件(xr 又名 Crossroads)的问题。在配置 xml 文件中输入一些超时值(感谢软件作者的建议),这似乎解决了这个问题。

这是您需要在 # 符号之间添加到配置文件中的条目的示例,给出的超时时间有点过长( 1 分钟)

<service>
    <name>web_http</name>
    <server>
      <address>x.x.x.x:80</address>
      <type>tcp</type>
      <dispatchmode>first-available</dispatchmode>

#

      <clienttimeout>60:60</clienttimeout>
      <backendtimeout>60:60</backendtimeout>

#

    </server>
      <backend>
        <address>x.x.x.x:80</address>
      </backend>
      <backend>
        <address>x.x.x.x:80</address>
      </backend>
      <backend>
        <address>x.x.x.x:80</address>
      </backend>
  </service>

相关内容