redis哨兵模式是基于主从模式的,通过哨兵可以自动切换master服务器是谁,而原有模式下master一旦宕机,整个redis将不可用,在此处的话redis宕机,哨兵会将slave提升为master
进入sentinel配置文件
vim /opt/redis-6.2.1/sentinel.conf
修改配置
pidfile /var/run/redis-sentinel.pid #运行时PID文件
protected-mode no # 关闭保护模式
port 26379 # Redis哨兵默认的监听端口
daemonize yes # 指定sentinel为后台启动
logfile "/var/log/sentinel.log" # 指定日志存放路径
dir "/var/lib/redis/6379" # 指定数据库存放路径
#监控的节点名字可以自定义,后边的2代表的:如果有俩个哨兵判断这个主节点挂了那这个主节点就挂了,通常设置为哨兵个数一半加一
# 指定该哨兵节点监控10.0.0.11:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移
sentinel monitor mymaster 192.168.211.140 6379 2
# 当在Redis实例中开启了requirepass,这里就需要提供密码。
sentinel auth-pass mymaster redis6379
#哨兵连接主节点多长时间没有响应就代表主节点挂了,单位毫秒。默认30000毫秒,30秒。
sentinel down-after-milliseconds mymaster 30000
#在故障转移时,最多有多少从节点对新的主节点进行同步。这个值越小完成故障转移的时间就越长,这个值越大就意味着越多的从节点因为同步数据而暂时阻塞不可用
# 主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1。
sentinel parallel-syncs mymaster 1
# 故障转移的超时时间,这里设置为三分钟180000(180秒)
sentinel failover-timeout mymaster 180000
#禁止使用SENTINEL SET设置notification-script和client-reconfig-script
sentinel deny-scripts-reconfig yes
复制一份到redis配置文件位置,方便管理
cp /opt/redis-6.2.1/sentinel.conf /etc/redis/
启动哨兵,先启动master,在启动slave
redis-sentinel /etc/redis/sentinel.conf &
查看哨兵日志
tail -f /var/log/sentinel.log
查看主服务器哨兵状态
redis-cli -p 26379 info sentinel
#最后一行可以看到哨兵以监听到master状态,并有两个从机,三个哨兵
模拟故障
命令执行一个非法内存访问从而让redis崩溃,仅在开发时用户bug调试,后续需要重启服务。
#登录redis
[root@redis-master redis]# redis-cli -h 192.168.211.140 -p 6379 -a redis6379
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
192.168.211.140:6379> debug segfault
Could not connect to Redis at 192.168.211.140:6379: Connection refused
(0.63s)
not connected>
not connected> exit
[root@redis-master redis]# ps aux | grep redis
root 2273 0.3 0.5 162496 9972 ? Ssl 13:20 0:03 redis-sentinel *:26379 [sentinel]
root 2312 0.0 0.0 112812 976 pts/1 S+ 13:34 0:00 grep --color=auto redis
#可以看到已经没有rendis的进程了
查看哨兵信息
redis-cli -p 26379 INFO Sentinel
重启redis
/etc/init.d/redis_6379 start
查看服务信息
redis-cli -p 6379 -a redis6379 INFO Replication
可以看到140已变为salve,