Redis Sentinel和集群的优势

时间:2019-06-07 16:51:57

标签: redis redis-cluster redis-sentinel

我正计划创建一个高可用性的Redis集群。阅读了许多有关构建Redis集群的文章后,我感到困惑。那到底是什么

    Redis Sentinel Master1 Slave1 Slave2集群的优势是什么?作为Redis多节点分片群集更可靠吗? Redis多节点分片群集的优势?作为Redis Sentinel Master1 Slave1 Slave2集群更可靠吗?

对Redis Sentinel Master1 Slave1 Slave2集群的其他问题:

  • 当我有1个主节点和两个从属节点并且流量越来越高时,此群集将变得很小,如何使群集变大?

对Redis多节点分片群集的其他问题:

  • 为什么有这么多的演示在单个实例上但在不同端口上运行集群?这对我来说毫无意义。
  • 当我有一个包含4个主服务器和4个副本的集群时,应用程序或客户端如何确保写入集群?当Master1和Slave1快要死了,但我的应用程序始终向Master1的IP写入时,它将不再起作用。有哪些解决方案可以很好地实现分片群集,以使应用程序可以通过单个ip和端口找到它?保持生命? HAproxy?
  • 当我使用例如4进行主设置时保持活力-难道就不会取消其他大师吗?
  • 此外,我需要了解为什么多节点群集仅适用于在可用内存时需要写入更多数据的解决方案。为什么?对我来说,多主机设置听起来不错,可以扩展。
  • 在群集不处于缓存模式时,分片群集设置不支持多键操作是正确的吗?

我不确定这两个解决方案是否唯一。希望你们能帮助我理解Redis的体系结构。很抱歉有这么多问题。

1 个答案:

答案 0 :(得分:1)

我将尝试回答您的一些问题,但首先让我描述Redis的不同部署选项。 Redis具有三种基本部署:单节点,哨兵和集群。

  • 单节点-运行运行Redis的单个进程的基本解决方案。 它不具有可伸缩性,也不具有很高的可用性。
  • Redis Sentinel-由多个节点组成的部署,其中一个被选为主节点,其余被选为从节点。 它增加了高可用性,因为在主站发生故障的情况下,其中一个从站将被自动提升为主站。 它不是可伸缩的,因为主节点是唯一可以写入数据的节点。 您可以配置客户端以将读取请求定向到从属服务器,这将承担来自主服务器的一些负载。但是,在这种情况下,从站可能会返回陈旧数据,因为它们异步复制了主站。
  • Redis群集-至少由6个节点(3个主节点和3个从属节点)组成的部署。主服务器之间分片的数据。它具有很高的可用性,因为在主机发生故障的情况下,他的一个从机将自动升级为主机。它具有可伸缩性,因为您可以添加更多节点并重新分片数据,以便新节点承担一些负载。

所以回答您的问题:

  1. Sentinel与Redis Cluster相比的优势在于:
    • 硬件-您可以使用三个节点设置完全正常的Sentinel部署。 Redis群集至少需要六个节点。
    • 简单-通常更易于维护和配置。
  2. Redis Cluster优于Sentinel的优点是可扩展。

两次部署之间的决定应基于您的预期负载。 如果可以通过单个Redis主节点管理写负载,则可以进行Sentinel部署。

如果一个节点无法处理您的预期负载,则必须进行群集部署。

  1. Redis Sentinel部署不可扩展,因此使群集变大不会提高性能。唯一的例外是添加从站可以提高您的读取性能(如果您将读取请求定向到从站)。

  2. 在具有多个端口的单个节点上运行的Redis群集仅用于开发和演示目的。在生产中是没有用的。

  3. 在Redis Cluster部署中,客户端应该可以访问所有节点(并且只有Master1节点)。这是因为数据在主机之间进行分片。 如果客户端尝试将数据写入Master1,但Master2是数据的所有者,则Master1将向客户端返回一条MOVE消息,引导其将请求发送到Master2。 您不能在所有Redis节点的前面都拥有一个HAProxy。

  4. 与5中相同的答案,在群集部署中,客户端应该直接连接到所有主服务器和从服务器,而不是通过LB或Keepalived。

  5. 不确定我是否完全理解您的问题,但是Redis Cluster是Redis唯一可扩展的解决方案。

  6. Redis群集部署仅在所有键都在同一节点中时才支持多键操作。您可以使用“哈希标签”强制多个密钥由同一主机处理。

一些好的链接可以帮助您更好地理解它:

有关不同Redis部署选项的说明:https://blog.octo.com/en/what-redis-deployment-do-you-need

有关Redis群集的体系结构的详细说明:https://blog.usejournal.com/first-step-to-redis-cluster-7712e1c31847