PS:删除节点时,该实例不仅从当前集群移除,并且会被shutdown。
增加节点首先,启动对应节点。这里不再赘述。
其次,通过以下指令,实现节点添加:
/developer/redis-5.0.3/src/redis-cli --cluster add-node 172.26.40.226:6379 172.26.40.223:6379PS:上面两个连接信息,前者表示需要添加的新节点信息,后者表示集群中存在的节点信息(表示由该节点执行节点添加操作)。
PS:如果添加的节点是之前存在过集群中的节点,则会出现以下报错:
这个时候,根据报错信息,删除redis配置相关信息即可。即删除之前配置的 /developer/redis/data/目录下的三个文件:
然后启动目标实例(如果已经启动,请重启),即可成功运行,看到以下画面:
另外,资料中也有提到,可能在某些情况下,还需要进行db清除操作(但是我这里并不需要)。
增加从节点可以明显看出,上述的节点添加后,该节点直接成为了master节点。而我们往往需要添加从节点。
通过以下命令,我们可以为集群添加从节点:
/developer/redis-5.0.3/src/redis-cli --cluster add-node 172.26.40.226:6379 172.26.40.223:6379 --cluster-slave运行后,可以看到如下画面:
紧接着,校验一下:
这里默认是将新增从节点,分配给从节点数最少的主节点。
如果希望将新增从节点分配给指定的主节点,则需要以下指令:
/developer/redis-5.0.3/src/redis-cli --cluster add-node 172.26.40.226:6379 172.26.40.223:6379 --cluster-slave --cluster-master-id <master-id>具体执行其实都是类似的,这里不再赘述。
补充虽然分片集群有16384个槽点,理论可以支撑16384个Redis主实例,但是官方推荐是最多1000个实例(毕竟集群间通信等,还是存在瓶颈的)
redis集群的每个节点使用TCP连接有其它每个节点连接(这也算解释了前面一条)
数据倾斜与访问倾斜问题,需要通过调整key的策略,以及slot迁移实现。
这里剽窃一下网易云给出的迁移流程:
在迁移目的节点执行cluster setslot IMPORTING 命令,指明需要迁移的slot和迁移源节点。
在迁移源节点执行cluster setslot MIGRATING 命令,指明需要迁移的slot和迁移目的节点。
在迁移源节点执行cluster getkeysinslot获取该slot的key列表。
在迁移源节点执行对每个key执行migrate命令,该命令会同步把该key迁移到目的节点。
在迁移源节点反复执行cluster getkeysinslot命令,直到该slot的列表为空。
在迁移源节点和目的节点执行cluster setslot NODE ,完成迁移操作。
总结至此,Redis相关的各类安装操作,以及一些安装问题就全部说完了。
有什么问题,或者需要补充的,可以私信或@我。
觉得不错的话,可以帮忙点个推荐,以及分享给自己的小伙伴。