哨兵是Redis的一种运行模式,它专注于对Redis实例(主节点、从节点)运行状态的监控,并能够在主节点发生故障时通过一系列的机制实现选主及主从切换,实现故障转移,确保整个Redis系统的可用性。
集群演示
本次测试为“1主2从” 的模式,即一个master 两个从节点 slave 。如下图
条件限制,只采用了一台服务器 开不同的端口
在redis.windows.conf中配置不同的端口
我这里设置了三个 分别是
10.31.60.14:6379 (mymaster)
10.31.60.14:6380 (slave1)
10.31.60.14:6381 (slave2)
配好之后设置一下主从关系
slaveof 10.31.60.14 6379
配置 Sentinel
在每个redis里面新建一个 sentinel.conf 的配置文件
# 这个是Redis6379配置内容,其他文件同理新增然后改一下端口即可,26380,和 26381。 #当前Sentinel服务运行的端口 port 26379 # 哨兵监听的主服务器 sentinel monitor mymaster 127.0.0.1 6379 2 #这里写你的ip # 3s内mymaster无响应,则认为mymaster宕机了 sentinel down-after-milliseconds mymaster 3000 #如果10秒后,mysater仍没启动过来,则启动failover sentinel failover-timeout mymaster 10000 # 执行故障转移时, 最多有1个从服务器同时对新的主服务器进行同步,越多越快 sentinel parallel-syncs mymaster 1
然后在每个redis里面加一个bat文件,启动哨兵用的
redis-server.exe sentinel.conf --sentinel
然后就可以启动咯。我这里已经将redis加到服务了,就直接启动哨兵。三个都启动
上面发现mymaster的端口为6379
查看6379的主从信息
info replication
发现有两个slave 端口分别为6380和6381
然后把 6379的 redis shutdown一下
然后发现mymaster变成6381
总结
Redis哨兵为Redis提供了高可用性。实际上这意味着你可以使用哨兵模式创建一个可以不用人为干预而应对各种故障的Redis部署。
哨兵模式还提供了其他的附加功能,如监控,通知,为客户端提供配置。
下面是在宏观层面上哨兵模式的功能列表:
监控:哨兵不断的检查master和slave是否正常的运行。
通知:当监控的某台Redis实例发生问题时,可以通过API通知系统管理员和其他的应用程序。
自动故障转移:如果一个master不正常运行了,哨兵可以启动一个故障转移进程,将一个slave升级成为master,其他的slave被重新配置使用新的master,并且应用程序使用Redis服务端通知的新地址。
配置提供者:哨兵作为Redis客户端发现的权威来源:客户端连接到哨兵请求当前可靠的master的地址。如果发生故障,哨兵将报告新地址。
哨兵的分布式特性
Redis哨兵是一个分布式系统:
哨兵自身被设计成和多个哨兵进程一起合作运行。有多个哨兵进程合作的好处有:
当多个哨兵对一个master不再可用达成一致时执行故障检测。这会降低错误判断的概率。
即使在不是所有的哨兵都工作时哨兵也会工作,使系统健壮的抵抗故障。毕竟在故障系统里单点故障没有什么意义。
Redis的哨兵、Redis实例(master和slave)、和客户端是一个有特种功能的大型分布式系统。
当然,Redis Sentinel 仅仅解决了 高可用 的问题,对于 主节点 单点写入和单节点无法扩容等问题,还需要引入 Redis Cluster 集群模式 予以解决。
标签:mymaster,故障,Redis,哨兵,sentinel,master,Sentinel From: https://www.cnblogs.com/ff2223/p/17807708.html