CNSRE/ABTestingGateway

redis连接被拒绝

Opened this issue · 3 comments

在本机指定 set $redis_host '127.0.0.1; 能够连接redis并在redis中看见创建的相应的ab:policies:*
但是将127.0.0.1修改为另一台redis机器,则在访问的时候会报错:
[error] 1718#0: *768 connect() to unix:/var/run/redis.sock failed (111: Connection refused), client: 10.1.48.196, server: api.weibo.cn, request: "GET / HTTP/1.1", host: "10.1.48.195:8030"
请问一下有碰到过这样的问题吗? (确定另一台redis可以在当前机器上连接)

redis配置中加入:
port 6379
unixsocket /tmp/redis.sock
unixsocketperm 766

nginx配置中:
set $redis_host '10.1.48.196';
set $redis_port '6379';
set $redis_uds '/tmp/redis.sock';
set $redis_connect_timeout 10000;
set $redis_dbid 0;
但还是错误:[error] 25251#0: *797 connect() to unix:/tmp/redis.sock failed (111: Connection refused)

虽然加上set $redis_uds '/tmp/redis.sock'; 会在错误日志中打印connect() to unix:/tmp/redis.sock failed (111: Connection refused);并且默认不会在redis中增加任何数据。但依然可以通过ab管理接口进行规则的添加、修改,当设置之后redis中就有相应的数据,并且可以设置runtime并能够在nginx生效,说明nginx中lua可以连接读取到redis规则。

这里的逻辑应该是,优先连接本地unix,一般而言这个性能比本地tcp快,比远程tcp快;如果连接不上unix domain socket,就去连接redis_host:redis_port,所以连接到远程redis了。