redis sentinel 主从切换方案
2017-11-22 16:55
405 查看
redis2.8以上版本开始提供名为sentinel的主从切换方案:
主要用于:
1. 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
2. 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
3. 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。
Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个Sentinel进程, 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。
一个健康的集群部署,至少需要三个Sentinel实例。
实验环境:
95 master
94 slave
93 slave
1.安装3.0+redis并配置主从
2.配置sentinel
Redis源码包中包含了一个sentinel.conf文件作为sentinel的配置文件,配置文件自带了关于各个配置项的解释。典型的配置项如下所示:
sentinel monitor mymaster 10.16.77.95 6379 2 #表示监控master redis, 地址为10.16.77.95 6379, 行尾的2表示当集群中有2个sentinel认为master死了时,才能真正认为该master已经不可用了。(sentinel集群中各个sentinel也有互相通信,通过gossip协议)
sentinel down-after-milliseconds mymaster 60000 #sentinel默认每秒会向master发送心跳来确认master是否存活,如果master在down-after-milliseconds时间内不回应PONG 或者是回复了一个错误消息,那么这个sentinel会认为这个master已经不可用了(单位:毫秒)
sentinel parallel-syncs mymaster 1 #在发生failover主备切换时,这个选项指定了最多可以有多少个slave同时对新的master进行同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越多的slave因为replication而不可用。可以通过将这个值设为 1 来保证每次只有一个slave处于不能处理命令请求的状态。
所有的配置都可以在运行时用命令SENTINEL SET command动态修改。
sentinel monitor mymaster 10.16.77.95 6379 2
sentinel auth-pass mymaster password
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
启动sentinel:
redis-sentinel ./sentinel.conf
port 26379 #端口
dir /tmp #sentinel 运行时使用的临时目录
SENTINEL masters :列出所有被监视的主服务器,以及这些主服务器的当前状态;
SENTINEL slaves <master name> :列出给定主服务器的所有从服务器,以及这些从服务器的当前状态;
SENTINEL get-master-addr-by-name <master name> : 返回给定名字的主服务器的 IP 地址和端口号。 如果这个主服务器正在执行故障转移操作, 或者针对这个主服务器的故障转移操作已经完成, 那么这个 命令返回新的主服务器的 IP 地址和端口号;
SENTINEL reset <pattern> : 重置所有名字和给定模式 pattern 相匹配的主服务器。 pattern 参数是一个 Glob 风格的模式。 重置操作清楚主服务器目前的所有状态, 包括正在执行中的故障转移, 并移除目前已经发现和关联的, 主服务器的所有从服务器和 Sentinel ;
SENTINEL failover <master name> : 当主服务器失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移。
客户端可以通过SENTINEL get-master-addr-by-name <master name>获取当前的主服务器IP地址和端口号,以及SENTINEL slaves <master name>获取所有的Slaves信息
测试结果:
一个sentinel进程:
1.手动kill master redis
killall redis-server, 发送failover, 产生新的master, slave指向新的master
2.down掉的master恢复后,产生新的failover, down掉的master成为新master的slave
3.down掉master, 再down掉failover之后新产生的master, 此时剩下的slave成为master.
两个sentinel进程:
1.kill master redis
主要用于:
1. 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。
2. 提醒(Notification): 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。
3. 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时, 集群也会向客户端返回新主服务器的地址, 使得集群可以使用新主服务器代替失效服务器。
Redis Sentinel 是一个分布式系统, 你可以在一个架构中运行多个Sentinel进程, 这些进程使用流言协议(gossip protocols)来接收关于主服务器是否下线的信息, 并使用投票协议(agreement protocols)来决定是否执行自动故障迁移, 以及选择哪个从服务器作为新的主服务器。
一个健康的集群部署,至少需要三个Sentinel实例。
实验环境:
95 master
94 slave
93 slave
1.安装3.0+redis并配置主从
2.配置sentinel
Redis源码包中包含了一个sentinel.conf文件作为sentinel的配置文件,配置文件自带了关于各个配置项的解释。典型的配置项如下所示:
sentinel monitor mymaster 10.16.77.95 6379 2 #表示监控master redis, 地址为10.16.77.95 6379, 行尾的2表示当集群中有2个sentinel认为master死了时,才能真正认为该master已经不可用了。(sentinel集群中各个sentinel也有互相通信,通过gossip协议)
sentinel down-after-milliseconds mymaster 60000 #sentinel默认每秒会向master发送心跳来确认master是否存活,如果master在down-after-milliseconds时间内不回应PONG 或者是回复了一个错误消息,那么这个sentinel会认为这个master已经不可用了(单位:毫秒)
sentinel parallel-syncs mymaster 1 #在发生failover主备切换时,这个选项指定了最多可以有多少个slave同时对新的master进行同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越多的slave因为replication而不可用。可以通过将这个值设为 1 来保证每次只有一个slave处于不能处理命令请求的状态。
所有的配置都可以在运行时用命令SENTINEL SET command动态修改。
sentinel monitor mymaster 10.16.77.95 6379 2
sentinel auth-pass mymaster password
sentinel down-after-milliseconds mymaster 5000
sentinel parallel-syncs mymaster 1
启动sentinel:
redis-sentinel ./sentinel.conf
port 26379 #端口
dir /tmp #sentinel 运行时使用的临时目录
SENTINEL masters :列出所有被监视的主服务器,以及这些主服务器的当前状态;
SENTINEL slaves <master name> :列出给定主服务器的所有从服务器,以及这些从服务器的当前状态;
SENTINEL get-master-addr-by-name <master name> : 返回给定名字的主服务器的 IP 地址和端口号。 如果这个主服务器正在执行故障转移操作, 或者针对这个主服务器的故障转移操作已经完成, 那么这个 命令返回新的主服务器的 IP 地址和端口号;
SENTINEL reset <pattern> : 重置所有名字和给定模式 pattern 相匹配的主服务器。 pattern 参数是一个 Glob 风格的模式。 重置操作清楚主服务器目前的所有状态, 包括正在执行中的故障转移, 并移除目前已经发现和关联的, 主服务器的所有从服务器和 Sentinel ;
SENTINEL failover <master name> : 当主服务器失效时, 在不询问其他 Sentinel 意见的情况下, 强制开始一次自动故障迁移。
客户端可以通过SENTINEL get-master-addr-by-name <master name>获取当前的主服务器IP地址和端口号,以及SENTINEL slaves <master name>获取所有的Slaves信息
测试结果:
一个sentinel进程:
1.手动kill master redis
killall redis-server, 发送failover, 产生新的master, slave指向新的master
2.down掉的master恢复后,产生新的failover, down掉的master成为新master的slave
3.down掉master, 再down掉failover之后新产生的master, 此时剩下的slave成为master.
两个sentinel进程:
1.kill master redis
相关文章推荐
- Sentinel-Redis高可用方案(二):主从切换
- Redis Sentinel主从复制自动切换方案
- 基于Redis Sentinel主从切换以及Sharding分片的Redis集群高可用方案
- Sentinel-Redis高可用方案(二):主从切换
- Sentinel-Redis高可用方案(二):主从切换
- Sentinel-Redis高可用方案(二):主从切换
- Redis集群redis主从自动切换Sentinel(哨兵模式)
- Redis集群方案之Twemproxy+HAProxy+Keepalived+Sentinel+主从复制(待实践)
- redis sentinel 集群配置-主从切换
- 基于Redis Sentinel的Redis集群(主从Sharding)高可用方案(转)
- Redis集群_3.redis主从自动切换Sentinel
- Redis Sentinel主从高可用方案(附Jedis Sentinel教程)
- Redis集群_3.redis主从自动切换Sentinel(转)
- java使用Redis6--sentinel单点故障主从自动切换
- Redis集群:redis主从自动切换Sentinel操作实例
- Redis-3.0.7 Sentinel主从切换的集群管理
- redis sentinel 主从切换(failover)解决方案,详细配置
- Spring+redis sentinel 主从切换
- Sentinel-Redis高可用方案(一):主从复制
- Sentinel-Redis高可用方案(一):主从复制