【问题标题】:HAProxy health check with backend ssl servers使用后端 ssl 服务器进行 HAProxy 运行状况检查
【发布时间】:2023-08-18 14:20:01
【问题描述】:

我正在使用 HAProxy 来实现高可用性。我有 server1 和 server2,其中 server1 处于活动状态,而服务器 2 处于休眠状态。如果 server1 出现故障,server2 将变为活动状态。当 server1 启动时,它将以休眠状态启动,而 server2 将保持为活动服务器。当 server2 宕机时,Server1 将扮演主动角色,依此类推。 server1 和 server2 都配置了 ssl。在 HAProxy 上,我使用模式作为 tcp,所以没有配置 ssl。我在两台服务器上都运行了一个 Web 服务,以确定当前哪个服务器处于活动状态(我确保在任何时候最多有一个服务器处于活动状态)。期望 HAProxy 只会将每个用户请求重定向到活动服务器。我有以下配置:

frontend server_connect
        bind *:8043
        option tcplog
        mode    tcp
        default_backend backend_servers

backend backend_servers
        mode tcp
        option httpchk GET /appws/10.2/api/hastatus HTTP/1.1
        http-check expect string ACTIVE
        server master server1.mydomain.com:8043  check
        server standby server2.mydomain.com:8043 check

使用此配置似乎无法正常工作; HAProxy 没有重定向任何请求,我也没有在服务器端的 Web 服务上收到任何健康检查调用。任何人都可以提出正确的方法来实现这一目标吗?

【问题讨论】:

  • 首先,您的server 行可能需要check-ssl
  • 感谢@Michael-sqlbot。有效。我的最终配置如下: server master server1.mydomain.com:8043 check check-ssl verify none server standby server2.mydomain.com:8043 check check-ssl verify none

标签: haproxy high-availability


【解决方案1】:

如果后端使用 SSL 但未使用 ssl 关键字(HAProxy 未终止 TLS 会话时会出现这种情况),则每个 server 行上的 check-ssl 关键字是必需的。

似乎还必须使用verify none 指定或禁用 TLS 身份验证机制,这在安全环境中通常是可以接受的。

【讨论】:

    最近更新 更多