HAProxy - 接受连接之前运行所有检查?

HAProxy - 接受连接之前运行所有检查?

我正在使用 haproxy 提供对 redis 集群的访问。但是我在 haproxy 启动时遇到了问题,因为在运行第一次检查之前,所有服务器都已启动。

有没有办法强制 haproxy 在接受连接之前运行初始检查?

这是我的配置:

global
    max-spread-checks 1

defaults
    mode tcp
    timeout connect 4s
    timeout server 10s
    timeout client 60s

frontend ft_redis
    mode tcp
    bind *:6379
    default_backend bk_redis

resolvers docker_resolver
    nameserver dns 127.0.0.11:53

backend bk_redis
    mode tcp
    option tcp-check

    tcp-check send info\ replication\r\n
    tcp-check expect string role:master
    tcp-check send QUIT\r\n
    tcp-check expect string +OK

    server redis-backend-1 redis_node1:6379 maxconn 1024 check inter 1s downinter 2s rise 1 fall 1 resolvers docker_resolver resolve-prefer ipv4 on-marked-down shutdown-sessions
    server redis-backend-2 redis_node2:6379 maxconn 1024 check inter 1s downinter 2s rise 1 fall 1 resolvers docker_resolver resolve-prefer ipv4 on-marked-down shutdown-sessions
    server redis-backend-3 redis_node3:6379 maxconn 1024 check inter 1s downinter 2s rise 1 fall 1 resolvers docker_resolver resolve-prefer ipv4 on-marked-down shutdown-sessions

它通常工作正常并且只连接到当前的 redis 主服务器。

但是当启动/重新启动 haproxy 时,我最终会收到类似“READONLY 您无法对只读从属服务器进行写入”之类的错误。因为所有服务器最初都标记为启动,并且连接转到从属 redis 服务器。

相关内容