问题标签 [redis-sentinel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
10286 浏览

c# - 为 Sentinel 配置配置 ASP.NET Redis 会话状态提供程序

一段时间以来,我一直在尝试在我的应用程序中配置ASP.NET Redis 会话状态提供程序。由于这篇文章,我终于能够成功地直接连接到主服务器并设置/获取密钥:无法使用 ASP.NET 会话状态提供程序连接到 Redis 服务器

现在,我的下一个问题......让它与 Sentinel 配置一起使用。

我熟悉的SENTINEL get-master-addr-by-name master-dev-sessionstate命令确定主人。这个提供者有这个内置的吗?根据上面链接的博客文章的评论(这也是我能找到的唯一文档),看来我应该能够使用 connectionString 属性来传递多个主机。不过,我不确定这些多台主机是否打算成为哨兵。

像这样配置我的连接时,我收到此错误:

附加信息:无法连接到 redis 服务器;要创建断开连接的多路复用器,请禁用 AbortOnConnectFail。

即使我的连接字符串中只有主 IP,我也会收到此错误。正如您在上面看到的,我的连接字符串中有 abortConnect="false",这是它指示我执行的操作。无论连接字符串中是否存在此错误,都会发生相同的错误。

考虑到这一点,这是我的问题......

  1. 此提供程序是否支持 Sentinel 配置?
  2. 如果是,连接字符串的正确格式是什么?
  3. 有没有人为此提供任何其他好的文档资源?除了该博客文章之外,我什至无法在 Microsoft 的网站上找到任何内容。

编辑:我应该注意,这是一个自定义的本地 Redis 安装。我们没有通过 Azure 运行。

编辑:我最近试图将我的工作配置指向一个哨兵,我收到“没有可用的连接来服务这个操作:EVAL。” 这使我相信该提供商没有 Sentinel 支持。谁能证实这一点?

0 投票
1 回答
1464 浏览

redis - Redis Sentinel 在重新启动之前不会复活 master -> slave

我在使用 Sentinel 恢复主节点时遇到问题。具体来说,当 master 丢失时,slave 会被正确提升,但重启后的 master 永远不会被降级。但是,如果我立即重新启动 Sentinel,主节点将被降级。我的配置不好,还是我缺少一些基本的东西?

编辑:Xpost 与https://groups.google.com/forum/#!topic/redis-db/4AnGNssqYTw

我如下设置了几个虚拟机,全部使用 Redis 3.1.999:

我的哨兵配置,两个哨兵:

我在主节点上停止 redis;正如预期的那样,哨兵抓住了它并将一个奴隶提升为主人。

我等了几分钟,然后在以前的主节点上重新启动 Redis。出乎意料(对我来说)该节点没有降级为从属节点。

再等几分钟后,我重新启动了其中一个哨兵。它立即检测到悬空的前主节点并将其降级。

0 投票
1 回答
986 浏览

python-2.7 - 从 Python 调用 Sentinel 故障转移

我有一个简单的 Redis 配置,运行 3 个服务器和 3 个 Sentinel(虽然是不同的实例)。这个配置几乎完美地运行,最终,我的 Master 失败了(常见的 Redis 问题,它无法完成后台保存)。

我的问题是,每当我尝试保存(或删除)某些内容时,都会出现错误:

我有什么办法可以让 Sentinel 调用“故障转移”强制选举新主人吗?通过 redis-cli 很容易,但我无法从我的 Python(2.7) 程序(使用 redis.py)中找到一种方法。

有任何想法吗?

0 投票
2 回答
1557 浏览

redis - 如何在不启动哨兵故障转移的情况下执行 redis FLUSHALL?

我们有一个带有两个 redis 服务器的 redis 配置。我们还有 3 个哨兵来监控这两个实例并在需要时启动故障转移。

我们目前有一个流程,我们必须定期在 redis 服务器上执行 FLUSHALL。这是一个阻塞操作,比我们为哨兵分配的超时时间要长。换句话说,我们有我们的哨兵配置:

sentinel down-after-milliseconds OurMasterName 5000

并且在服务器上执行 redis-cli FLUSHALL 需要 > 5000 毫秒,因此哨兵启动故障转移。

我们承认进行 FLUSHALL 并不是很好,我们也知道我们可以将毫秒后的下降时间增加到但是为了这个问题的目的,假设这些都不是选项。

问题是:我们如何在不让我们的哨兵因为 FLUSHALL 阻塞超过 5000 毫秒而启动故障转移的情况下进行 FLUSHALL(或等效操作)?有没有人遇到并解决了这个问题?

0 投票
1 回答
1240 浏览

redis - 使用 ServiceStack.Redis 客户端版本 4.0.44 从远程服务器访问 redis 时获取“没有可用的 Redis Sentinels”

我们有一个带有两个 redis 服务器的 redis 配置。我们还有 3 个哨兵来监控这两个实例并在需要时启动故障转移。

我们从一些应用程序中间歇性地收到以下问题:

ServiceStack.Redis.RedisException: No Redis Sentinels were available ---> ServiceStack.Redis.RedisException: Unable to Connect: sPort: 0

Unable to Connect: sPort: 0部分可能表明这是一个 ConnectTimeout 问题(根据这个问题:ServiceStack.Redis: Unable to Connect: sPort: 0)。但是,我不太确定这是问题所在,因为它说“没有可用的 Redis Sentinel”。

虽然我们在某些应用程序上间歇性地遇到此问题,但其他一些应用程序(例如我们编写的一些控制台应用程序)似乎一直在遇到此问题。

任何人都可以阐明这个问题是什么以及如何解决它?如果您在 Google 上搜索“没有可用的 Redis Sentinels”,您只会得到 ServiceStack.Redis GitHub 页面,该页面包含输出此消息的实际代码。

0 投票
3 回答
2115 浏览

redis - Redis - 配置哨兵以在主服务器关闭时选择从服务器

嗨,我已经创建了一个由 3 个 aws 实例组成的哨兵集群 Redis,我已经将哨兵配置为具有 HA Redis 集群并可以工作,但是如果我模拟主服务器崩溃(主实例关闭),哨兵安装在从服务器上,而不是定位master 的哨兵和选举失败。我的哨兵配置是:

所有实例都使用相同的文件

0 投票
1 回答
1888 浏览

redis - Redis Sentinel 和 fix-slave-config:Redis 节点在不应该设置为两个主节点的从节点时被设置为从节点

我正在尝试在大型 redis 舰队中使用哨兵进行故障转移(12 个哨兵,500 多个分片,每个分片一个主分片和一个从属分片)。我遇到了一个非常奇怪的问题,我的哨兵反复向某些 redis 节点发出命令 +fix-slave-config。我没有注意到这种情况发生在较小的规模上,因为它是值得的。

我注意到两个具体问题:

  1. +fix-slave-config 消息,如上所述
  2. sentinel.conf 显示某些奴隶有两个主人(他们应该只有一个)

处于启动状态的舰队有一个从节点 XXX.XXX.XXX.177 和一个主节点 XXX.XXX.XXX.244(它们一起构成舰队中的 shard 188)。在没有任何节点中断的情况下,从节点的主节点切换到 XXX.XXX.XXX.96(分片 188 的主节点),然后切换回来,然后切换。这是通过 ssh 进入从节点和主节点并检查 redis-cli 信息来验证的。所有 Redis 节点都以正确的配置启动。所有 Sentinel 节点在他们的 sentinel.conf 中都有正确的配置。当我在每次这些 slave->master 更改后查询它们时,每个 Sentinel 都有完全相同的 master 列表。

在我的 12 个哨兵中,记录了以下内容。每分钟,都会发送一条 +fix-slave-config 消息:

这是 SENTINEL MASTERS 命令的输出。奇怪的是 shard-188 有两个 slave,而实际上它应该只有 1 个。当 XXX.XXX.XXX.177 在 shard-172 和 shard-182 下时,输出看起来相同。

案例1)XXX.XXX.XXX.244是XXX.XXX.XXX.177的主人

