实际上,我使用具有HAProxy的Redis主从服务器的配置来使Wordpress具有高可用性。这个配置很好,可以完美地工作(我可以删除任何服务器进行维护而不会造成停机)。这种配置的问题在于,只有一台Redis服务器正在获取所有流量,而其他服务器只是在等待该服务器死机,因此在负载很高的网页中可能会出现问题,添加更多服务器不是解决方案,因为总是一个将是主人。
考虑到这一点,我在考虑是否可以仅使用Redis群集来允许在所有节点上进行读取/写入,但是我不确定是否可以在我的设置中使用它。
我的设置通常最多限于三个节点,并且我在某些地方了解到Redis群集的最小设置是三个节点,但建议六个。这是合理的,因为此设置允许有从节点,如果其主节点死亡,则将成为主节点,然后将保留所有数据,但是如果数据无关紧要怎么办?我的意思是,在我的设置中,数据只是缓存的对象,因此,如果不存在,只需再次创建它即可:
有人知道吗?
谢谢!
答案 0 :(得分:0)
当主节点死亡时,Redis群集将变为关闭状态,并且任何涉及由故障实例提供的密钥的命令都将失败。
这可能与某些其他分布式软件有所不同,因为Redis Cluster不是每个主服务器都拥有所有数据的程序。实际上,密钥空间是水平划分的,每个密钥仅由一个主机提供服务。
specification中提到了这一点:
密钥空间分为16384个插槽... 单个哈希槽将由单个节点提供服务...
用于将密钥映射到哈希槽的基本算法如下:
HASH_SLOT = CRC16(key)mod 16384
设置集群时,您肯定会要求每个节点提供一组插槽,并且每个插槽只能由一个节点提供服务。如果一个节点死了,除非您没有从属故障转移为它们服务,否则您将丢失该节点上的插槽,因此任何涉及映射到这些插槽的密钥的命令都会失败。