来源:https://juejin.im/post/5dae4cad518825208707f858
集群搭建
2018年10月 Redis 发布了稳定版本的 5.0 版本,推出了各种新特性,其中一点是集群管理工具从基于Ruby的redis-trib.rb移植到基于C语言redis-cli中,方便集群的构建和管理
Redis Cluster集群运行至少需要包含3个主节点,实现高可用最少需要3主3从6个节点
以下步骤基于Redis 5.0.5版本,介绍如何在一台 Linux 服务器上搭建有3主3从的6节点的 Redis集群
- 步骤1 创建安装目录
- 步骤2 下载源码并解压编译
执行make后,如果报错“jemalloc/jemalloc.h:没有那个文件或目录”,可以改为用以下命令:
- 步骤3 创建6个Redis配置文件 6个配置文件不能在同一个目录,下面Redis 6个节点分别安装在7000~7005端口 首先创建配置文件目录及文件,定义如下:
redis.conf配置文件的内容为:
其中 port 、 pidfile、cluster-config-file、appendfilename、 dbfilename配置需要随着节点的不同而调整
配置项说明可以参考redis-5.0.5/redis.conf,每一项都介绍得很详细,推荐阅读
- 步骤4 启动节点
ps -ef|grep redis,可以看到6个redis进程已启动:
![586ce75423ec035c31e3ba4049c34445.png](https://i-blog.csdnimg.cn/blog_migrate/0e783f0a79e6333485c23bf2e74d21e9.jpeg)
- 步骤5 启动集群 使用如下命令启动集群,IP地址自行替换:
启动成功信息如下:
![beb575452db4d2f494d8942444dc1a8c.png](https://i-blog.csdnimg.cn/blog_migrate/b6c789f05da3b323dd82d6f52ede3d3e.jpeg)
到此,Redis Cluster 集群搭建完成
集群信息查看
Redis5的redis-cli新增系列集群运维功能,查看命令详情:
![218afbbf57bbdb187ceaa9fcf89109db.png](https://i-blog.csdnimg.cn/blog_migrate/2ce5a02495d9dbc2e60e68ee9f401bf1.jpeg)
命令参数具体作用可以参考官方文档,下面会基于其中一些常用命令对集群进行管理
- 检查节点状态
![051f6445d6d6c4025f0ded7a31494fd1.png](https://i-blog.csdnimg.cn/blog_migrate/ff98674d4f90e707e2cee2de56e2f241.jpeg)
- 查看集群信息
![5cd388a0e77b05703d02f1f5c5caec29.png](https://i-blog.csdnimg.cn/blog_migrate/0c4727cec7064d36432ea40da10d664d.jpeg)
集群扩容
集群现在有3主3从,下面新增4个节点扩容变成5主5从
- 步骤1 启动新节点 创建4个Redis配置文件,端口号为7006~7009,然后启动节点(参考“集群搭建”的步骤3和步骤4)
- 步骤2 新节点加入集群 设置4个节点分别加入已有redis集群,2个为主节点,2个为从节点
此时集群状态如下,其中主节点7006和主节点7007还没分配任何slot,在下面的步骤会进行分配:
![a3d36cdf0cf9ae744d8046cd351cbb60.png](https://i-blog.csdnimg.cn/blog_migrate/a6c68ee9f8737198beb51566f1f9ee04.jpeg)
- 步骤3 模拟slot重新平衡分配 基于rebalance命令,增加--cluster-simulat参数,查看会迁移哪些slots,而不会真正执行迁移操作
返回以下迁移信息:
![c45311586ec61fd877ef40f39004a220.png](https://i-blog.csdnimg.cn/blog_migrate/31c9c436f9903fdbc6ad73c90cb4b290.jpeg)
- 步骤4 执行slot重新平衡分配 执行rebalance命令,平衡集群节点slot数量,重新分配slot( 去掉--cluster-simulat)
![a71213474cfd80ce403c92b0b627b168.png](https://i-blog.csdnimg.cn/blog_migrate/41ff98af38f13b90fc70170b0e656837.jpeg)
至此,集群扩容完成,集群缩容的话,需要基于reshard将需被下线的结点中的slot移到其他结点,然后基于del-node命令删除结点