为什么 haproxy 显示 2 个 redis 节点关闭,即使这些节点是连接到 redis 主节点的 redis 从节点?

Why haproxy shows 2 redis nodes down even when those are the to redis slave nodes connected to redis master node?

redis-a 是主站,其他 2 个是连接到主站的从站那么为什么 haproxy 显示它们已关闭 这就是我在 haproxy 配置中的设置方式。

defaults REDIS
       mode tcp
       timeout connect 4s
       timeout server 30s
       timeout client 30s

frontend front_redis
       bind *:3679 name redis
       default_backend back_redis

backend back_redis
       option tcp-check
       tcp-check connect
       tcp-check send AUTH\ redis123\r\n
       tcp-check expect string +OK
       tcp-check send PING\r\n
       tcp-check expect string +PONG
       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-a 192.168.0.15:6379 check inter 1s
       server redis-b 192.168.0.14:6379 check inter 1s
       server redis-c 192.168.0.16:6379 check inter 1s

# Redis Block end

这里是通过 haproxy 的 redis cli 的结果。

3679> info Replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.5.16,port=6379,state=online,offset=1358919,lag=1
slave1:ip=192.168.5.14,port=6379,state=online,offset=1358919,lag=1
master_replid:5a096bcddd97e297wdww236ae9e6dd3f8df9f7
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1359061
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:310486
repl_backlog_histlen:1048576

3679 是 haproxy 端口

我的redis版本是6.0.9.

两个服务器 192.168.0.14 和 192.168.0.16 是 sentinel slaves 不会有 role:master 这是你的 haproxy 检查。所以你需要检查奴隶单独检查。

应该这样做。