目录:

  • 基本概念
  • 环境部署
  • 哨兵原理
  • 哨兵命令

基本概念:

1、什么是哨兵

我们先从字面意思来了解哨兵,哨兵是对执行警戒任务的士兵的统称;在redis中哨兵也是一样,他监控着redis服务器的状态。

2、为什么要有哨兵

当redis主服务器发生故障时我们需要进行故障转移,也就是将从节点晋升为主节点;但这个过程有些繁琐,且容易出错,而且运维人员也不可能一天24小时守着;针对于这一些问题,我们redis的开发人员便创造了哨兵,已解决这类问题。

)哨兵故障转移的过程:发现故障 -> 选出新节点 -> 复制新节点

a、主节点发生故障时,客户端连接主节点失败,其它的从节点与主节点的复制中断

b、当超过一定数量的从节点发现主节点宕机后,会从这些从节点中选举出一个节点,并对其执行slaveof no one命令使其成为一个新的主节点

c、当从节点晋升主节点时会更新应用方主节点信息,并重启应用方

d、其它的从节点会取去复制这个新的主节点,slaveof host port

e、待原来的主节点恢复后,便会复制新的主节点

)自动化故障转移需要解决的问题

a、判断节点不可达的机制是否健全和标准

b、如果有多个从节点,怎样保证只有一个晋升为主节点

c、通知客户端有新的主节点的机制是否健全

3、哨兵架构

环境部署:

方案:一主两从三哨兵

1、文件配置

)配置主节点;启动命令:redis-server redis-6379.conf

# 已守护进程方式运行

daemonize yes

# 配置日志文件

logfile 6379.log

# 配置RDB文件

dbfilename dump-6379.rdb

)配置从节点;启动命令:redis-server redis-6380.conf,redis-server redis-6381.conf

# 已守护进程方式运行

daemonize yes

# 配置日志文件

logfile 6380.log

# 配置RDB文件

dbfilename dump-6380.rdb

# 设置主节点

slaveof 127.0.0.1 6379

6381与6380同理

)配置sentinel节点;启动命令:redis-server sentinel-26379.conf --sentinel

port 26379

daemonize yes

logfile "26379.log"

# 监控127.0.0.1:6379这个主节点,别名sentinel-master,至少2个Sentinel节点认为失败时做故障转移;sentinel monitor <master-name> <ip> <port> <quorum>;;

sentinel monitor yunxi-master 127.0.0.1 6379 2

# 超过指定秒没有收到节点回复,判为故障下线;sentinel down-after-milliseconds <master-name> <times>

sentinel down-after-milliseconds yunxi-master 30000

# 故障转移时的从节点向主节点发起并发复制请求的数量;sentinel parallel-syncs <master-name> <nums>

sentinel parallel-syncs yunxi-master 1

# 故障转移超时时间;sentinel failover-timeout <master-name> <times>

sentinel failover-timeout yunxi-master 180000

2、部署技巧

)为了实现真正的高可用,不要将sentinel节点部署在同一台物理机上,因为如果这台物理机故障的话便会影响所以的sentinel节点

)最少部署3个以上的奇数节点,这样能提高sentinel判断故障的准确性,以及更好的满足票数过半的选举策略

)每个业务场景部署一套sentinel

哨兵原理:

1、哨兵通过三个job组成

)每隔10秒,每个sentinel会向主节点发送info命令,以获取redis节点的当前状态(为什么不需要显示的监控从节点呢,因为主节点的replication中包含了从节点的信息)

)每隔2秒,每个sentinel节点回向redis发送__sentinel__:hello频道上发送自己对主节点的判断及自己节点的信息;同时每个sentinel节点也会订阅改频道,来了解其他sentinel节点对主节点的判断

)每个1秒,sentinel节点回向主节点及其它从节点和sentinel节点发送ping命令做心跳检测

2、主观下线和客观下线

)主观下线:仅自己认为主节点宕机的下线模式

当前sentinel节点发送ping做心跳,若超过down-after-milliseconds还未响应则做主观下线

)客观下线:主节点实际下线

该sentinel会向其他sentinel发送sentinel ismaster-down-by-addr命令,以得知其他sentinel节点对主节点的判断,若超过quorum数量的sentinel都认为主节点已宕机,则sentinel节点会对主节点做客观下线处理

哨兵命令:

