1、准备工作
搭建好了之后,在目录 /usr/local/redis/ 下,新建 myredis 目录
mkdir myredis
进入 myredis 目录中,新建6个文件夹,分别用端口来命名,例如:
mkdir redis7000
…
mkdir redis7005
这样我们就得到了6个文件夹
2、基础配置信息
我们从 /usr/local/redis/bin/ 目录下,复制一份配置文件出来,修改里面的配置内容
# 端口 port 7000
# 守护进程模式启动 daemonize yes
# 外部可连接,云服务器,写内网即可 # bind 127.0.0.1
# 外部所有的IP地址访问 protected-mode no
# 进程文件,以端口号区分 pidfile /var/run/redis_7000.pid
logfile "/usr/local/redis/myredis/redis7000/redis.log"
# 持久化文件存放位置 dir /usr/local/redis/myredis/redis7000/
3、集群配置信息
# 以集群的方式启动 cluster-enabled yes
# 集群配置信息文件 cluster-config-file nodes-7000.conf
# 超时时间 cluster-node-timeout 15000
cluster-replica-validity-factor 10
cluster-migration-barrier 1
保存,退出
4、复制配置文件
我们已经改好了 7000 端口实例的配置文件,我们使用命令,批量替换
sed 's/7000/7001/g' redis7000/redis.conf > redis7001/redis.conf
…
sed 's/7000/7005/g' redis7000/redis.conf > redis7005/redis.conf
这样就在 redis7001 里面得到了一份 redis.conf 文件,里面的端口从 7000 替换成了 7001,重复命令即可
5、启动实例
/usr/local/redis/bin/redis-server /usr/local/redis/myredis/redis7000/redis.conf
…
/usr/local/redis/bin/redis-server /usr/local/redis/myredis/redis7005/redis.conf
…
启动6个实例,查看 redis 运行情况
ps -ef | grep redis
可以看出,都是以集群的方式启动了实例
6、创建集群
/usr/local/redis/bin/redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 --cluster-replicas 1
- –cluster-replicas 1 表示主从比例 1:1,这样我们就得到三主三从的一个集群环境
7、登录 Redis
/usr/local/redis/bin/redis-cli -h 127.0.0.1 -p 7000
查看节点信息
cluster nodes
可以看到 三主三从的节点信息
8、添加节点
- 1、添加主节点
/usr/local/redis/bin/redis-cli --cluster add-node 127.0.0.1:7006 127.0.0.1:7000
- add-node:添加节点
- 127.0.0.1:7006:添加的节点 ip:port
- 127.0.0.1:7000:已存在集群的任意节点 ip:port
- 2、添加从节点
/usr/local/redis/bin/redis-cli --cluster add-node 127.0.0.1:7007 127.0.0.1:7000 --cluster-slave --cluster-master-id nodeId
- add-node:添加节点
- 127.0.0.1:7007:添加的节点 ip:port
- 127.0.0.1:7000:已存在集群的任意节点 ip:port
- –cluster-slave:添加为从节点
- –cluster-master-id:主节点 id
9、扩容
我们的集群存在槽位的概念,不用的 key 通过算法之后,确定它最终存放在哪个节点中,总的槽位有16384个,从 0 - 16383。
/usr/local/redis/bin/redis-cli --cluster reshard 127.0.0.1:7000
- reshard:指派槽
- 127.0.0.1:7000:已存在集群的任意节点 ip:port
输入:分配槽位的大小,这个根据实际情况而定
输入:分配的 nodeId
输入:从哪个 master 节点分配出来,有三种选项:all(全部,平均分配)、nodeId(具体的某一节点的id)、done(最后分配完成)
输入:yes
10、缩容
/usr/local/redis/bin/redis-cli --cluster reshard --cluster-from outNodeId--cluster-slots quantity inNode ip:port
- outNodeId:迁出的节点 id
- quantity:迁出的数量
- inNode ip:port:迁入的 ip:port
输入:接收的 nodeId
输入:yes
11、删除节点
/usr/local/redis/bin/redis-cli --cluster del-node 127.0.0.1:7000 nodeId
- 127.0.0.1:7000:已存在集群的任意节点 ip:port
- nodeId:要删除的节点的 id
注意:应先删除从节点,再删除主节点