redis5.0以后版本 搭建集群

redis5.0以前为什么要用ruby?

因为在redis/src中有一个文件redis-trib.rb,是用Ruby写的,用来搭建redis集群(redis3.0版本时才开始支持集群),所以想要搭建redis集群需要有一个能执行.rb的Ruby运行环境。
同时ruby的运行又依赖redis.gem这个文件。
所以在5.0以前 集群的搭建需要 安装ruby环境,下载gem文件。
 

redis5.0以后的版本
集群搭建,不需要借助ruby
https://blog.csdn.net/qq_25215821/article/details/100997778

新版命令:
src/redis-cli --cluster create --cluster-replicas 1
ip1:6379 ip2:6380 ip3:6381
ip1:6382 ip2:6383 ip3:6384

坑-1: https://www.liangzl.com/get-article-detail-40471.html

      redis集群部署一直卡在  Waiting for the cluster to join ......  

   原因:redis集群总线端口为redis客户端端口加上10000,比如说你的redis 6379端口为客户端通讯端口,那么16379端口为集群总线端口

   解决:添加redis 集群总线端口 和每个redis实例的通信端口
坑-2
https://www.jianshu.com/p/7720c922dd80
      ERR] Node 192.168.10.204:6379 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
解决:
  首先关闭redis
  其次如果之前redis有数据存在,flushall清空;
  然后关闭redis删除 redis目录如下文件: dump.rdb,nodes-6379.conf
  重启解决

加节点(扩容)

1-    加配置文件,主,从,修改端口,启动两个新的redis

2-    新主节点与已知主节点进行关联

3-    绑定从节点      

redis-cli --cluster add-node newip:newport knownip:knownport

进入从节点

执行 CLUSTER REPLICATE masterid

4-    重新分配槽位    redis-cli --cluster reshared newmasterip:port

减节点

先删除从节点;再删除主节点

redis-cli --cluster del-node  ip:port id

删除主节点时:

1-    先把槽位放回。注意:目前只能把master的数据迁移到一个节点上,暂时做不了平均分配功能,或者可以自己手动分配平均的槽位给各个主节点

redis-cli --cluster reshard delip:delport

①这里是指定分配的槽位。

 

②紧接着是指定接收槽位的节点id

 

③这里是指定贡献出槽位的节点id,步骤是 先输入 节点id,回车之后,再输入 done,再回车

 

2-    再进行移除节点

redis-cli --cluster del-node ip:port id

 

 版本5.0.2集群搭建:

https://blog.csdn.net/qq_34002221/article/details/85019752

https://blog.csdn.net/qq_25215821/article/details/100997778

 

posted @ 2019-12-21 23:43  魔杰Lee  阅读(912)  评论(0编辑  收藏  举报