提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
整个过程就是 启动 redis服务 开启集群模式 让各个redis服务知道其他节点的存在 分配槽位 设置主从
一、Redis集群搭建
1、构建redis服务
以docker 构建为例
docker create --name redis-node1 --net host -v /data/redis/node1:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node1.conf --port 6379
docker create --name redis-node2 --net host -v /data/redis/node2:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node2.conf --port 6380
docker create --name redis-node3 --net host -v /data/redis/node3:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node3.conf --port 6381
docker create --name redis-node4 --net host -v /data/redis/node4:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node4.conf --port 6382
docker create --name redis-node5 --net host -v /data/redis/node5:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node5.conf --port 6383
docker create --name redis-node6 --net host -v /data/redis/node6:/data redis:5.0.5 --cluster-enabled yes --cluster-config-file nodes-node6.conf --port 6384
redis-cli --cluster help 查看集群操作相关指令 (进入redis服务使用)
create host1:port1 ... hostN:portN
--cluster-replicas <arg>
## 创建集群指令
## --cluster-replicas <arg> 主从比例
## --cluster-replicas 1 一个主节点下1个从节点
redis-cli --cluster create 1.1.1.1:6379 1.1.1.1:6380 1.1.1.1:6381 1.1.1.1:6382 1.1.1.1:6383 1.1.1.1:6384 --cluster-replicas 1
查看创建好的集群
## 连接redis
redis-cli
## 查看集群信息
cluster nodes
二、Redis集群扩容
主要分为两步 1:将需要扩容的redis添加到集群 ;2、处理数据和槽位问题
1、添加节点
add-node new_host:new_port existing_host:existing_port
--cluster-slave
--cluster-master-id <arg>
## new_host:new_port 新的redis节点
## existing_host:existing_port 集群中已经存在的某个节点
## --cluster-slave 设置为从节点
## --cluster-master-id <arg> 设置为从节点后所挂的主节点
## 主节点 加入集群
redis-cli --cluster add-node 1.1.1.1:6385 1.1.1.1:6379
## 从节点 加入集群
redis-cli --cluster add-node 1.1.1.1:6386 1.1.1.1:6379 --cluster-slave --cluster-master-id [某个主节点id]
2、分配槽位
## 分配槽位到新主节点
reshard host:port
--cluster-from <arg>
--cluster-to <arg>
--cluster-slots <arg>
--cluster-yes
--cluster-timeout <arg>
--cluster-pipeline <arg>
--cluster-replace
redis-cli --cluster reshard 1.1.1.1:6385
分配槽位后 对应被迁移槽位数据也将迁移到新节点
三、Redis集群缩容
主要分为两步 1:处理数据和槽位问题 ;2、将需要缩容的redis从集群删除
1、处理数据和槽位问题
redis-cli --cluster reshard 1.1.1.1:6385 --cluster-from [要删除的节点id] --cluster-to [目标节点id] --cluster-slots [要删除节点的槽位数量]
数据迁移后,从节点将转移到目标节点下面
2、将需要缩容的redis从集群删除
redis-cli --cluster del-node 1.1.1.1:6385 [要删除的节点的id]