gpt4 book ai didi

Redis哨兵与集群

转载 作者:IT王子 更新时间:2023-10-29 05:54:09 25 4
gpt4 key购买 nike

我理解 redis sentinel 是一种在多个 redis 实例之间配置 HA(高可用性)的方法。如我所见,在任何给定时间都有一个 redis 实例主动服务于客户端请求。还有两台额外的服务器处于待命状态(等待故障发生,因此其中一台可以再次运行)。

  • 这是资源浪费吗?
  • 是否有更好的方法来充分利用可用资源?
  • Redis 集群是 Redis sentinel 的替代品吗?

我已经查找了 sentinel 的 Redis 文档和 clustering ,请有经验的人解释一下。

Master slave configuration in Redis sentinel - before failure

Master fails and slave kicks in to action

更新

好的。在我的真实部署场景中,我有两台专用于 redis 的服务器。我有另一台服务器,我的 Jboss 服务器正在运行。在 Jboss 中运行的应用程序配置为连接到 redis 主服务器(M)。

故障转移场景

理想情况下,我认为当 Master 缓存服务器发生故障(Redis 进程宕机或机器故障)时,Jboss 中的应用程序需要连接到 Slave 缓存服务器。我将如何配置 redis 服务器来实现这一目标?

+--------+          +--------+
| Master |---------| Slave |
| | | |
+--------+ +--------+

Configuration: quorum = 1

最佳答案

首先,让我们谈谈哨兵。

Sentinel 管理故障转移,它不会为 HA 配置 Redis。这是一个重要的区别。其次,您发布的图表实际上是一个错误的设置 - 您不想在与它管理的 Redis 节点相同的节点上运行 Sentinel。当您失去该主机时,您将失去两者。

关于“是否浪费资源?”这取决于您的用例。在那个设置中你不需要三个 Redis 节点,你只需要两个。三增加了你的冗余,但不是必需的。如果您需要增加冗余,那么这不会浪费资源。如果您不需要冗余,那么您只需运行一个 Redis 实例并称之为好 - 因为运行更多实例会“浪费”。

运行两个从服务器的另一个原因是拆分读取。同样,如果您需要它,那就不会浪费。

关于“有没有更好的方法充分利用现有资源?”我们无法回答这个问题,因为它太依赖于您的特定场景和代码。也就是说,如果要存储的数据量“很小”并且命令率不是非常高,那么请记住您不需要为 Redis 提供专用主机。

现在是“Redis 集群是 Redis sentinel 的替代品吗?”。这实际上完全取决于您的用例。 Redis Cluster 不是 HA 解决方案——它是一个多写入器/大于内存的解决方案。如果您的目标只是 HA,那么它可能不适合您。 Redis 集群具有局限性,尤其是在多键操作方面,因此它不一定是简单的“仅使用集群”操作。

如果您认为让三台主机运行 Redis(和三台运行哨兵)是一种浪费,您可能会认为 Cluster 需要更多资源,因此会浪费更多。

您提出的问题可能过于宽泛且基于观点,因此无法像书面那样存在。如果您有正在解决的具体案例/问题,请进行更新,以便我们提供具体的帮助和信息。

具体更新:

为了在您的场景中进行适当的故障转移管理,我会使用 3 个哨兵,一个在您的 JBoss 服务器上运行。如果你有 3 个 JBoss 节点,那么每个节点一个。我会在不同的节点上有一个 Redis pod(master+slave),并让 sentinel 管理故障转移。

从那里开始,连接 JBoss/Jedis 以使用 Sentinel 进行信息和连接管理是一个问题。由于我不使用这些,所以快速搜索发现 Jedis 支持它,您只需要正确配置它。我发现的一些示例位于 Looking for an example of Jedis with Sentinel。和 https://github.com/xetorthio/jedis/issues/725其中谈到 JedisSentinelPool 是使用池的路径。

当 Sentinel 执行故障转移时,客户端将断开连接,Jedis 将(应该?)通过询问 Sentinels 当前的主人是谁来处理重新连接。

关于Redis哨兵与集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31143072/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com