【问题标题】:In HAProxy, is it possible to stop routing traffic to a specific server with active sessions by disabling the server?在 HAProxy 中,是否可以通过禁用服务器来停止将流量路由到具有活动会话的特定服务器?
【发布时间】:2018-02-24 21:44:00
【问题描述】:

我正在尝试实现以下设置

HA -|
    |- Redis1
    |- Redis2

在任何时候,只有一个 redis 实例应该为传入的请求提供服务。

按照文档,您似乎可以动态禁用服务器,HA 会停止将流量定向到禁用的服务器。 虽然这适用于新的客户端连接,但现有的客户端连接仍由禁用的服务器提供内容。 但是如果我杀死了 redis 实例,即使是现有的客户端连接也会被重定向到另一个实例。

是否可以在不杀死实例的情况下实现此行为?

这是我的 HA 配置:

global
    stats socket /opt/haproxy/admin.sock mode 660 level admin
    stats socket ipv4@*:19999 level admin

defaults
    log global
    mode tcp

listen myproxy
    mode tcp
    bind *:4444
    balance roundrobin
    server redis1 127.0.0.1:6379 check
    server redis2 127.0.0.1:7379 check

【问题讨论】:

    标签: haproxy blue-green-deployment


    【解决方案1】:

    找到了答案。需要添加以下指令:

    on-marked-down shutdown-sessions
    

    这将关闭所有现有会话。例如:

    server redis1 127.0.0.1:6379 check on-marked-down shutdown-sessions
    server redis2 127.0.0.1:7379 check on-marked-down shutdown-sessions
    

    【讨论】:

      猜你喜欢
      • 2021-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多