搭建Redis高可用Cluster集群环境

首先搭建单机版 Redis 环境,可以参考我的博客:Centos7中搭建Redis环境

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

注意:应先删除从节点,再删除主节点

如您在阅读中发现不足,欢迎留言!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Asurplus

学如逆水行舟,不进则退

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值