写在前面
前面文章讲解了Redis的单机搭建图解,各位靓仔可以移步 Redis从0到1 单机搭建,Redis.conf配置文件详解
这里讲一下Redis的集群搭建过程,也是基于前面的单机搭建过程
Redis集群架构图:
6000(master) 6003(slave)
6001(master) 6004(slave)
6002(master) 6005(slave)
编写配置文件,修改配置
建立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
修改各个文件的配置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
启动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
开启集群模式
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 并且划分对应的槽道信息
需要特别注意的是 这里一定是填写 yes的(很多靓仔会写成y 后续会有n多报错的)
集群验证
集群已经搭建好了,现在我们来验证一下功能,以及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 设置失败
再到6001 master 测试一下
./redis-cli -p 6000 -a testDemo
发现test1,test3 设置失败
也就是正常来讲Redis的槽道分区算法 将test1-->6000,test2-->6001,test3-->6002平均分配了
附录
Redis槽道0~16363 18364个 即2^14