06-Redis哨兵
Redis哨兵
目的:实现系统的高可用,基于主从复制
哨兵的工作流程
1、每秒给master发送一次ping命令,master回复pong命令
2、经历主观下线和客观下线
只有经历客观下线,才能确定master出现故障
3、哨兵的领导者选举
第一次发现主观下线那个哨兵负责故障转移
4、哨兵领导者负责故障转移哨兵故障转移演示
1、先搭建主从
2、再搭建哨兵
1、什么是高可用 高并发、分布式、集群、微服务
它与被认为是不间断操作的容错技术有所不同。是目前企业防止核心系统因故障而无法工作的最有效保护手段
高可用一般指服务的冗余,一个服务挂了,可以自动切换到另外一个服务上,不影响客户体验
2、多种模式对比
主从复制,若主节点出现问题,则不能提供服务,需要人工修改配置将从变主
主从复制主节点的写能力单机,能力有限
单机节点的存储能力也有限
3、主从故障如何故障转移
主节点(master)故障,从节点slave-1端执行 slaveof no one后变成新主节点
其它的节点成为新主节点的从节点,并从新节点复制数据
需要人工干预,无法实现高可用
4、哨兵机制(sentinel)的高可用
原理:当主节点出现故障时,由Redis Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。
5、哨兵机制的三个定时监控任务作用:心跳
哨兵有三个定时监控任务完成对各节点的发现和监控。
6、哨兵主观下线和客观下线
(1)主观下线
主观下线后,不准确,不会做故障转移
(2)客观下线
7、领导者哨兵选举流程 zookeeper
8、哨兵机制-故障转移流程
由Sentinel节点定期监控发现主节点是否出现了故障
sentinel会向master发送心跳PING来确认master是否存活,如果master在“一定时间范围”内不回应PONG 或者是回复了一个错误消息,那么这个sentinel会主观地(单方面地)认为这个master已经不可用了
当主节点出现故障,此时假设3个Sentinel节点共同选举了Sentinel3节点为领导者sentinel,负载处理主节点的故障转移
由Sentinel3领导者节点执行故障转移,过程和主从复制一样,但是自动执行
故障转移后的拓扑结构图
9、哨兵演示
9.1 先搭主从
先搭建好一主两从redis的主从复制,和之前复制的搭建一样,搭建方式如下:
A主节点6379节点(/usr/local/bin/conf/redis6379.conf):
修改 requirepass 12345678 protected-mode no
B从节点redis6380.conf和redis6381.conf:
修改 requirepass 12345678 protected-mode no
加上masterauth 12345678 ,加上slaveof 192.168.42.111 6379
注意:当主从起来后,主节点可读写,从节点只可读不可写
9.2 再搭哨兵
redis sentinel哨兵机制配置(也是3个节点):
/usr/local/bin/conf/sentinel_26379.conf
/usr/local/bin/conf/sentinel_26380.conf
/usr/local/bin/conf/sentinel_26381.conf
将三个文件的端口改成: 26379 26380 26381
sentinel monitor mymaster 192.168.42.111 6379 2 //监听主节点6379
sentinel auth-pass mymaster 12345678 //连接主节点时的密码
protected-mode no
配完此脚本,哨兵机制可正常启动运行。
sentinel monitor mymaster 192.168.42.111 6379 2 //监控主节点的IP地址端口
sentinel auth-pass mymaster 12345678 //sentinel连主节点的密码
sentinel config-epoch mymaster 2 //执行故障转移时, 最多可以有多少个从节点同时对新的主节点进行数据同步
sentinel leader-epoch mymaster 2
sentinel failover-timeout mymaster 180000 //故障转移超时时间180s,
a,如果转移超时失败,下次转移时时间为之前的2倍;
b,从节点变主节点时,从节点执行slaveof no one命令一直失败的话,当时间超过180S时,则故障转移失败
c,从节点复制新主节点时间超过180S转移失败
sentinel down-after-milliseconds mymaster 300000//sentinel节点定期向主节点ping命令
启动sentinel服务:
./redis-sentinel conf/sentinel_26379.conf &
./redis-sentinel conf/sentinel_26380.conf &
./redis-sentinel conf/sentinel_26381.conf &
相关文章
- 使用Redis实现分布式锁
- redis 主从模式,sentinel哨兵模式,cluster集群模式 简介
- redis主从复制
- C#Redis集合set
- Redis 如何打开rdb 文件
- Redis 集群方案
- python的redis简单使用
- redis 简单整理——redis 的有序集合基本结构和命令[六]
- redis集群之REDIS CLUSTER
- Redis 优化之swap分区
- Redis缓存穿透、缓存雪崩、redis并发问题 并发竞争key的解决方案 (阿里)
- Atitit mysql redis mongodb 性能指标 目录 1.1. 二、 性能比较1 1.2. 性能极高- Redis能读的速度是110000次/s,写的速度是81000次/s2 1
- Atitit redis使用 attilax 艾提拉总结 1.1. Redis默认有16个库,默认连接的是 index=0 的那一个。解决与原来不方便查询查看的问题1 1.2. redis不是现
- 〖Python 数据库开发实战 - Python与Redis交互篇④〗- 利用 redis-py 实现集合与有序集合的常用指令操作
- python测试redis是否可以使用
- 深入浅出Redis-redis哨兵集群
- Redis源代码分析(十二)--- redis-check-dump本地数据库检測
- redis_05 _ 内存快照:宕机后,Redis如何实现快速恢复
- redis master配置了密码进行主从同步
- 深入学习Redis(5):集群
- Redis进阶学习10---redis最佳实践
- 【服务器安装Redis】Centos7离线安装redis
- 【C++ 科学计算】redis-plus-plus:安装用C ++编写的Redis客户端