- Redis版本5.0.5
- 由于Cluster自带Sentinel的故障转移机制,所以不再需要开启Sentinel
- Shane这里设定6380 6381 6382
- 两台云服务器三主三从,一台全放主一台全放从
- 一共6个配置文件
配置Redis.conf
- 复制一份原版的redis.conf
- 对原版配置文件的以下内容进行修改,其他不管
# bind 127.0.0.1
protected-mode no
# 其他配置文件端口写对应即可(6380 6381 6382)
port 6380
# 进程守护开启(后台运行)
daemonize yes
# pidfile、logfile、dir可以选一个自己喜欢的位置放(不解释都是啥了,见名知意)
pidfile "/www/server/redis/redis-6380.pid"
logfile "/usr/local/redis/redis-6380.log"
dir "/usr/local/redis/data"
# 注意:Cluster模式下不可和主从复制同时开启(5版本为replicaof 3版本为slaveof,将其保持为注释状态)
# 配置密码
masterauth "passadmin"
requirepass "passadmin"
# aof和rdb两种持久化可同时存在(那就都开启吧)
appendonly yes
# Cluster配置
cluster-enabled yes
cluster-config-file nodes-6380.conf
cluster-node-timeout 15000
开放端口
- 配置完成后,需要开放端口
- 在主节点的端口号上+10000
- 16380 16381 16382
启动节点
- 将全部节点(6个节点)启动
# cd进配置文件所在地
redis-server redis-6380.conf
三主分配SLOT
- 指定主节点都是谁
# *为指定的主节点IP,数字0是主从比例(因为没有指定从所以为0),-a后面写设定的密码
redis-cli --cluster create *.*.*.*:6380 *.*.*.*:6381 *.*.*.*:6382 --cluster-replicas 0 -a passadmin
- 输入yes并回车
- 从上图还能看到各个主节点的ID,可以先记录下来(后面也需要用到)
- 没记录下来,也可以去日志中查看
添加从节点
- 三个主节点弄完之后,可以为每个主节点,添加从节点了
# 第一个IP地址为从节点地址,第二个IP为主节点IP(从节点要从属的主节点)
# 一大串乱七八糟的是主节点的ID(不知道可以从日志中查看)
# -a 为密码(没有去掉就行)
redis-cli --cluster add-node *.*.*.*:6380 *.*.*.*:6380 --cluster-slave --cluster-master-id e937d5721a6a9344db670754329e5c23a3b31006 -a passadmin
- 如图则添加成功,如果卡在Waiting for the cluster to join…然后一直出点点点,则为端口没开放,需开放端口
测试
- 随便进一个cli
# -c为集群的意思
redis-cli -c -p 6380
# 输入密码
auth passadmin
- 输入cluster nodes命令
cluster nodes
- 输入set shane 666 或者set redis 666,会发现有的情况下会redirect到Cluster分配的slot的主节点去
set shane 666
set redis 666
故障转移测试
- 手动shutdown一个主节点
- 此时查看日志
- 从日志中可以看到已经成功将从节点提升为主节点(和Sentinel功能一致)
- 再去cli中输入cluster nodes看看
- 从图中可以看出方块是原来的主节点,椭圆为原来的从节点,现在提升为了主节点
至此Cluster启动完毕
- Shane在B站的TP6视频
- 用ThinkPHP6制作后台