案例2)XXX.XXX.XXX.96是XXX.XXX.XXX.177的主人

我对每个哨兵的起始 sentinel.conf 是

这是几分钟后生成的 sentinel.conf(适用于所有哨兵)——注意两个从站:

0 投票
1 回答
259 浏览

redis - 在哨兵故障转移后复活时原始 Redis 主服务器的状态

考虑以下用于 redis 高可用性解决方案的设置:3 个 VM,每个 VM 运行一个 redis 服务器实例和一个哨兵实例来监控设置。R1(redis on VM1) 被配置为 master,R2并且R3as slaveof R1; S1... S3(哨兵)所有监视器R1的法定人数为 2。所有这些都静态写入相应的虚拟机中redis.conf和上。redis-sentinel.conf

现在考虑VM1(携带R1S1)下降。哨兵选择例如R2新的主人和客户端代码jedis,自动适应新的状态。到目前为止,一切都很好。

VM1当恢复并R1可用S1时究竟会发生什么?

尤其是:

  • 是否会R1加入其余的R2R3再次形成一个 3 节点设置(例如,因为S2S3继续监视它)?
  • 如果是,会R1被选回主人还是继续做奴隶?我应该关心吗?
  • 是否会再次S1加入S2S3形成 3 节点设置?
  • jedis自动适应吗?
0 投票
1 回答
3087 浏览

redis - WAIT命令能否在Redis中提供强一致性?

问候溢出者,

在 Redis sentinel/cluster setup 中,我们是否可以使用 WAIT 命令和从站总数来确保 Redis 服务器之间的强一致性?为什么不?

亲切的问候

0 投票
1 回答
2589 浏览

redis - 在 Redis-sentinel 主从配置中,新主节点显示为初始主节点的关闭

如https://www.digitalocean.com/community/tutorials/how-to所述,使用 3 个节点(1 个主节点和 2 个从节点)安装了一个 redis(v. 3.0.4)主从模型,每个节点都需要通过 requirepass -configure-a-redis-cluster-on-ubuntu-14-04 然后在每个节点上启动 3 个哨兵,如文章http://blog.commando.io/redis-is-easy-trivial-hard/中所述

在试图拿下主人之后,哨兵果然将其中一名奴隶提升为主人。然后,当旧的主服务器再次启动时,它变成了从服务器并识别出新的主服务器,这可以在 /etc/redis/sentinel.conf 中看到,该文件在“sentinel monitor redis-cluster”属性中使用新的主 IP 进行了更新。但是已经注意到旧的master尽管知道新的master IP,但它认为新的master是down的,不像其他slave看到它。这可以通过对旧主服务器运行此命令来检查:

当尝试使用同步客户端测试节点上的数据复制时,这似乎也导致了以下错误“与 MASTER 的 MASTERDOWN 链接已关闭并且 slave-serve-stale-data 设置为 'no'”。

这看起来像旧主人无法对新主人进行身份验证,因为它没有他的密码,但是如何正确设置呢?

因为注意到新的master升级后/etc/redis/redis.conf并没有改变,不像/etc/redis/sentinel.conf,这可能导致master的redis.conf没有密码新主人。

希望有任何解决问题的提示,在此先感谢。