From bc0bc426258b48a700c7af90d14eaad4aa9b03a8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A2=81=E9=9F=AC?= Date: Fri, 12 Jun 2020 00:31:59 +0800 Subject: [PATCH] support connect to sentinel instance with password --- doc/config_CN.md | 1 + src/Conf.cpp | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/doc/config_CN.md b/doc/config_CN.md index 71a6933..01b8081 100644 --- a/doc/config_CN.md +++ b/doc/config_CN.md @@ -253,6 +253,7 @@ predixy支持Redis Sentinel和Redis Cluster来使用redis,一个配置里这 + ServerRetryTimeout: 一个redis实例失效后多久后去检查其是否恢复正常,不指定的话为1秒 + KeepAlive: predixy与redis的连接tcp keepalive时间,为0则禁止此功能,不指定的话为0 + Sentinels: 里面定义redis sentinel实例的地址 ++ 从redis 5.0开始,sentinel进程支持配置连接密码(通过在sentinel的配置文件里,不是predixy的配置文件,设置requirepass anypwd这样的配置项实现), 在这种情况下需要在Sentinels里以 + {anypwd}@{address}:{port}的形式配置sentinel的连接地址 + Group: 定义一个redis组,Group的名字应该和redis sentinel里面的名字一致,Group里可以显示列出redis的地址,列出的话就是上面提到的静态节点 一个例子: diff --git a/src/Conf.cpp b/src/Conf.cpp index 7f2d7b9..a22285c 100644 --- a/src/Conf.cpp +++ b/src/Conf.cpp @@ -331,8 +331,8 @@ void Conf::setStandaloneServerPool(const ConfParser::Node* node) } else { Throw(InvalidValue, "%s:%d HashTag invalid", p->file, p->line); } - } else if (setServers(mStandaloneServerPool.sentinels, "Sentinels", p)) { - mStandaloneServerPool.sentinelPassword = p->val; + } else if (strcasecmp(p->key.c_str(), "Sentinels") == 0) { + setServers(mStandaloneServerPool.sentinels, "Sentinels", p); } else if (strcasecmp(p->key.c_str(), "Group") == 0) { mStandaloneServerPool.groups.push_back(ServerGroupConf{p->val}); if (p->sub) {