哨兵(sentinel)模式是基于主从模式配置的,所以在配置哨兵模式之前需要先配置主从复制,具体过程可以看《Redis - 主从复制模式配置》,这里忽略不说,直接配置哨兵模式
哨兵一般情况下不跟Redis进程放在同一个机器里,防止一同挂了。我这里是放在同一个机器里的,同时,一台机器可以有多个哨兵,我这里每台机器里只放1个哨兵
IP地址 | 系统版本 | redis版本 | |
maste | 192.168.10.11 | Centos 7.8 | redis-7.0.0 |
slave-1 | 192.168.10.12 | ||
slave-2 | 192.168.10.13 |
0. 完成主从复制模式配置、关闭Redis
systemctl stop redis
1. 修改配置文件
vim Redis目录/sentinel.conf
# Redis目录即是redis软件包解压后的目录,具体可以看教程《Redis - 主从复制模式配置》
# 一台机器有多个哨兵时则需要创建多个sentinel.conf文件,只有一个时用系统自带的即可
# 修改、增加以下内容
protected-mode no
bind 本机IP
daemonize yes
pidfile "/var/run/redis-sentinel.pid" #默认即可
logfile "/var/log/redis-sentinel.log"
sentinel monitor mymaster master的IP 6379 2
sentinel auth-pass mymaster 密码 #设置密码
2. 启动哨兵
systemctl start redis # 先启动主(master)服务器,再启动从(slave)服务器
redis-sentinel Redis目录/sentinel.conf
哨兵正常启动后的 sentinel.conf 文件
3. 测试角色切换
(1)在主(master)服务器和从(slave)服务器上分别查看信息
redis-cli -h 本机IP -a 上面设置的密码 info replication
(2)停掉主(master)的redis,再看信息
systemctl stop redis
redis-cli -h 本机IP -a 上面设置的密码 info replication # 在从(slave)服务器上看
# 可以看到,刚开始显示master主机是192.168.10.11,状态为down
# 过30秒后再看,master主机变为192.168.10.12.状态为up
(3)去新的master机(即192.168.10.12) 上看
redis-cli -h 本机IP -a 上面设置的密码 info replication # 在新master服务器上看
# 可以看到,原来的master机现在变成了slave
4. 测试读写切换
(1) 在《Redis - 主从复制模式配置》中,slave机可以读取但不能写入。
(2)现在在新的master机(即原来的slave机) 上写入数据
redis-cli -h 本机IP
auth 密码
# 查看原来的数据
get xx
# 写入新数据
set xx xxx
(3)在slave(即原来的master机)上查看并写入数据
redis-cli -h 本机IP
auth 密码
# 查看的数据。可以看到数据
get xx
# 写入新数据。写入失败
set xx xxx