我在本地机器上有一个简单的redis集群,它包括:
到目前为止,我正在使用ServiceStack.Redis进行连接,没有任何问题。今天,我使用requirepass 42
设置向每个用户添加了一个密码。我可以连接到所有他们使用Redis桌面经理罚款和所有的工作,如预期。
使用下面的代码,当我试图连接时会得到一个错误。删除密码的工作原理是预期的。
var config = RedisConfiguration.Instance;
Func<string, string> hostFilter = host => string.IsNullOrEmpty(config.SecurityKey)
? $"{host}?db={config.Database}"
: $"{config.SecurityKey}@{host}?db={config.Database}";
var sentinelHosts = config.SentinelHosts.Select(hostFilter);
var sentinel = new RedisSentinel(sentinelHosts, config.ServiceName)
{
HostFilter = hostFilter,
RedisManagerFactory = (master, slaves) => new RedisManagerPool(master)
};
sentinel.OnFailover += manager => Logger?.Warn($"Redis fail over to {sentinel.GetMaster()}");
sentinel.Start()
这段代码抛出了一个RedisException "No可用“(),但的内部例外是”unknown 'AUTH'"。
我不清楚我是否不正确地使用ServiceStack.Redis库,或者我的Redis集群配置不正确。
某个人能把我引向正确的方向吗?
发布于 2017-02-15 19:50:03
您可以使用HostFilter
指定密码:
sentinel.HostFilter = host => $"{config.SecurityKey}@{host}?db={config.Database}";
但是,当使用密码时,需要在任何地方配置密码,即在两个主从配置中使用:
requirepass password
masterauth password
Redis还需要配置为使用相同的密码,这样它就可以控制它正在监视的redis实例,这些实例可以在您的sentinel.conf
中配置如下:
sentinel auth-pass mymaster pasword
windows-密码项目中的redis-config文件夹显示了一个受密码保护的Redis配置示例。
https://stackoverflow.com/questions/42255954
复制相似问题