sentinel功能
redis的sentinel系统用于管理多个redis服务器,该系统主要执行三个任务:监控、提醒、自动故障转移。
1、监控(Monitoring): Redis Sentinel实时监控主服务器和从服务器运行状态,并且实现自动切换
2、提醒(Notification):当被监控的某个 Redis 服务器出现问题时, Redis Sentinel 可以向系统管理员发送通知, 也可以通过 API 向其他程序发送通知。这个需要我们指定相关的代码,比如发邮件、事务的处理等等
3、自动故障转移(Automatic failover): 当一个主服务器不能正常工作时,Redis Sentinel 可以将一个从服务器升级为主服务器, 并对其他从服务器进行配置,让它们使用新的主服务器。当应用程序连接Redis 服务器时, Redis Sentinel会告之新的主服务器地址和端口
注意:在使用sentinel监控主从节点的时候,从节点需要是使用动态方式配置的,如果直接修改配置文件,后期sentinel实现故障转移的时候会出问题
主观下线和客观下线:
1、主观下线状态:当一个sentinel认为一个redis服务连接不上的时候,会给这个服务打个标记为下线状态。
2、客观下线状态:当多个sentinel认为一个redids连接不上的时候,则认为这个redis服务确实下线了。这里的多个sentinel的个数可以在配置文件中设置。一般集群中一半的从节点都认为主机下线了,就进行主机选举机制,选出新的主机节点
sentinel配置
- sentinel monitor mymaster 192.168.33.130 6379 2 #最后一个参数视情况决定 ,一般为从节点数量的一半;最后一个参数为需要判定客观下线所需的主观下线sentinel个数,这个参数不可以大于sentinel个数
- 启动sentinel redis-sentinel sentinel.conf
sentinel的一些命令
- INFO sentinel的基本状态信息
- SENTINEL masters 列出所有被监视的主服务器,以及这些主服务器的当前状态
- SENTINEL slaves <master name> 列出给定主服务器的所有从服务器,以及这些从服务器的当前状态
- SENTINEL get-master-addr-by-name <master name> 返回给定名字的主服务器的 IP 地址和端口号
- SENTINEL reset <pattern> 重置所有名字和给定模式 pattern 相匹配的主服务器。重置操作清除主服务器目前的所有状态, 包括正在执行中的故障转移, 并移除目前已经发现和关联的, 主服务器的所有从服务器和 Sentinel
- SENTINEL failover <master name> 当主服务器失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移,但是它会给其他sentinel发送一个最新的配置,其他sentinel会根据这个配置进行更新
具体操作
- 新建sentinel文件夹,在其下新建20190、20191、20192和scripts文件夹,在文件夹的名字也是其对应的端口名字,在端口名字文件夹下新建conf、data和logs文件夹
- mkdir sentinel
- mkdir -pv {20190,20191,20192}/{conf,data,logs}
- 启动方式redis-server 20190/conf/sentinel.conf --sentinel
- 或者redis-sentinel 20190/cong]f/sentinel.conf
- 在sentinel文件夹下,此时此文件下存放的就是20190、20191和20192文件夹,使用命令cp 20190/conf/sentinel.conf 20191/conf完成conf文件的拷贝,使用命令sed -i "s/20190/20191/g" 20191/conf/sentinel.conf完成将20190替换为20191的文本替换,完成即可,别的不需要动,具体内容如下
#20190
#指定端口号
port 20190
#指定后台运行
daemonize yes
#指定内网地址
bind 192.168.13.50
#指定数据文件夹
dir "/home/bfxy/servers/sentinel/20190/data"
#指定日志问价夹
logfile "/home/bfxy/servers/sentinel/20190/logs/sentinel.log"#指定master的连接名字是mymaster,连接的地址和端口号,2代表如果两个从节点认为主节点失效了,就进行master的选举
sentinel monitor mymaster 192.168.13.50 10191 2
#设置超时时间20秒
sentinel failover-timeout mymaster 20000
#指定脚本文件
sentinel notification-script mymaster /home/bfxy/servers/sentinel/scripts/notify.sh
# Generated by CONFIG REWRITE
sentinel client-reconfig-script mymaster /home/bfxy/servers/sentinel/scripts/reconfig.sh
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 8
sentinel known-sentinel mymaster 192.168.13.50 20191 e3f1be1924eba40a3698be5d81433ce133289315
sentinel known-sentinel mymaster 192.168.13.50 20192 8d47dce1af43f144d7b868969740cefef7d0e034
sentinel current-epoch 8
- 在src目录下,使用命令redis-sentinel /user/local/redis-4.0.14/sentinel/20190/conf/sentinel.conf启动服务,20191和20192也是这样操作
- 在src目录下,使用命令redis-cli -h 192.168.133.130 -p 20190,使用客户端连接到服务器