Redis 集群结构搭建 保姆级图文教程

350 阅读2分钟

写在前面

前面文章讲解了Redis的单机搭建图解,各位靓仔可以移步 Redis从0到1 单机搭建,Redis.conf配置文件详解

这里讲一下Redis的集群搭建过程,也是基于前面的单机搭建过程

Redis集群架构图:

6000(master) 6003(slave)

6001(master) 6004(slave)

6002(master) 6005(slave)

wecom-temp-8927be6115fb52440fd0482694f2fed3.png

编写配置文件,修改配置

建立6个不同的文件夹📁,存放6个实例的不同配置redis.conf
cd /usr/local/redis
mkdir 6000
...
mkdir 6005
将redis配置文件拷贝过去
cp /usr/local/redis/bin/redis.conf /usr/local/redis/6000
...
cp /usr/local/redis/bin/redis.conf /usr/local/redis/6005

企业微信截图_93a6e83e-82a1-4932-a523-98d6bf464c76.png

修改各个文件的配置redis.conf
vi /usr/local/redis/6000/redis.conf
port 6000
daemonize yes 
pidfile /var/run/redis_6000.pid 
# 开启集群模式 
cluster-enabled yes 
# 密码
masterauth testDemo
cluster-config-file nodes_6000.conf 
# 请求超时时间
cluster-node-timeout 10000 

...
vi /usr/local/redis/6005/redis.conf
port 6005
daemonize yes 
pidfile /var/run/redis_6005.pid 
# 开启集群模式 
cluster-enabled yes 
# 密码
masterauth testDemo
cluster-config-file nodes_6005.conf 
# 请求超时时间
cluster-node-timeout 10000 

企业微信截图_76771cd4-c512-4d00-8b19-5a7422ab8e00.png

启动Redis实例

直接启动上述配置的6个实例
cd /usr/local/redis/bin
./redis-server /usr/local/redis/6000/redis.conf
./redis-server /usr/local/redis/6001/redis.conf
./redis-server /usr/local/redis/6002/redis.conf
./redis-server /usr/local/redis/6003/redis.conf
./redis-server /usr/local/redis/6004/redis.conf
./redis-server /usr/local/redis/6005/redis.conf  

企业微信截图_3e0eebb5-62cd-48e3-b38b-f786dcbebbd5.png

开启集群模式

6个实例启动成功后,开启集群模式
 cd /usr/local/redis/bin
 ./redis-cli --cluster create --cluster-replicas 1 127.0.0.1:6000 127.0.0.1:6001 127.0.0.1:6002  127.0.0.1:6003  127.0.0.1:6004  127.0.0.1:6005  -a testDemo

这里的启动过程已经可以看到Redis 划分出三个master 并且划分对应的槽道信息    

企业微信截图_945ae619-f996-4c9e-ab91-0e5c37d90700.png

需要特别注意的是 这里一定是填写 yes的(很多靓仔会写成y 后续会有n多报错的)

企业微信截图_54ee5418-285a-4fe8-8639-0d70b7651c74.png

集群验证

集群已经搭建好了,现在我们来验证一下功能,以及Redis的虚拟槽分区算法CRC16(key)%16383 
简单来说就是
set test1 haha
set test2 xixi
set test3 jiji
Redis通过槽道算法,会将这三个数据 平均分配到不同的master(6000,6001,6002)上面去
我们先在6000 master测试一下
cd /usr/local/redis/bin
./redis-cli -p 6000 -a testDemo
发现 test2,test3 设置失败

企业微信截图_06765355-f7c3-4578-a35b-64330887ba6e.png

再到6001 master 测试一下
./redis-cli -p 6000 -a testDemo
发现test1,test3 设置失败

企业微信截图_f4216c84-a95c-4805-bf8f-bee9cff95cf7.png

也就是正常来讲Redis的槽道分区算法 将test1-->6000,test2-->6001,test3-->6002平均分配了

附录

Redis槽道0~16363 18364个 即2^14