用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

相关文章

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网

Redis Cluster模式配置

《RedisCluster模式配置》:本文主要介绍RedisCluster模式配置,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录分片 一、分片的本质与核心价值二、分片实现方案对比 ‌三、分片算法详解1. ‌范围分片(顺序分片)‌2. ‌哈希分片3. ‌虚

SQL中JOIN操作的条件使用总结与实践

《SQL中JOIN操作的条件使用总结与实践》在SQL查询中,JOIN操作是多表关联的核心工具,本文将从原理,场景和最佳实践三个方面总结JOIN条件的使用规则,希望可以帮助开发者精准控制查询逻辑... 目录一、ON与WHERE的本质区别二、场景化条件使用规则三、最佳实践建议1.优先使用ON条件2.WHERE用

Springboot整合Redis主从实践

《Springboot整合Redis主从实践》:本文主要介绍Springboot整合Redis主从的实例,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录前言原配置现配置测试LettuceConnectionFactory.setShareNativeConnect

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

Redis过期删除机制与内存淘汰策略的解析指南

《Redis过期删除机制与内存淘汰策略的解析指南》在使用Redis构建缓存系统时,很多开发者只设置了EXPIRE但却忽略了背后Redis的过期删除机制与内存淘汰策略,下面小编就来和大家详细介绍一下... 目录1、简述2、Redis http://www.chinasem.cn的过期删除策略(Key Expir

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

Nginx Location映射规则总结归纳与最佳实践

《NginxLocation映射规则总结归纳与最佳实践》Nginx的location指令是配置请求路由的核心机制,其匹配规则直接影响请求的处理流程,下面给大家介绍NginxLocation映射规则... 目录一、Location匹配规则与优先级1. 匹配模式2. 优先级顺序3. 匹配示例二、Proxy_pa