Redis Cluster最低配置

时间:2018-06-22 09:37:59

标签: redis redis-cluster

实际上,我使用具有HAProxy的Redis主从服务器的配置来使Wordpress具有高可用性。这个配置很好,可以完美地工作(我可以删除任何服务器进行维护而不会造成停机)。这种配置的问题在于,只有一台Redis服务器正在获取所有流量,而其他服务器只是在等待该服务器死机,因此在负载很高的网页中可能会出现问题,添加更多服务器不是解决方案,因为总是一个将是主人。

考虑到这一点,我在考虑是否可以仅使用Redis群集来允许在所有节点上进行读取/写入,但是我不确定是否可以在我的设置中使用它。

我的设置通常最多限于三个节点,并且我在某些地方了解到Redis群集的最小设置是三个节点,但建议六个。这是合理的,因为此设置允许有从节点,如果其主节点死亡,则将成为主节点,然后将保留所有数据,但是如果数据无关紧要怎么办?我的意思是,在我的设置中,数据只是缓存的对象,因此,如果不存在,只需再次创建它即可:

  • 数据将丢失(无关紧要),其他节点将再次从客户端获取对象,以在以后的请求(例如在刷新数据时发生)上为其提供服务。
  • 节点将回答数据不存在并拒绝缓存,因为该对象将必须位于已死的其他节点上。

有人知道吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

当主节点死亡时,Redis群集将变为关闭状态,并且任何涉及由故障实例提供的密钥的命令都将失败。

这可能与某些其他分布式软件有所不同,因为Redis Cluster不是每个主服务器都拥有所有数据的程序。实际上,密钥空间是水平划分的,每个密钥仅由一个主机提供服务。

specification中提到了这一点:

  

密钥空间分为16384个插槽...   单个哈希槽将由单个节点提供服务...

     

用于将密钥映射到哈希槽的基本算法如下:

     

HASH_SLOT = CRC16(key)mod 16384

设置集群时,您肯定会要求每个节点提供一组插槽,并且每个插槽只能由一个节点提供服务。如果一个节点死了,除非您没有从属故障转移为它们服务,否则您将丢失该节点上的插槽,因此任何涉及映射到这些插槽的密钥的命令都会失败。