如何在 HAProxy 后面正确代理 redis?

如何在 HAProxy 后面正确代理 redis?

我正在配置 HAproxy 并且很乐意与 Redis 一起使用,我的配置相当简单:

global
    maxconn 50000

defaults
    timeout connect 10s
    timeout client 30s
    timeout server 30s
    log global
    mode http
    option httplog
    maxconn 3000

frontend redis
    log /dev/log local0 debug
    mode tcp

    bind *:7899
    default_backend redis_servers

backend redis_servers
    server r01 xxx:7899

但是当我尝试使用 CLI 连接到该地址时:

redis-cli -h loadbalancer.test.app -p 7899

我收到这个日志:

Jul 18 15:19:24 lb01 haproxy[114128]: 217.XXX.XX.XXX:279XX [18/Jul/2022:15:19:24.426] redis redis/<NOSRV> -1/-1/0 0 PR 1/1/0/0/0 0/0

我已验证并且 redis 服务器工作正常,如果我执行相同的命令来连接它,但直接使用机器的 ip,我就可以成功使用它。

有人能帮助我理解我所缺少的吗?

谢谢

答案1

在您的默认部分中,模式为http,您的后端使用相同的模式。您需要将默认部分中的模式从更改为,http或者在后端下tcp明确添加模式,tcp因为 redis 使用 tcp。

相关内容