redis的ha代理配置如下:

frontend redis
  bind *:6379 name port6379
  mode tcp
  timeout client 15s

    #define hosts
    acl redis_3 hdr(host) -i im.test.com

    #figure out which one to use
    use_backend test_redis if redis_3

backend test_redis
  mode tcp
  timeout connect  4s
  timeout server   30s
  #balance leastconn
  option tcplog
  option tcp-check
  tcp-check send PING\r\n
  tcp-check expect string +PONG
  #tcp-check send QUIT\r\n
  #tcp-check expect string +OK
  server node1_redis 10.146.99.164:6379 check inter 1s

ha proxylogs显示多个连接到redir。在redir服务器上,我看到“通过对等方重置连接”
在浏览器中,我得到一个“重新初始化的会话”。
但是通过redis cli-h ping,我得到了正确的pong响应。将浏览器直接定向到端口6379上的redis服务器,稍后会给出以下结果:
-ERR wrong number of arguments for 'get' command
-ERR unknown command 'Host:'
-ERR unknown command 'User-Agent:'
-ERR unknown command 'Accept:'
-ERR unknown command 'Accept-Language:'
-ERR unknown command 'Accept-Encoding:'
-ERR unknown command 'Cookie:'
-ERR unknown command 'Connection:'
-ERR unknown command 'Upgrade-Insecure-Requests:'

haproxy数据显示后端已经启动。
有人能帮我吗?为什么通过ha代理连接时会出错?

最佳答案

解决了!由于某种原因,未在ACL中读取主机名。当我将它更改为默认后端时,它立即工作了。
也许有人可以告诉我为什么这个示例中的主机名不起作用?
但对我来说现在有用了。

10-07 16:09
查看更多