Redis学习笔记(六、哨兵)的更多相关文章

  1. Redis学习笔记六:持久化实验(AOF,RDB)

    作者:Grey 原文地址:Redis学习笔记六:持久化实验(AOF,RDB) Redis几种持久化方案介绍和对比 AOF方式:https://blog.csdn.net/ctwctw/article/ ...

  2. Redis学习笔记六:独立功能之 Lua 脚本

    Redis 2.6 开始支持 Lua 脚本,通过在服务器环境嵌入 Lua 环境,Redis 客户端中可以原子地执行多个 Redis 命令. 使用 eval 命令可以直接对输入的脚本求值: 127.0. ...

  3. redis 学习笔记3(哨兵模式下分布式锁的实现以及全局唯一id的生成)

    redis实现分布式锁和全局唯一id应该是较为常见的应用. 实现基于redis的setNX,以及incr命令.还是比较简单的! 搭建环境以及配置好sping整合,做了下测试,有兴趣的载下来看看,自己做 ...

  4. redis学习笔记(3)

    redis学习笔记第三部分 --redis持久化介绍,事务,主从复制 三,redis的持久化 RDB(Redis DataBase)AOF(Append Only File) RDB:在指定的时间间隔 ...

  5. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  6. (转)redis 学习笔记(1)-编译、启动、停止

    redis 学习笔记(1)-编译.启动.停止   一.下载.编译 redis是以源码方式发行的,先下载源码,然后在linux下编译 1.1 http://www.redis.io/download 先 ...

  7. Redis学习笔记(2)——Redis的下载安装部署

    一.下载Redis Redis的官网下载页上有各种各样的版本,如图 但是官网下载的Redis项目不正式支持Windows.如果需要再windows系统上部署,要去GitHub上下载.我下载的是Redi ...

  8. redis 学习笔记-cluster集群搭建

    一.下载最新版redis 编译 目前最新版是3.0.7,下载地址:http://www.redis.io/download 编译很简单,一个make命令即可,不清楚的同学,可参考我之前的笔记: red ...

  9. Redis学习笔记(二) Redis 数据类型

    Redis 支持五种数据类型:string(字符串).list(列表).hash(哈希).set(集合)和 zset(有序集合),接下来我们讲解分别讲解一下这五种类型的的使用. String(字符串) ...

  10. # go微服务框架kratos学习笔记六(kratos 服务发现 discovery)

    目录 go微服务框架kratos学习笔记六(kratos 服务发现 discovery) http api register 服务注册 fetch 获取实例 fetchs 批量获取实例 polls 批 ...

随机推荐

  1. Shell—实现DDOS攻击自动封禁IP

    需求:请根据web日志或者或者网络连接数,监控当某个IP并发连接数或者短时内PV达到100,即调用防火墙命令封掉对应的IP. 防火墙命令为:iptables-I INPUT -s IP地址 -j DR ...

  2. 【tf.keras】ssl.SSLError: [SSL: DECRYPTION_FAILED_OR_BAD_RECORD_MAC] decryption failed or bad record mac (_ssl.c:1977)

    问题描述 tf.keras 在加载 cifar10 数据时报错,ssl.SSLError: [SSL: DECRYPTION_FAILED_OR_BAD_RECORD_MAC] decryption ...

  3. R-3 t分布--t置信区间--t检验

    本节内容: 1:t分布存在的意义是什么 2:t分布的置信区间 3:t分布检验 一.t分布存在的意义是什么 数据分析中有一块很大的版图是属于均值对比的,应用广泛. 例如:对比试验前后病人的症状,证明某种 ...

  4. 201871010118-唐敬博《面向对象程序设计(java)》第一周学习总结

    博文正文开头格式:(3分) 项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/p/11435127.html 这个作业的要求在哪里 https:/ ...

  5. TeamyinyinFish-凡事遇则立

    小组github地址: https://github.com/TeamyinyinFish 1.项目的总结反思 阿尔法迭代的时候我们只是理想的随意的选择了一个项目并且认为非常简单. 在第二轮迭代的时候 ...

  6. Idea的Http测试支持(十二)

    1. 在Tools > HTTP Client > Test RESTful Web Service 打开窗口 窗口信息如下: 2. 在Host里面填写接口请求的服务器ip地址和端口,pa ...

  7. 【AtCoder】AtCoder Grand Contest 039 解题报告

    点此进入比赛 \(A\):Connection and Disconnection(点此看题面) 大致题意: 给你一个字符串,将它重复\(k\)次.进行尽量少的操作,每次修改一个位置上的字符,使得不存 ...

  8. 阿里Nacos初体验

    Nacos 从开源到现在已经18个releases了,更新很快,社区也很活跃,光钉钉群的人数那也是好多,每次点个查看全部成员的按钮,我的钉钉就要卡死,也有可能我没更新最新的版本. 前面写了一段时间的S ...

  9. JWT的优点和实现Token认证的安全问题

    JWT的优点和实现Token认证的安全问题 一.什么是JWT JWT——Json web token  是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准,可实现无状态.分布式的Web应 ...

  10. MySQL中使用group_concat遇到的坑

    在使用group_concat的过程中遇到个问题,这里记录一下:在MySQL中有个配置参数group_concat_max_len,它会限制使用group_concat返回的最大字符串长度,默认是10 ...