使用 Redis Stack 服务器的 Redis Sentinel

问题描述 投票:0回答:1

我试图在Redis堆栈服务器中添加哨兵但无法实现。部署后,一切正常,直到我删除主节点。删除主节点后,它们不会在它们之间选举任何主节点。此外,新的 Pod 会自动创建,但作为从属节点。我认为问题是他们无法选举新的主人并进行必要的更改。哨兵在与 Redis 一起使用时工作得很好。 有人可以帮我吗?

使用此 GitHub 进行参考但使用图像redis/redis-stack-server:6.2.6-v7 Before deleting the master node After Deleting the master nodes showing slaves

redis sentinel
1个回答
0
投票

我现在遇到了完全相同的问题,具有完全相同的行为(使用默认的 redis 映像运行 redis/sentinel 工作正常,但是当我用 redis-stack-server 替换映像时,它突然停止工作)。

经过调试,我发现(至少在我的情况下),这是由于 redis-stack-server 映像默认在保护模式下运行 redis(默认的 redis docker 映像默认已禁用)。

因此,当哨兵尝试获取有关该重设的信息时,他们会得到由于启用了保护模式而导致访问被拒绝的响应。 Sentinel 显然无法将此信息解析为

INFO
回复,并且有关这些实例的数据将被忽略(在我的情况下,我注意到的第一件事是在
sentinel slaves mymaster
中所有
runid
都是空的)。不幸的是,哨兵没有检测到并报告这一点,这使得调试特别困难。

我的情况很独特,因为主服务器正在运行默认映像(不是 redis-stack),因此不在保护模式下运行,因此哨兵能够连接到它并获取初始信息并连接到从服务器,但不能从他们那里获取更详细的信息(使用 redis-stack 在保护模式下运行)。

解决方案显然是通过添加以下内容来禁用 redis 实例的保护模式:

--protected-mode no

到命令行。现在,哨兵可以从使用 redis-stack-server 映像运行的从站获取信息。

附注不确定OP是否有同样的问题,因为这已经好几个月了,我仍然写了这个答案,以防有人因为类似的问题通过搜索来找到这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.