AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 102754
Accepted
JamesRyan
JamesRyan
Asked: 2010-01-15 08:58:06 +0800 CST2010-01-15 08:58:06 +0800 CST 2010-01-15 08:58:06 +0800 CST

HAProxy 检查说服务器在启动时已关闭

  • 772

我正在尝试使用 UCARP 和 HAProxy 在负载平衡配置中设置 2 个 Glassfish 服务器

Server1有 2 个 IP xxx17 和 xxx18

HAProxy 仅在 xxx18 上侦听,Glassfish 仅在 xxx17 上侦听,使用以下配置运行...

global

maxconn 4096
debug
user haproxy
group haproxy

defaults

mode http
retries 3
option redispatch

listen wms x.x.x.18:8080
source x.x.x.18
option httpchk
balance leastconn
server Server1 x.x.x.17:8080 check inter 2000 fastinter 500 fall 2 weight 50
server Server2 x.x.x.19:8080 check inter 2000 fastinter 500 fall 2 weight 50

具有 1 个 IP xxx19 的Server2正在运行 Glassfish

即使我可以手动从 xxx17:8080 获取页面并收到 200 OK 响应,HAProxy 说 Server1 已关闭并且不会将任何请求定向到它。我找不到任何理由。

以下是带有检查的 Server1 访问日志的摘录...

"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:44:23 +0000" "OPTIONS / HTTP/1.0" 200 0
"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:44:23 +0000" "OPTIONS / HTTP/1.0" 200 0
"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:44:23 +0000" "OPTIONS / HTTP/1.0" 200 0
"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:44:29 +0000" "OPTIONS / HTTP/1.0" 200 0
"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:44:29 +0000" "OPTIONS / HTTP/1.0" 200 0

这是带有检查的 Server2 访问日志的摘录...

"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:58:25 +0000" "OPTIONS / HTTP/1.0" 200 0
"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:58:25 +0000" "OPTIONS / HTTP/1.0" 200 0
"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:58:31 +0000" "OPTIONS / HTTP/1.0" 200 0
"x.x.x.18" "NULL-AUTH-USER" "14/Jan/2010:14:58:31 +0000" "OPTIONS / HTTP/1.0" 200 0

如果我删除 httpchk 选项,则 Server1 会检查为 UP,但这不是永久解决方案,因为如果响应确实失败,我们需要它正确地进行故障转移。

有任何想法吗?

(HAProxy 是 v1.3.22)

Addn:我刚刚尝试添加运行 Glassfish 但在 Windows 上的 server3 xxx13,当它启动并可以从代理机器访问时,它也会显示失败。

Addn2:安装haproxy v1.4后得到错误码,报错Layer7 invalid response info: "HTTP/1.1 "。当我们手动检索页面时,UP 和 DOWN 服务器都返回 HTTP/1.1 200 OK 作为第一行。

所以在运行wireshark之​​后看看发生了什么。在工作的 glassfish 服务器(以及我检查过的所有其他网络服务器)上,响应 HTTP/1.1 200 OK 都出现在第一个数据包中。在不工作的 glassfish 服务器上,响应来自 3 个 HTTP/1.1 数据包,然后是 200,然后是 OK。

那么知道为什么 HAProxy 不处理多个数据包或如何配置 glassfish 不拆分它吗?(maxKeepAliveRequests=1 已经)

linux glassfish haproxy
  • 3 3 个回答
  • 14591 Views

3 个回答

  • Voted
  1. Best Answer
    JamesRyan
    2010-01-23T02:48:39+08:002010-01-23T02:48:39+08:00

    答案是最新版本的 Glassfish 将响应拆分为多个数据包。

    我在 haproxy邮件列表上发帖,得到了非常快的回复。

    Krzysztof Oledzki 证实 haproxy 假定响应将全部包含在第一个数据包中,因为这是大多数已知 Web 服务器的行为。如果您搜索 Glassfish,他构建了一个快速而肮脏的修复补丁,可以在邮件列表存档中找到,并且可以应用于 beta 或最新的稳定版本 1.3.22

    我还试图找出为什么 Glassfish 开始以这种方式行事,但在没有付费支持的情况下,我一无所获。如果有人能回答这个问题,赏金仍然是开放的。

    • 5
  2. Justin
    2010-01-18T14:29:17+08:002010-01-18T14:29:17+08:00

    运行 tcpdump 并捕获检查及其对每个服务器的响应。将 server1 的结果与 server2 的结果进行比较。

    如果它在 server1 上工作但在 server2 或 server3 上不工作,则 server1 必须返回不同的东西。如果他们没有返回不同的东西,那么 haproxy 或您的 haproxy 配置有问题。

    • 1
  3. jlintz
    2010-01-15T14:01:44+08:002010-01-15T14:01:44+08:00

    尝试将其他参数传递到 httpchk...

    IE。

    option httpchk HEAD /test.php HTTP/1.1
    
    • 0

相关问题

  • 多操作系统环境的首选电子邮件客户端

  • 你最喜欢的 Linux 发行版是什么?[关闭]

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve