目录

1. 什么是哨兵模式

2. 哨兵集群

3. Redis阐述容灾机制

4. Redis哨兵原理

5. Redis-sentinel集群

6. redis主流集群方案

7. codis

8. redis集群之sentinel

哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例

redis哨兵&codis

2. Redis哨兵集群(功能,作用)

  1. 监控(Monitoring):哨兵(sentinel)会不断地检查你的master和slave是否运作正常

  2. 提醒(Notification):当被监控的某个redis出问题时,哨兵可以通过API向管理员或者其他应用程序发送通知

  3. 自动故障迁移(Automatic failover):当一个master不能正常工作时,哨兵(sentinel)会开始一次自动故障迁移操作,它会将失效master的其中一个slave升级为新的master

3. Redis重点阐述容灾机制

当某个master服务下线时,所有的slave将无法同步数据,这对于redis集群就是灾难性的,此时哨兵自动将该master下的某个slave服务升级为master服务器替代已下线的master服务继续处理请求,这时灾难的局面就被扭转了回来,这就是容灾机制

4. Redis哨兵-原理

redis哨兵&codis

5. Redis-sentinel集群

1、sentinel作用

1. 当用Redis做主从方案时,假如master宕机,Redis本身无法自动进行主备切换

2. 而Redis-sentinel本身也是一个独立运行的进程,它能监控多个master-slave集群,发现master宕机后能进行自动切换。

2、sentinel原理

1. sentinel负责持续监控主节点的健康,当主节挂掉时,自动选择一个最优的从节点切换成主节点

2. 从节点来连接集群时会首先连接sentinel,通过sentinel来查询主节点的地址

3. 当主节点发生故障时,sentinel会将最新的主节点地址告诉客户端,可以实现无需重启自动切换redis

3、sentinel支持集群

1. 只使用单个sentinel进程来监控redis集群是不可靠的,当sentinel进程宕掉后sentinel本身也有单点问题

2. 如果有多个sentinel,redis的客户端可以随意地连接任意一个sentinel来获得关于redis集群中的信息。

4、sentinel版本

1. Sentinel当前稳定版本称为Sentinel 2,Redis2.8和Redis3.0附带稳定的哨兵版本

2. 安装完redis-3.2.8后,redis-3.2.8/src/redis-sentinel启动程序 redis-3.2.8/sentinel.conf是配置文件。

5、运行sentinel两种方式(效果相同)

  • 法1:redis-sentinel /path/to/sentinel.conf
  • 法2:redis-server /path/to/sentinel.conf --sentinel
1. 以上两种方式,都必须指定一个sentinel的配置文件sentinel.conf,如果不指定,将无法启动sentinel。

2. sentinel默认监听26379端口,所以运行前必须确定该端口没有被别的进程占用。

6、sentinel.conf配置文件说明

1. 配置文件只需要配置master的信息就好啦,不用配置slave的信息,因为slave能够被自动检测到

2. 需要注意的是,配置文件在sentinel运行期间是会被动态修改的,例如当发生主备切换时候,配置文件中的master会被修改为另外一个slave。

3. 这样,之后sentinel如果重启时,就可以根据这个配置来恢复其之前所监控的redis集群的状态。

 

sentinel.conf配置文件注释

redis哨兵&codis
 1 '''1、sentinel monitor mymaster 127.0.0.1 6379 2'''
 2 #1)sentinel监控的master的名字叫做mymaster,地址为127.0.0.1:6379
 3 #2)当集群中有2个sentinel认为master死了时,才能真正认为该master已经不可用了
 4 
 5 '''2、sentinel down-after-milliseconds mymaster 60000'''
 6 #1)sentinel会向master发送心跳PING来确认master是否存活,如果master在60000毫秒内不回应PONG 
 7 #2)那么这个sentinel会单方面地认为这个master已经不可用了
 8 
 9 '''3、sentinel failover-timeout mymaster 180000'''
10 #1)如果sentinel A推荐sentinel B去执行failover,B会等待一段时间后,自行再次去对同一个master执行failover,
11 #2)这个等待的时间是通过failover-timeout配置项去配置的。
12 #3)从这个规则可以看出,sentinel集群中的sentinel不会再同一时刻并发去failover同一个master,
13 #4)第一个进行failover的sentinel如果失败了,另外一个将会在一定时间内进行重新进行failover,以此类推。
14 
15 '''4、sentinel parallel-syncs mymaster 1'''
16 #1)在发生failover主备切换时,这个选项指定了最多可以有多少个slave同时对新的master进行同步
17 #2)如果这个数字越大,就意味着越多的slave因为replication而不可用,这个数字越小,完成failover所需的时间就越长。
18 #3)可以通过将这个值设为 1 来保证每次只有一个slave处于不能处理命令请求的状态。
View Code

相关文章: