文章目录
Redis哨兵模式
- 哨兵的核心功能:在主从复制的基础上,哨兵引入了主节点的自动故障转移
原理
哨兵sentine 是一个分布式系统,用于对主从结构中的每台服务器进行监控,当出现故障时通过投票机制选择新的master并将所有的slave连接到新的master,所以整个运行哨兵的集群的数量不得少于三个节点。
作用
监控:
哨兵会不断的检查主节点和从节点是否运作正常
自动故障转移:
当主节点不能正常工作时,哨兵会开始自动故障转移操作,会将失效主节点的其中一个从节点审计为新的主节点,并让其他从节点改为复制新的主节点。
通知/提醒:
哨兵可以将故障转移的结果发送给客户端
结构(哨兵节点&&数据节点)
哨兵节点:哨兵系统由一个或者多个哨兵节点组成,而哨兵节点是由特殊的redis节点,不存储数据
数据节点:主节点和从节点都是数据节点
哨兵的启动依赖于主从模式—>所以要做好主从后做哨兵模式,所有节点上都需要部署哨兵模式,哨兵模式会监控所有的redis工作节点是否正常,当master出现问题的时候,因为其他节点与主节点失去联系,所以会投票,投票过半就会认为这个master的却出现问题后会通知哨兵键,然后从slave中选取一个作为新的master
- 注意,客观下线是主节点才有的概念,如果从节点和哨兵节点发生故障,被哨兵主关下线后,不会再有后续的客观下线和故障转移操作
哨兵模式的搭建
环境配置
基于主从复制搭建
master 192.168.3.12
slave 192.168.3.13
slave 192.168.3.14
以上都需要安装redis包
修改 Redis 配置文件(所有节点操作)
systemctl stop firewalld
setenforce 0
vim /opt/redis-5.0.7/sentinel.conf
protected-mode no #17行,关闭保护模式
port 26379 #21行,Redis哨兵默认的监听端口
daemonize yes #26行,指定sentinel为后台启动
logfile "/var/log/sentinel.log" #36行,指定日志存放路径
dir "/var/lib/redis/6379" #65行,指定数据库存放路径
sentinel monitor mymaster 192.168.3.12 6379 2 #84行,修改 指定该哨兵节点监控192.168.184.10:6379这个主节点,该主节点的名称是mymaster,最后的2的含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移
sentinel down-after-milliseconds mymaster 30000 #113行,判定服务器down掉的时间周期,默认30000毫秒(30秒)
sentinel failover-timeout mymaster 180000 #146行,故障节点的最大超时时间为180000(180秒)
启动哨兵模式,先启master,再启slave
cd /opt/redis-5.0.7/
redis-sentinel sentinel.conf &
注意!先启动主服务器,再启动从服务器
故障模拟
查看redis-server进程号
[root@localhost redis-5.0.7]# ps aux |grep redis
root 18913 0.1 0.1 156404 7412 ? Ssl 15:07 0:01 /usr/local/redis/bin/redis-server 0.0.0.0:6379
root 38894 0.2 0.1 153844 7588 ? Ssl 15:22 0:00 redis-sentinel *:26379 [sentinel]
root 45522 0.0 0.0 112680 984 pts/3 S+ 15:27 0:00 grep --color=auto redis
[1]+ 完成 redis-sentinel sentinel.conf
杀死 Master 节点上redis-server的进程号
kill -9 18913 #Master节点上redis-server的进程号
redis-cli -p 26379 INFO Sentinel
显示192.168.3.13已经成为新master
总结
哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例
哨兵模式优缺点
优点:
1、哨兵集群,基于主从复制模式,所有的主从配置优点,它都有
2、主从可以切换,故障可以转移,高可用性的系统
3、哨兵模式就是主从模式的升级,手动到自动,更加健壮
缺点:
1、Redis不好在线扩容的,集群容量一旦到达上限,在线扩容就十分麻烦
2、哨兵模式的配置繁琐