用sentinel作Redis集群,总结下自己遇到的坑,以及探讨下改如何设置哨兵模式

2024-06-22 11:32

本文主要是介绍用sentinel作Redis集群,总结下自己遇到的坑,以及探讨下改如何设置哨兵模式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

先写总结

1.sentinel 的配置文件要配置master的密码:sentinel auth-pass mymaster phFUND_linux_redis。

2.为了主从能自由切换请给主从都配置好密码,而且要设置相同的密码(完成切换后,因为从没有配置masterauth,导致重启后连接不上主):

masterauth "phFUND_linux_redis"

requirepass "phFUND_linux_redis"

3.因为使用了别人的配置文件,在主从切换时一直超时,所以强烈建议各位在部署时,使用该版本redis自带的配置文件进行配置,且一定要保证配置项的顺序和原版保持一致。针对自己的需要修改配置项。如果不一致,可能会报错。

4.会看sentinel的日志。:

 +try-failover master mymaster 172.**.**.117 6379(开始尝试进行failover)
 +vote-for-leader e2a313dd66f8e8df829628d4580d77f840ebb068 4(sentinel配置文件中的myid,确认leader sentinel)
 +elected-leader master mymaster 172.**.**.117 6379(已存在的master节点)
 +failover-state-select-slave master mymaster 172.**.**.117 6379(分析master的slave状态)
 +selected-slave slave 172.**.**.117:7379 172.**.**.117 7379 @ mymaster 172.**.**.117 6379(已选出一个原master的slave)
 +failover-state-send-slaveof-noone slave 172.**.**.117:7379 172.**.**.117 7379 @ mymaster 172.**.**.117 6379(将新的slave进行主从切换)
 +failover-state-wait-promotion slave 172.**.**.117:7379 172.**.**.117 7379 @ mymaster 172.**.**.117 6379(等待slave升级中)
 +promoted-slave slave 172.**.**.117:7379 172.**.**.117 7379 @ mymaster 172.**.**.117 6379(升级完成)
 +failover-state-reconf-slaves master mymaster 172.**.**.117 6379(重写原master的配置文件)
 +slave-reconf-sent slave 172.**.**.117:7381 172.**.**.117 7381 @ mymaster 172.**.**.117 6379(重写所有slave的配置文件)
 +slave-reconf-inprog slave 172.**.**.117:7381 172.**.**.117 7381 @ mymaster 172.**.**.117 6379(重写所有slave的配置文件)
 +slave-reconf-done slave 172.**.**.117:7381 172.**.**.117 7381 @ mymaster 172.**.**.117 6379(重写所有slave的配置文件)
 +slave-reconf-sent slave 172.**.**.117:7380 172.**.**.117 7380 @ mymaster 172.**.**.117 6379(重写所有slave的配置文件)
 +slave-reconf-inprog slave 172.**.**.117:7380 172.**.**.117 7380 @ mymaster 172.**.**.117 6379(重写所有slave的配置文件)
 +slave-reconf-done slave 172.**.**.117:7380 172.**.**.117 7380 @ mymaster 172.**.**.117 6379(重写所有slave的配置文件)
 +failover-end master mymaster 172.**.**.117 6379(failover结束)
 +switch-master mymaster 172.**.**.117 6379 172.**.**.117 7379(slave节点已经升级为master)
 +slave slave 172.**.**.117:7381 172.**.**.117 7381 @ mymaster 172.**.**.117 7379(为新的master节点确认slave节点)
 +slave slave 172.**.**.117:7380 172.**.**.117 7380 @ mymaster 172.**.**.117 7379(为新的master节点确认slave节点)
 +slave slave 172.**.**.117:6379 172.**.**.117 6379 @ mymaster 172.**.**.117 7379(为新的master节点确认slave节点)
 +sdown slave 172.**.**.117:6379 172.**.**.117 6379 @ mymaster 172.**.**.117 7379(原master节点变为slave,且主观下线)
 -sdown slave 172.**.**.117:6379 172.**.**.117 6379 @ mymaster 172.**.**.117 7379(重启了,恢复状态)
 +convert-to-slave slave 172.**.**.117:6379 172.**.**.117 6379 @ mymaster 172.**.**.117 7379(已转换为新master 的slave)

