You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

HAProxy 1.8配置问题:如何避免客户端粘滞到备份服务器

解决HAProxy 1.8中客户端粘滞到备份服务器的问题

你遇到的这个问题确实很棘手——备份服务器本应只是临时兜底的角色,结果因为stick-table的关联记录,导致常规服务器恢复后客户端还一直走备份,完全违背了备份的设计初衷。好在HAProxy的stick指令支持条件判断,我们可以通过配置来避免备份服务器的关联被记录到stick-table中。

核心思路

我们需要让stick-table只记录客户端与常规服务器的关联,当客户端被临时转发到备份服务器时,不将这个关联存入stick-table。这样当常规服务器恢复后,客户端的请求会重新参与负载均衡,分配到正常服务器并建立新的粘滞关联。

修改后的配置示例

defaults
    option redispatch

frontend fe_test
    bind 127.0.0.1:8081
    stick-table type ip size 1m expire 1h
    acl acl_test hdr(host) -i whatever.domain.com
    # ... 其他前端配置
    use_backend be_test if acl_test
    # ... 其他后端路由

backend be_test
    mode http
    balance roundrobin
    # 定义ACL匹配当前请求是否被转发到备份服务器
    acl is_backup_server server backup
    # 仅当请求未被转发到备份服务器时,才将客户端与服务器的关联存入stick-table
    stick on hdr(X-Real-IP) table fe_test
    stick store-response hdr(X-Real-IP) table fe_test unless is_backup_server
    option httpchk GET /check
    server test-01 server-01.lan:8080 check
    server test-02 server-02.lan:8080 check
    server maintenance 127.0.0.1:8085 backup

配置解释

  1. acl is_backup_server server backup:这条ACL用来判断当前请求最终被转发到的服务器是否是备份服务器(通过server backup条件匹配所有标记为backup的服务器)。
  2. stick store-response ... unless is_backup_server:stick store-response负责将客户端IP与当前服务器的关联写入stick-table,这里通过unless is_backup_server条件,确保只有当请求被转发到常规服务器时才执行写入操作。当客户端被转到备份服务器时,不会留下任何关联记录。
  3. stick on hdr(X-Real-IP) table fe_test:这条指令负责在请求进来时匹配stick-table中已有的关联,确保常规服务器正常时,客户端能粘滞到之前的服务器。

额外验证点

  • 确保X-Real-IP头能正确获取客户端真实IP(如果是直接访问HAProxy,也可以用src替代hdr(X-Real-IP),更可靠)。
  • 测试时可以手动停掉所有常规服务器,让客户端转到备份,然后恢复常规服务器,观察客户端是否自动切换回常规服务器。

备选方案(如果上述配置不生效)

如果因为HAProxy版本细节导致server backup ACL不生效,你也可以通过服务器名称来匹配备份服务器:

backend be_test
    # ... 其他配置
    acl is_backup_server server_name maintenance
    stick store-response hdr(X-Real-IP) table fe_test unless is_backup_server
    # ... 服务器配置

这里通过server_name maintenance直接匹配备份服务器的名称,同样能达到排除备份服务器记录的效果。

内容的提问来源于stack exchange,提问作者Flo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:27:53