首页 > 数据库 >redis:哨兵配置文件sentinel.conf说明

redis:哨兵配置文件sentinel.conf说明

时间:2023-08-15 23:00:10浏览次数:35  
标签:配置文件 redis 哨兵 故障 master conf sentinel sen 下线

学习自:Redis——sentinel哨兵模式_sentinel announce-ip_FlyLikeButterfly的博客-CSDN博客

m:master

s:slave

下文中所有<xxx>项,都是可以在配置文件sentinel.conf中修改的项

1、前言

哨兵是从主从模式发展而来的,在m宕机的情况下,s会自动切换为m,此时原m连上后会成为新m的s。

哨兵的3个定时任务

  • 每1s,sen向m、s、其他sen发送ping心跳,判断其他成员的主观下线
  • 每2s,sen向__sentinel__:hello频道发布订阅信息与其他sen通信,交换对m信息,方便故障转移和选举
  • 每10s,sen会向m和s发送info以获取最近的拓扑结构,可以感知新加入故障转移的redis节点

主观下线 SDOWN

每隔1s的ping在超过down-after-milliseconds设置的时间后,未收到或收到错误回复,则认定该成员主观下线(如果m有了正确的ping回复,则主观下线状态会被移除,这就是在m的redis服务启动前后,log文件中会出现+sdown和-sdown的原因)

客观下线 ODOWN(只针对master)

当m主观下线时,sen会询问其他sen对m的状态评估,如果达到<quorum>个sen认为下线,则认为m客观下线

故障转移

  • sen每秒发送ping心跳ping完超过<down-after-milliseconds>没回复或错误回复,认为主观下线
  • 如果sen认为m主观下线,则向其他sen询问m状态,达到<quorum>数量时,标记m客观下线
  • 最先完成master客观下线sen发起leader选举,通过raft协议选举出一个leader;
  • 由leader发起故障转移选出s中优先级最高、复制最完整的升级为新m,宕机m降级为s(等恢复连接后成为新m的s),通知其他s连接新m,通知其他sen主从变化

 

2、配置文件sentinel.conf

1)bind 0.0.0.0

2)protected-mode no

默认情况下,本机sen只能由localhost访问,如果要让外界也能访问到,那么可以在用bind IP 手动绑定IP或用protected-mode no关闭保护模式。

3)port 26379

哨兵使用的端口

4)daemonize no

5)pidfile /var/run/redis-sential.pid

默认sen不作为守护进程运行,如果设置为yes,就会写入一个指定的pid文件

6)logfile ""

日志文件,默认空字符串,此时输出到屏幕

7)sentinel announce-ip 192.168.10.20

8)sentinel announce-port 26379

用于NAT网络中,指定哨兵的ip和端口,当提供明确的announce-ip时,sen会在hello消息(2s一次)中发布出来,不是自动检测本地ip,当提供明确的announce-port时,sentinel也会发布出来。这两项不需要同时指定,未指定项会被自动检测并使用

9)dir 工作目录

定义工作目录

10)sentinel monitor <master-name> <ip> <redis-port> <quorum>

例:sentinel monitor mymaster 192.168.10.20 6379 2

告诉sen关于m的信息,当<quorum>个m同意时m标记为客观离线

11)sentinel auth-pass <master-name> <password>

设置m和s的密码,m和s要用相同的密码

12)sentinel down-after-milliseconds <master-name> <milliseconds>

设置master(或任何连接着的slave、sentinel)主观下线超时(毫秒值,默认30s,即30000)

13)sentinel failover-timeout <master-name> <milliseconds>

指定故障转移超时时间(毫秒,默认3分钟,即180000);

该设置会用于多个地方:①当给定的哨兵重新进行故障转移时并且之前的故障转移是同一个master,需要的时间是failover-timeout的两倍。

②当让一个依据哨兵当前配置的从错误master同步的副本去强制同步正确的master的时间,正好就是这个failover-timeout的时间。

③当一个故障转移正在进行但未产生任何配置改变时,取消该故障转移所需的时间。

④当故障转移正在进行时,等待所有的副本被重新分配给新的master所用的最大时间,即使超过该时间副本最终也会被哨兵重新分配,只不过不是按照之前确定的并行同步进行的。

 

