Redis sentinel vs群集

Redis sentinel vs群集,redis,Redis,我知道redis sentinel是在多个redis实例之间配置HA(高可用性)的一种方法。正如我所看到的,在任何给定的时间,都有一个redis实例在主动地为客户机请求提供服务。另外两台服务器处于待机状态(等待故障发生,以便其中一台可以再次运行) 这是浪费资源吗 是否有更好的方法充分利用现有资源 Redis集群是Redis sentinel的替代方案吗 我已经查阅了redis文档,请有经验的人解释一下 更新 嗯。在我的实际部署场景中,我有两台专用于redis的服务器。我的Jboss服务器

我知道redis sentinel是在多个redis实例之间配置HA(高可用性)的一种方法。正如我所看到的,在任何给定的时间,都有一个redis实例在主动地为客户机请求提供服务。另外两台服务器处于待机状态(等待故障发生,以便其中一台可以再次运行)

  • 这是浪费资源吗
  • 是否有更好的方法充分利用现有资源
  • Redis集群是Redis sentinel的替代方案吗
我已经查阅了redis文档,请有经验的人解释一下

更新

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

故障转移场景

理想情况下,我认为当主缓存服务器出现故障(Redis进程停止或机器故障)时,Jboss中的应用程序需要连接到从缓存服务器。如何配置redis服务器来实现这一点

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

Configuration: quorum = 1

首先,让我们谈谈哨兵

Sentinel管理故障切换,它不为HA配置Redis。这是一个重要的区别。其次,您发布的图表实际上是一个糟糕的设置-您不希望在与它管理的Redis节点相同的节点上运行Sentinel。当你失去了主人,你就失去了两者

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

运行两个从机的另一个原因是拆分读取。再说一次,如果你需要它,那就不会是浪费

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

现在来看“Redis集群是Redis sentinel的替代品吗?”。 这完全取决于您的用例。Redis Cluster不是HA解决方案-它是一个多写入程序/大于ram的解决方案。如果你的目标只是HA,那么它可能不适合你。Redis Cluster有一些限制,特别是在多键操作方面,所以它不一定是一个简单的“只使用集群”操作

如果您认为有三台主机运行Redis(和三台运行sentinel)是浪费,您可能会认为集群更浪费资源,因为它确实需要更多资源

你所问的问题可能过于广泛和基于观点,无法按书面形式存在。如果您有正在解决的具体案例/问题,请更新,以便我们提供具体的帮助和信息

更新详情:

为了在您的场景中进行正确的故障切换管理,我将使用3个Sentinel,其中一个运行在您的JBoss服务器上。如果您有3个JBoss节点,那么每个节点上都有一个。我会在不同的节点上安装一个Redis吊舱(主+从),并让sentinel管理故障切换

从这里开始,就需要连接JBoss/Jedis,使用Sentinel进行信息和连接管理。由于我没有使用这些工具,所以快速搜索发现绝地武士有支持它,你只需要正确配置它。我在和中找到了一些例子,其中谈到
jedissentinentelpool
是使用池的途径


当Sentinel执行故障切换时,客户端将断开连接,绝地武士将(应该?)通过询问Sentinel谁是当前主机来处理重新连接。

建议从奇数个实例开始,而不是使用两个或两个的倍数。这已经纠正了,但是让我们纠正一些其他的观点

首先,说Sentinel在没有HA的情况下提供故障切换是错误的。当您进行故障切换时,您就拥有了HA,并具有复制应用程序状态的额外好处。区别在于,您可以在系统中使用HA而无需复制(它是HA,但不具有容错性)


其次,在与目标redis实例相同的机器上运行sentinel并不是一个“坏设置”:如果您丢失了sentinel、redis实例或整个机器,结果是一样的。这可能就是为什么这些配置的每个示例都显示它们都在同一台机器上运行

这不是对你问题的直接回答,但请想一想,这对像我这样的Redis新手来说是有用的信息。这个问题也是谷歌搜索“Redis集群vs sentinel”时的第一个链接

Redis Sentinel是Redis高可用性解决方案的名称。。。 它与Redis Cluster无关,旨在供用户使用 人们不需要Redis集群,只需要一种执行方式 主实例不运行时的自动故障转移 没错

摘自


当您刚接触Redis并实施故障切换解决方案时,这并不是一个难题。关于和的官方文档无法相互比较,因此如果不阅读大量的文档,就很难选择正确的方式。

这是我在整个文档中反复思考后的理解

Sentinel是一种热备份解决方案,其中从机保持复制状态并随时准备升级。但是,它不支持任何多节点写入。可以为读取操作配置从属设备。Sentinel不提供HA并不是真的,它具有典型的主动-被动集群的所有特性(尽管在这里使用这个术语并不合适)

Redis集群更适合于o