redis 集群 cluster
Redis集群101
Redis Cluster提供了一种运行Redis安装的方法,在该安装中,数据会 在多个Redis节点之间自动分片。
Redis Cluster在分区期间还提供了一定程度的可用性,这实际上就是在某些节点出现故障或无法通信时继续操作的能力。但是,如果发生较大故障(例如,大多数主服务器不可用时),群集将停止运行。
因此,实际上,Redis Cluster能带来什么?
- 自动分割在多个节点之间的数据集。
- 当一部分节点出现故障或无法与其余群集通信时,可以继续操作。
Redis群集TCP端口
每个Redis群集节点都需要打开两个TCP连接。用于服务客户端的常规Redis TCP端口,例如6379,再加上在数据端口上加上10000所获得的端口,在示例中为16379。
第二个高端口用于群集总线,即使用二进制协议的节点到节点通信通道。节点将群集总线用于故障检测,配置更新,故障转移授权等。客户端永远不要尝试与群集总线端口进行通信,而应该始终与普通的Redis命令端口进行通信,但是请确保您同时打开防火墙中的两个端口,否则Redis群集节点将无法进行通信。
命令端口和集群总线端口偏移是固定的,并且始终为10000。
请注意,对于每个节点,要使Redis群集正常工作,您需要:
- 普通客户端通信端口(通常为6379)用于与客户端通信,以向需要访问群集的所有客户端以及所有其他群集节点(使用客户端端口进行密钥迁移)开放。
- 群集总线端口(客户端端口+ 10000)必须可以从所有其他群集节点访问。
如果您没有同时打开两个TCP端口,则群集将无法正常工作。
集群总线使用不同的二进制协议进行节点到节点的数据交换,它更适合于使用很少的带宽和处理时间在节点之间交换信息。
Redis集群配置参数
我们将创建一个示例集群部署。在继续之前,让我们介绍Redis Cluster在redis.conf文件中引入的配置参数。当您继续阅读时,有些会很明显,有些会更清晰。
- cluster-enabled<yes/no>:如果是,则在特定的Redis实例中启用Redis Cluster支持。否则,该实例将像往常一样作为独立实例启动。
- cluster-config-file<filename>:请注意,尽管有此选项的名称,但它不是用户可编辑的配置文件,而是Redis Cluster节点每次发生更改时都会自动保留集群配置(基本上是状态)的文件,为了能够在启动时重新阅读它。该文件列出了诸如集群中其他节点之类的东西,它们的状态,持久变量等等。通常,由于收到某些消息,此文件将被重写并刷新到磁盘上。
- cluster-node-timeout<milliseconds>:Redis群集节点不可用的最长时间(不将其视为失败)。如果主节点无法访问的时间超过指定的时间长度,则其主节点将对其进行故障转移。此参数控制Redis Cluster中的其他重要事项。值得注意的是,在指定的时间内无法到达大多数主节点的每个节点都将停止接受查询。
- cluster-slave-validity-factor<factor>:如果设置为零,则从服务器将始终认为自己是有效的,因此将始终尝试对主服务器进行故障转移,而与主服务器和从服务器之间的链接保持断开状态无关。如果该值为正,则将最大断开时间计算为节点超时值乘以此选项提供的因子,如果节点是从节点,则如果断开主链接的时间超过指定的时间,它将不会尝试启动故障转移。例如,如果节点超时设置为5秒,而有效性因子设置为10,则与主服务器断开连接的从服务器超过50秒将不会尝试对其主服务器进行故障转移。请注意,如果没有从属设备可以对其进行故障转移,则任何非零的值都可能导致Redis群集在主设备发生故障后不可用。在这种情况下,只有当原始主服务器重新加入集群后,集群才会恢复可用。
- cluster-migration-barrier<count>:主机将保持连接的最小数量的从机,以便另一个从机迁移到不再受任何从机覆盖的主机。有关更多信息,请参见本教程中有关副本迁移的相应部分。
- cluster-require-full-coverage<yes/no>:如果设置为yes,默认情况下,如果某个节点未覆盖一定比例的密钥空间,集群将停止接受写入。如果该选项设置为no,即使仅可以处理有关密钥子集的请求,群集仍将提供查询。
- cluster-allow-reads-when-down<yes/no>:如果将其设置为no(默认情况下为默认值),则当Redis群集被标记为失败时,或者当节点无法到达时,Redis群集中的节点将停止为所有流量提供服务法定人数的主持人或未达到完全覆盖的情况。这样可以防止从不知道群集更改的节点读取可能不一致的数据。可以将此选项设置为yes,以允许在失败状态期间从节点进行读取,这对于希望优先考虑读取可用性但仍希望防止写入不一致的应用程序很有用。当仅使用一个或两个分片的Redis Cluster时,也可以使用它,因为它允许节点在主服务器发生故障但无法进行自动故障转移时继续为写入提供服务。
配置好6个节点后输入集群命令:
redis-cli --cluster create 127.0.0.1:6380 127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 127.0.0.1:6385 --cluster-replicas 1
附件实例:
链接:https://pan.baidu.com/s/1o6uqsOY1eePNuBCYal6Xzw
提取码:1997
我还有头发,还学得动。

浙公网安备 33010602011771号