如何测试redis集群

how to test redis cluster

我有一个有 3 个主节点的 Redis 集群。 我对数据持久性不感兴趣,因为这是一个缓存解决方案。 我在 Windows 上 运行 v3.2。 当我手动停止其中一台服务器以查看是否仍可以访问数据库时,我得到 'CLUSTERDOWN The cluster is down error'。 即使要做到这一点,我也必须连接到仍在工作的实例之一。 我不明白这是如何实现高可用性的解决方案。 我希望我遗漏了一些东西。 当其中一个节点发生故障时我无法访问集群的任何想法? 谢谢。

集群创建command:ruby.exe redis-trib.rb创建127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002

正如您所说,您在 Redis 集群中使用了 3 个主节点,因此可以清楚地看到,如果其中一个节点出现故障,那么您将得到 CLUSTERDOWN 错误。

为了避免这些类型的错误并获得高可用性,最好将从节点连接到主节点(如 Redis 集群官方教程 here 中所示)。

为了获得更高的可用性,让从服务器与您的主服务器相连是有原因的。为此,您可以阅读上面 Redis 集群教程 link.

中提到的这些行

There are 16384 hash slots in Redis Cluster, and to compute what is the hash slot of a given key, we simply take the CRC16 of the key modulo 16384.

Every node in a Redis Cluster is responsible for a subset of the hash slots, so for example you have a cluster with 3 nodes, where:

1) Node A contains hash slots from 0 to 5500.

2) Node B contains hash slots from 5501 to 11000.

3) Node C contains hash slots from 11001 to 16383.

因此,每当您使用 SET Redis 集群中的一个键时,它都会计算该键的哈希槽值,并将键相应地保存在其中一个节点中。 这就是强制要求所有节点(至少主节点或其一个从节点)在 Redis 集群中处于活动状态的原因。

休息一下,如果您将至少 1 个从属节点与每个主节点连接到您的 Redis 集群中,您将获得更好的 Redis 集群可用性。将从属节点连接到主节点后,您可以通过手动关闭任何主节点来测试您的设置以获得更高的可用性。