Redis哨兵模式
1.哨兵模式是什么
解释一
哨兵巡查监控 master主机是否故障,如果故障了,根据投票数自动将一个从库转换为新数据库,继续对外服务。
解释二
- 监控redis 的运行状态,包括master和slave
- 当master宕机后,能自动将slave切换新的master.
俗称 无人值守运维。
2.能干嘛?
- 主从监控:监控主从redis库运行是否正常
- 配置中心:客服端通过连接哨兵来过的当前redis服务的主节点地址
- 故障转移: 如果master异常,会进行主从切换,将其中一个slave作为新的Master
- 消息通知:哨兵可以将故障转移的结果发送给其他客户端
3.参数解释
1.sentinel monitor master-name ip redisport quorum
quorun: 确认客观下线的最少哨兵数量(同意故障迁移的票数)]
我们知道,网络是不可靠的,有时候一个sentinel会因为网络阻塞而误以为
一个master redis已经死掉了,在sentinel集群环境下,需要多个sentinel互相沟通,来确认某个master是否真的死了,quorum这个参数是进行客观
下线的一个依据了.因为有点时候,某个sentinel节点可能因为自身网络原因
导致无法连接master,而此时master并没有出现故障。所以,这就需要多个
sentinel都一致认为master有问题,才可以进行下一步操作,这就保证了公
平性和高可用。
2.sentinel auth-pass master-name password
master 设置了密码,连接了mater服务密码
3.sentinel down-after-millisenconds master-name millissenconds
指定多少毫米以后,主节点没有应答哨兵,此时哨兵主观上认为主节点下线
4.sentinel parallel-sync mastername num
表示允许并行同步的slave个数,当master挂了后,哨兵会选出新的master,此时,剩余的slave会向新的master发起同步。
5.sentinel failover-timeout mastername millisencond
故障转移的超时时间,故障转移时,如果超过了设置的毫秒,表示故障转移失败。
6.sentinel natification-script mastername script-path
配置当某一事件发生时,所需要的执行脚本
7.sentinel client-reconfig-script mastername script-path
客户端重新配置主节点参数脚步
配置三个sentinel.conf
具体
redis-server /opt/homebrem/etc/redis-sentinel-26379.conf --sentinel
redis-server /opt/homebrem/etc/redis-sentinel-26380.conf --sentinel
redis-server /opt/homebrem/etc/redis-sentinel-26381.conf --sentinel
执行命令 ps -ef|grep redis可看到一下信息
问题
-
master如果被shutdown,两台从机是否ok?是否会从机中重新选出master。
从集OK,会选出新的master -
之前master 如果重启回来,会不会冲突?
不会,之前的maser 将作为新master的从节点
了解broke pipe
pipe是管道的意思,管道里面是数据流,通常是从文件或网络套接字中读取数据,当该管道从另一端突然关闭,会发生数据突然中断,即broken,对于broken来说,可能是网络被拔出,或者另一端进程崩溃。比如 哨兵模式下,master进程断开,重新选出maser后,那么执行在旧的master上的管道就会中断。
具体细节注意
slave protected-mode =yes 不要配置成no,不知道具体是不是这个原因,我的从机两个配置成yes哨兵就可以正常使用了
master-slave切换细节
master-slave切换后,master_redis.conf,slave_redis_conf和sentinel.conf的内容都会发生改变,即
master_redis_conf中会多出一行replicaof 192.168.8.111:6380。而新的master之前配置的replicaof
192.168.8.110:6379则被删除。
sentinel.conf 的监控目标也将变为新的master