Redis Sentinel 无法连接到使用密码的 Master - Redis 6.2(dockerized)

Redis Sentinel 无法连接到使用密码的 Master - Redis 6.2(dockerized)

我已经将 redis 镜像进行了 docker 化(在使用自定义 redis.conf 时,请遵循官方 dockerhub 指南) 和自定义图像 (根据高山图像请参见: https://pastebin.com/9WsMk1JC) 的 sentinel(也带有自定义的 sentinel.conf)。

在 redis.conf 中,添加了这三个参数(其余保留为默认配置文件):

masterauth password
masteruser default
requirepass password

在 sentinel.conf 中由于 redis 实例(其他容器)和 sentinel 的分离,设置为在 localhost 上启动不存在的 master。我添加了参数以在 master 上执行身份验证。因此配置文件有两个附加参数(其余保留为默认配置文件):

sentinel auth-pass mymaster password
sentinel auth-user mymaster default

在 redis 容器启动并准备好连接后,我启动了 sentinel 镜像,完成后我连接到 sentinel 端口上的 redis CLI 并手动切换主服务器:

redis-cli -p 26379 sentinel remove mymaster && redis-cli -p 26379 sentinel monitor mymaster <redis container ip> 6379 2

sentinel 的 CLI 两次返回 OK,但过了一会儿,它打印出 master 已关闭。并且它永远保持这种状态。

通过 telnet 和 ping 测试容器之间的连通性——正常。

我的猜测是,redis sentinel 无法连接到 master — — 因为密码。

为什么?

  1. redis 容器的副本 - 制作几个正在运行的镜像副本,并通过 CLI 将它们加入到 MASTER-SLAVE 中,效果非常好。容器可以使用 redis.conf 中的密码相互通信。
  2. 在向 redis 容器引入密码之前,哨兵可以连接并执行成功的故障转移。
  3. 无需设置密码即可在 Openshift 上工作。

相关内容