5.sentienl常用命令:1)进入sentinel : redis-cli -h <IP> -p <port> 。2)查看集群所有master的状态:sentinel masters 。 3)查看某个master的所有slave:sentinel slaves <mastername> 4)Ssentinel failover <master name> 强制进行一次故障转移,并通知其他sentinel转移情况。

6.sentinel的配置:

port 26379
protected-mode no(允许所有地址的访问,如果是yes则只允许本机,默认是yes。文档显示设置了bind和密码的话该设置不会生效)
logfile "/home/session/redis/logs/redis_26379.log"(日志地址,如果配置了该地址,则不会打印堆栈。)

sentinel myid e2a313dd66f8e8df829628d4580d77f840ebb068(sentinel的唯一ID)
sentinel monitor mymaster 172.18.50.117 7379 1

sentinel down-after-milliseconds mymaster 30000(多少毫秒判定master宕机)                                                                              sentinel parallel-syncs mymaster 1(同步时允许最多几台slave同步master,数字越小同步时间越久,在同步的过程中不能提供服务,所以配置大了也不好,依情况而定)

daemonize yes(守护线程模式)

dir "/tmp"

# Generated by CONFIG REWRITE
maxclients 4064(自动生成,也可以自己配置)
sentinel failover-timeout mymaster 150000(多少毫米未切换完成则判定失败)
sentinel auth-pass mymaster phFUND_linux_redis(密码要配置)
sentinel config-epoch mymaster 4(自动生成)
sentinel leader-epoch mymaster 4(自动生成)
sentinel known-slave mymaster 172.18.50.117 6379(自动生成)
sentinel known-slave mymaster 172.18.50.117 7381(自动生成)
sentinel known-slave mymaster 172.18.50.117 7380(自动生成)
sentinel current-epoch 4(自动生成)

 

项目和环境介绍

因为公司的测试环境的Redis老是挂,导致系统启动报错。一直没人管,所幸我自己看看。

问题:一台master挂掉,无法进行故障转移,不能选举从。

先上个测试环境的架构图: 

分片规则是在应用层实现的,比较简单,直接用hash值对接连数取模计算节点,没有用一致性hash,扩展性很差。

而且,一个哨兵监控了两个master,实在不明白如果请求sentinel它到底会把请求发给哪个master。

即便可以,也不建议这样配置,一个哨兵挂了,会导致两个主从集群的监控都出问题。

建议用这个作者的设置:https://blog.csdn.net/men_wen/article/details/72724406。

因为测试环境只有两台服务器,一般哨兵不太可能会挂,所以我改成了如下:

这篇关于用sentinel作Redis集群,总结下自己遇到的坑,以及探讨下改如何设置哨兵模式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1084161

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

服务器集群同步时间手记

1.时间服务器配置(必须root用户) (1)检查ntp是否安装 [root@node1 桌面]# rpm -qa|grep ntpntp-4.2.6p5-10.el6.centos.x86_64fontpackages-filesystem-1.41-1.1.el6.noarchntpdate-4.2.6p5-10.el6.centos.x86_64 (2)修改ntp配置文件 [r

HDFS—集群扩容及缩容

白名单:表示在白名单的主机IP地址可以,用来存储数据。 配置白名单步骤如下: 1)在NameNode节点的/opt/module/hadoop-3.1.4/etc/hadoop目录下分别创建whitelist 和blacklist文件 (1)创建白名单 [lytfly@hadoop102 hadoop]$ vim whitelist 在whitelist中添加如下主机名称,假如集群正常工作的节

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的