我有我的本地機器上,它由一個簡單的Redis集羣:如何連接到需要使用ServiceStack.Redis的Redis Sentinel?
- 主端口的端口3679
- 從6380
- 定點端口26379
我使用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 「沒有Redis的哨兵都可用」與「未知命令‘AUTH’」內部異常。
我不清楚我是否正在使用ServiceStack.Redis庫或我的Redis羣集配置不正確。
有人能指出我正確的方向嗎?
這看起來可能是我的問題的根源。我會試一試,看看我能否得到它的工作。 – NotMyself
好的,你讓我朝着正確的方向前進。最後,我不得不爲我的主控和從屬配置添加'requirepass'和'masterauth',然後將'protected-mode'設置爲no來控制我的哨兵。這似乎是訣竅。 [這裏是我的conf文件](https://gist.github.com/NotMyself/49bafe59daf68efd18992ce852ac03cb)這有意義嗎? – NotMyself
@NotMyself從這裏看起來不錯。 – mythz