其中 , --replicas 1 表示为集群中的每个master节点创建一个slave节点 。 Redis4.x版本后 , Redis提供了另一种创建集群的方式 , 即使用 redis-cli 命令 , 该命令多了一个可以认证集群密码的功能 , 所以后来Redis就推荐使用 redis-cli 的方式来创建集群 , 命令如下:
其中 , --cluster-replicas 1 表示为集群中的每个master节点创建一个slave节点 。 我们在任意一台虚拟机上执行上面的命令:
可以看到创建的集群信息 , 包括master节点及其哈希槽信息、slave节点信息 。 输入“yes”确认信息 , 即可看到集群创建成功:
至此 , 我们的集群就创建好了 , 接下来就可以测试一下集群是否正常 。 在任意一台虚拟机上测试都可以 , 比如我们在192.168.31.77的master节点上添加一条数据 , 执行以下命令:
可以看到 , 当我们执行“set name aaa”的时候 , 自动重定向到了192.168.31.78:7002这台Redis实例中执行 , 而且也可以正常获取数据 。
向Redis集群中添加新节点如果我们要向上面运行的Redis集群中添加一个新节点 , 分两种情况:添加一个master节点 , 添加一个slave节点 。 这两种情况的第一步都是要新启动一个Redis实例 , 启动使用的配置文件与上面集群中的各节点的配置文件一致 , 只需要改一下port、cluster-config-file、pidfile三个选项的配置 。 此处 , 我们先在192.168.31.79虚拟机上启动一个端口号为7006的Redis实例 。
●添加一个master节点:如果要添加一个master节点到集群中 , 需要执行以下命令:
./bin/redis-cli --cluster add-node 192.168.31.79:7006 192.168.31.77:7000
其中 , 第一个参数是新的Redis节点的IP和端口 , 第二个参数是任意一个已经存在的Redis节点的IP和端口 。 执行之后效果如下:
上面命令执行成功之后 , 新的节点就已经添加到集群中了 , 可以通过cluster nodes命令查看:
但此时 , 这个新的master节点上是没有分配任何哈希槽的 , 我们还需要使用下面命令重新分配master节点的哈希槽:
redis-cli --cluster reshard 192.168.31.79:7006 --cluster-from 已有节点id , 多个id之间使用半角逗号分隔 --cluster-to 新节点id --cluster-slots 新节点的哈希槽数量
其中 , 节点id可以从cluster nodes结果中查看:
此处 , 我们需要将之前已存在的3个master节点上的部分哈希槽重新分配给新的节点 , 执行后结果如下:
输入yes确认后 , 结果如下 , 可以看到哪些哈希槽被分配到了新节点:
此时 , 就可以用该节点操作数据了:
●添加一个slave节点:添加slave节点与添加master节点差不多 , 我们首先在一台虚拟机上启动一个端口为7007的Redis实例 , 然后执行下面的命令将该Redis实例添加到集群中:
./bin/redis-cli --cluster add-node --slave 192.168.31.79:7007 192.168.31.77:7000 --cluster-master-id 0a55dba682340a513cce51a626e81c1789423249
其中 , --slave表示添加的是slave节点 , 192.168.31.79:7007是要添加的新节点 , 192.168.31.77:7000是集群中任意一个节点 , --cluster-master-id后面跟的是新的slave节点要添加到哪个master节点下面 , 此处 , 我们将新的slave节点添加到192.168.31.79:7006这台master节点下 。 执行结果如下:
此时 , cluster nodes结果中可以看到新的节点已经加入集群中了:
并且 , 使用新的节点也可以正常查询数据:
从Redis集群中移除节点移除集群中某个节点也分两种情况:移除master节点和移除slave节点 。
●移除master节点:由于master节点上分配的有哈希槽 , 所以当移除某个master节点之前 , 需要先将该节点上的哈希槽分配到其他节点上 , 然后在移除该节点 。
- 阿里巴巴|从 Redis7.0 发布看 Redis 的过去与未来
- 显示器|Redis高可用架构—哨兵(sentinel)机制详细介绍
- VMware|Redis高可用方案—主从(masterslave)架构
- 删除|一文读懂Redis内存淘汰策略
- iPhoneSE|Redis:在windows环境安装Redis
- var|Redis:在windows环境安装Redis
- 节点|统信正式推出高可用集群部署管理软件统信有备(UHA)
- CPU|Redis 7.0 Multi Part AOF 的设计和实现
- |一、Linux编译安装Redis
- 数据|央行:全面加强数据能力建设,建设绿色高可用数据中心
