Redis集群是Redis服务器高可用的设计模型,也是我们线上应用最多的Redis部署架构。本文主要针对Redis集 群入门搭建、Redis集群节点及其底层数据结构、hash槽、重新分片、消息等核心操作及原理进行分享。本文是基于Redis6.0.1版本展开。
集群搭建
在学习底层原理之前我们首先需要集群是如何应用及搭建部署的。本小节主要介绍集群搭建的核心步骤(本文都是在linux环境上进行操作,至于怎么下载Redis安装包及make过程不在本文讲解内容之内,因为它过于基础)。
环境准备
将安装好的Redis包放到任意目录,我这里是放到了/Users/mm/application/redis-cluster中。我这里就以伪集群的方式来进行说明(与集群搭建部署方式基本一致),部署6个集群节点。
-
在redis-cluster/config目录中新建6个目录(我这里分别命名为7001、7002、7003、7004、7005、7006,代表6个节点),将redis.conf配置和redis-server启动文件分别cp到这6个目录中(我这里也将每个节点的redis.conf配置文件也分别命名成redis7001.conf、redis7002.conf … …),并将这6个目录进行授权。
-
修改每个节点中redis.conf的配置(可以先修改一个节点的配置,然后使用例如sed -i ‘’ ‘s/7001/7002/g’ redis7002.conf):
bind 192.XXX.XXX.XXX #改为实际的外网ip port 7001 #端口(伪集群模式下ip一致、端口不一致) cluster-enabled yes #开启此配置,启用集群模式 logfile "/log7001.log" #集群日志文件配置,因为是伪集群,日志名称通过端口进行区分命名,集群下无所谓
-
新建一个redis集群启动脚本(因为节点太多,每个节点都用命令启动太麻烦了),脚本我就放在了redis-cluster根目录下,cluster.sh:
cd config/7001 ./redis-server ./redis7001.conf& cd ../7002 ./redis-server ./redis7002.conf& cd ../7003 ./redis-server ./redis7003.conf& cd ../7004 ./redis-server ./redis7004.conf& cd ../7005 ./redis-server ./redis7005.conf& cd ../7006 ./redis-server ./redis7006.conf&
启动
现在我们就可以启动集群了。
-
执行上面编写好的cluster.sh脚本。
mm@mmdeiMac redis-cluster % ./cluster.sh
-
启动之后查看reids进程:
我们看到6个节点都已经启动,并且是以cluster的模式启动。 -
但此时redis集群还没有真正搭建完成,因为此时主从节点还未分配、hash槽也未分配。下面为创建集群及自动分配hash槽: