Redis Cluster 在5.0之后取消了ruby脚本 redis-trib.rb的支持(手动命令行添加集群的方式不变),集合到redis-cli里,避免了再安装ruby的相关环境。
直接使用redis-clit的参数--cluster来取代。为方便后面查询就说明下如何使用该命令进行Cluster的创建和管理
redis-cli --cluster help
|
注意:Redis Cluster最低要求是3个主节点。如果需要密码认证,则在最后加入 -a xx 即可
① 创建集群主节点
创建主节点
|
② 创建集群主从节点
创建主从节点
|
--cluster-replicas 参数为数字,1表示每个主节点需要1个从节点。通过该方式创建的带有从节点的机器不能够自己手动指定主节点,所以如果需要指定的话,需要自己手动指定,先使用①或③创建好主节点后,再通过④来处理。
③ 创建集群主节点
添加主节点
|
说明:为一个指定集群添加节点,需要先连到该集群的任意一个节点IP(192.168.163.132:6379),再把新节点加入。该2个参数的顺序有要求:新加入的节点放前
④ 创建集群从节点
创建从节点
|
说明:把6382节点加入到6379节点的集群中,并且当做node_id为 117457eab5071954faab5e81c3170600d5192270 的从节点。如果不指定 --cluster-master-id 会随机分配到任意一个主节点。
⑤ 删除节点
删除节点
|
说明:指定IP、端口和node_id 来删除一个节点,从节点可以直接删除,主节点(即使没有key)不能删除,从节点删除之后,会被shutdown。
注意:当被删除掉的节点重新起来之后不能自动加入集群,但其和主的复制还是正常的,也可以通过该节点看到集群信息(通过其他正常节点已经看不到该被del-node节点的信息)。
如果想要再次加入集群,则需要先在该节点执行cluster reset,再用add-node进行添加,进行增量同步复制。
到此,目前整个集群的状态如下:
集群状态
|
⑥ 检查集群
检查
|
说明:任意连接一个集群节点,进行集群状态检查
⑦ 集群信息查看
查看
|
说明:检查key、slots、从节点个数的分配情况
⑧ 修复集群
修复
|
⑨ 设置集群的超时时间
设置超时
|
说明:连接到集群的任意一节点来设置集群的超时时间参数cluster-node-timeout
⑩ 集群中执行相关命令
执行命令
|
说明:连接到集群的任意一节点来对整个集群的所有节点进行设置。
① 在线迁移slot :在线把集群的一些slot从集群原来slot节点迁移到新的节点,即可以完成集群的在线横向扩容和缩容。有2种方式进行迁移
一是根据提示来进行操作:
迁移
|
二是根据参数进行操作:
迁移
|
说明:连接到集群的任意一节点来对指定节点指定数量的slot进行迁移到指定的节点。
② 平衡(rebalance)slot :
1)平衡集群中各个节点的slot数量
平衡
|
2)根据集群中各个节点设置的权重等平衡slot数量(不执行,只看计划)
模拟
|
③ 导入集群
导入
|
说明:外部Redis实例(9021)导入到集群中的任意一节点。
注意:测试下来发现参数--cluster-replace没有用,如果集群中已经包含了某个key,在导入的时候会失败,不会覆盖,只有清空集群key才能导入。
|
并且发现如果集群设置了密码,也会导入失败,需要设置集群密码为空才能进行导入(call)。通过monitor(9021)的时候发现,在migrate的时候需要密码进行auth认证。