一、搭建三主三从redis集群
① 创建7001~1006一共6个文件夹
② 拷贝一个原生的redis.conf文件到7001文件夹中, 并修改redis.conf
# 使用后台启动
daemonize yes
# 使用AOF持久化存储
appendonly yes
# 绑定ip
bind 192.168.92.130
# 修改端口号
port 7001
# 指定数据存放的目录
dir /home/zhutan/dev/redis/redis_cluster_run/7001/
# 启动集群模式
cluster-enabled yes
# 集群的配置, 该文件列出了其他集群的节点
cluster-config-file nodes7001.conf
# 节点超时时间
cluster-node-timeout 5000
# 修改进程pid文件(redis的进程id会写到这里)
pidfile /var/run/redis_7001.pid
③ 将7001文件夹下修改好的redis.conf拷贝到7002~7006文件夹中, 依次替换7001为对应编号
④ 安装ruby
reids集群依赖ruby环境, 所以要先安装ruby, 过程中遇到提示, yes即可
安装ruby, 由于redis需要ruby版本比较高, 而yum源下载最新的却比较低, 所以以下命令执行会有问题
yum install ruby
yum install rubygems
gem install redis
上面装不成功, 使用这个方式安装redis需要的高版本ruby, 过程中遇到提示, yes即可
# 会在/etc/yum.repos.d/目录下多出一个CentOS-SCLo-scl-rh.repo源
yum install centos-release-scl-rh
# 使用新版本安装ruby
yum install rh-ruby23 -y
# 使用新版本的环境变量
scl enable rh-ruby23 bash
# 查看ruby版本
ruby -v
# 安装
gem install redis
⑤ 启动redis服务端
./redis_server ../../redis_cluster_run/7001/redis.conf
./redis_server ../../redis_cluster_run/7002/redis.conf
./redis_server ../../redis_cluster_run/7003/redis.conf
./redis_server ../../redis_cluster_run/7004/redis.conf
./redis_server ../../redis_cluster_run/7005/redis.conf
./redis_server ../../redis_cluster_run/7006/redis.conf
⑥ 把redis服务进行集群
./redis-trib.rb create --replicas 1 192.168.92.130:7001 192.168.92.130:7002 192.168.92.130:7003 192.168.92.130:7004 192.168.92.130:7005 192.168.92.130:7006
⑦ 启动redis客户端
./redis-cli -c -h 192.168.92.130 -p 7001
二、动态添加master主节点
① 创建文件夹7007, 并拷贝一份7001的redis.conf, 替换7001为7007, 并启动7007的redis服务
./redis_server ../../redis_cluster_run/7007/redis.conf
② 添加节点到已存在的集群中, 第一个节点为要加的节点, 第二个节点为任意已经在集群里的节点
./redis-trib.rb add-node 192.168.92.130:7007 192.168.92.130:7001
③ 重新分配slot槽, 节点为任意一个主节点
./redis-trib.rb reshard 192.168.92.130:7001
④ 依次按照下图输入操作
填写分配槽的数量: 200
填写接收槽的主节点id
填写分配槽者: all
all (表示所有master中抽取)
是否接收分配方案, 填写yes
查询节点信息: cluster nodes
三、动态添加slave从节点
① 创建文件夹7008, 并拷贝一份7001的redis.conf, 替换7001为7008, 并启动7008端口的redis
./redis_server ../../redis_cluster_run/7008/redis.conf
② 添加节点到已存在的集群中
./redis-trib.rb add-node 192.168.92.130:7008 192.168.92.130:7001
③ 进入7008从节点:
./redis-cli -c -h 192.168.92.130 -p 7008
④ 查询要关联的主节点7007的id
cluster nodes
⑤ 把新加的从节点关联主节点
cluster replicate 5d2899164325c4ed9c9ed4571ce980105ea902b1
四、动态删除slave从节点
./redis-trib.rb del-node 192.168.92.130:7008 cecd5bdfbd69d49fdcb51b874a3d103574be2ad9
五、动态删除master主节点
① 移除分配的slot槽
./redis-trib.rb reshard 192.168.92.130:7007
② 指定返回slot槽数量
③ 指定接收的主节点id
④ 指定返回的主节点id
⑤ 填写done
⑥ 输入yes
⑦ 删除节点
./redis-trib.rb del-node 192.168.92.130:7007 5d2899164325c4ed9c9ed4571ce980105ea902b1