标签:配置文件,redis,哨兵,故障,master,conf,sentinel,sen,下线
From: https://www.cnblogs.com/ShineLeBlog/p/17632091.html

相关文章

  • redis数据结构跳表
    redis数据结构跳表数据结构跳表节点typedefstructzskiplistNode{//层structzskiplistLevel{//前进指针structzskiplistNode*forward;//跨度unsignedintspan;}level[];//后退指针structzskiplistNode*backward;//分值doublescore;//成员......
  • redis安装及redis cluster创建
    redis安装及rediscluster创建先检查是否安装GCC,若无则先安装GCC,不然编译redis会报错。命令:gcc-v若提示命令未找到则没有。可按照GCCG++环境离线配置.docx文档添加。步骤一:下载redis安装包并通过xftp上传到服务器链接:http://download.redis.io/releases/步骤二:解压redis安装包命......
  • redis主从复制
    redis主从复制同步当客户端向从服务器发送SLAVEOF命令,要求从服务器复制主服务器时,从服务器首先需要执行同步操作,也即是,将从服务器的数据库状态更新至主服务器当前所处的数据库状态。从服务器对主服务器的同步操作需要通过向主服务器发送SYNC命令来完成,以下是SYNC命令的执行步骤:......
  • 基于Redis的分布式锁
    在多线程的环境下,为了保证一个代码块在同一时间只能由一个线程访问,Java中我们一般可以使用synchronized语法和ReetrantLock去保证,这实际上是本地锁的方式。但是现在公司都是流行分布式架构,在分布式环境下,如何保证不同节点的线程同步执行呢?实际上,对于分布式场景,我们可以使用分布式......
  • Redis Bigkey排查
    在处理bigkey问题可以先从一下几点入手什么是bigkey?bigkey危害?bigkey是如何产生的?如何发现bigkey?如何处理bigkey?什么是BigkeyRedisbigkey是指在Redis数据库中占用空间较大的键值对。这些键通常包含了大量的数据,可能会影响Redis的性能和内存使用。例如......
  • 优化 Redis 集群缓存分配:解决节点间分配不均导致内存溢出问题
    一、Redis集群部署简介在现代应用程序中,缓存被广泛应用以提高性能和减轻后端数据库的压力。本文将探讨面对Redis集群缓存分配不均问题时的解决方法。我们的Redis集群部署包括3主3从,每个节点分配内存4G(服务器总内存32G),内存淘汰策略相同:volatile-lru。二、问题描述在......
  • Redis(2):四种模式(单机、哨兵、集群、主从复制)部署
    学习自:Redis的四种模式-何童鞋-博客园深入理解Redis的部署模式四种模式的探索(redis部署四种模式)-数据库运维技术服务redis部署和运行原理redis的三种部署方式_小咪咪的技术博客_51CTO博客上一节:Redis(1):四种模式(单机、哨兵、集群、主从复制)原理0、所写m:master,主服务器s:s......
  • Linux的Redis安装部署
    简介redis是一个开源的、使用C语言编写的、支持网络交互的、可基于内存也可持久化的Key-Value数据库。redis的特点就是:快,可以基于内存存储数据并提供超低延迟、超快的检索速度一般用于在系统中提供快速缓存的能力。安装配置EPEL仓库EPEL的全称叫ExtraPackagesforEnt......
  • redis cluster查询过期key
    redis以前也就部署好没管过,这次用的云上的rediscluster,程序没有设置过期时间,所以要求手动去删除key。按以前的习惯redis-cli登录keys*查询不行,原来cluster下key是存在不同的slot下的,要去每个slot下找#查看cluster信息,特别是cluster_slots_ok的数量clusterinfocluster的slot是从......
  • Redis专题-队列
    Redis专题-队列首先,想一想Redis适合做消息队列吗?1、消息队列的消息存取需求是什么?redis中的解决方案是什么?无非就是下面这几点:0、数据可以顺序读取1、支持阻塞等待拉取消息2、支持发布/订阅模式3、重新消费4、消息不丢失5、消息可堆积那我们来看看redis怎么满足这些需......