首页 > 数据库 >Java开发 - 让你少走弯路的Redis主从实现单节点哨兵模式

Java开发 - 让你少走弯路的Redis主从实现单节点哨兵模式

时间:2023-06-03 12:05:09浏览次数:53  
标签:Java redis Redis 哨兵 master sentinel 少走弯路 节点


前言

前一篇中,我们讲解了Redis主从的搭建方式,其实很简单呐有木有,都是配置,连句代码都没有,是不是感觉高估了Redis主从的搭建方式?哈哈,没关系,跟着博主,包你全会。今天我们的主题是哨兵,没错,就是哨兵!有了Redis,要是没有哨兵,那真是太可惜了,哨兵是很神圣的一种重要的监测工具,有了哨兵,在Redis主节点出现问题的时候,哨兵就会预警,并选举出新的master,这样,Redis的工作就不会停掉,对于服务器来说非常重要。

简单哨兵模式

基础知识推荐

关于哨兵的一些概念,博主看到了不少优秀的作品,为了防止长篇大论的写重复的内容,就在这里分享给大家。


这几篇博客都是非常优秀的博客,读完之后,相信一定会让大家受益匪浅,下面就是实战阶段,大家跟着一起动手吧。

Redis主从加码

我们上一篇是Redis主从,一主一从,相信大家都还记得吧,现在,要求大家再给master节点增加一个slave,应该很简单吧。可以自己试试,也可以跟着博主一起来操作。

我们上一篇的文件夹是这样的:

Java开发 - 让你少走弯路的Redis主从实现单节点哨兵模式_sentinel

下面动动我们的小手,来增加一个新的slave,配置如下:

port:6382
daemonize yes
pidfile /var/run/redis_6382.pid
logfile "6382.log"
slaveof localhost 6380

是不是很简单,几乎和另一个slave一样,测试嘛,就免了,基本也没改啥,不用测都知道一定可以,小伙伴可以自行测试下配置是否正确。

配置哨兵配置文件

首先,我们会在src文件中看到一个redis- sentinel文件,这就是哨兵的启动文件了:

Java开发 - 让你少走弯路的Redis主从实现单节点哨兵模式_sentinel_02

接着,要配置的文件名字叫sentinel.conf,我们可以在redis目录下找到这个文件:

Java开发 - 让你少走弯路的Redis主从实现单节点哨兵模式_主从配置_03

由于博主安装Redis的时候安装到了src,所以大家才会看到博主在src操作这些文件,正常来说,你安装在redis目录下也是可以的,下一步,我们还是把sentinel.conf复制到src目录下:

Java开发 - 让你少走弯路的Redis主从实现单节点哨兵模式_redis_04

接着来修改此文件中的配置,需要修改的配置如下:

#配置端口
port 26379
# 设置为守护进程模式,可先注释,看投票选主的过程
#daemonize yes
#日志文件名
logfile "redis_sentinel.log"
#存放备份文件以及日志等文件的目录
dir "/opt/redis/data"
# redis_sentinel表示hostname,自己随意取名
# 数字1表示当主机宕机后,在从机中进行投票选主,票数大于1的晋升为主机
sentinel monitor redis_sentinel 127.0.0.1 6380 1
#30秒ping不通主节点的信息,主观认为master宕机
sentinel down-after-milliseconds mymaster 30000
#故障转移后重新主从复制,1表示串行,>1并行
sentinel parallel-syncs mymaster 1
#故障转移三分钟内没有完成,认为转移失败
sentinel failover-timeout mymaster 180000

 有些参数是默认就有的,其实需要改的就俩:

# 设置为守护进程模式,可先注释,看投票选主的过程
#daemonize yes
# redis_sentinel表示hostname,自己随意取名
# 数字1表示当主机宕机后,在从机中进行投票选主,票数大于1的晋升为主机(因为我们现在有两个从节点)
sentinel monitor redis_sentinel 127.0.0.1 6380 1

虽然默认守护进程都没有,也就只能算一个了,像上面那些文件在启动的时候会自动生成的,我们目前是教学阶段,可以不用管。

启动Redis

进入启动文件目录:

cd Desktop/JAVATOOL/redis/src

大家写自己的路径。

启动主Redis:

redis-server redis_master.conf

启动两个从Redis节点:

redis-server redis_slave0.conf
redis-server redis_slave1.conf

查看redis启动状态:

ps -ef | grep redis

Java开发 - 让你少走弯路的Redis主从实现单节点哨兵模式_Redis_05

可以看到三个Redis服务都已经启动起来了,测试博主就不贴出来了,大家自行测试就好。

启动哨兵

 启动哨兵:

redis-sentinel sentinel.conf

此时博主电脑弹了一个允许使用网络的窗口,手滑直接点了,没截图,算了。 

看运行的情况:

Java开发 - 让你少走弯路的Redis主从实现单节点哨兵模式_sentinel_06

哨兵已经成功启动了,可以看到主从的关系了,一主,二从,说明我们配置的暂时没问题,要确认哨兵能不能正常工作,还要看master宕机后能不能自动选主。

测试哨兵是否配置成功

为了看哨兵是否能正常工作,选出新的mater,我们需要手动干掉redis的master节点,通过

ps -ef | grep redis

新开一个终端,查看几个节点~这应该是进程号:

Java开发 - 让你少走弯路的Redis主从实现单节点哨兵模式_redis_07

通过kill命令杀死主节点:

kill -9 74840

Java开发 - 让你少走弯路的Redis主从实现单节点哨兵模式_Redis_08

这里有一整个投票选主的过程,目前的主节点为6381,从节点为6382,6380也成了从节点,但是其已经关闭了。

重新开启原6380主节点

 开启原主节点:

redis-server redis_master.conf

Java开发 - 让你少走弯路的Redis主从实现单节点哨兵模式_主从配置_09

新输出两句,原主节点被转为了新主节点6381的从节点,我们打开6380的配置文件看看:

Java开发 - 让你少走弯路的Redis主从实现单节点哨兵模式_主从配置_10

在文档最后找到了自动添加的从节点配置。到此,我们的测试就完全结束了,单节点哨兵监控多节点主从Redis的配置就成功了。 

杀死全部进程

Java开发 - 让你少走弯路的Redis主从实现单节点哨兵模式_redis_11

然后可以看到这边的输出,大家自己看看,找找感觉,理解一下: 

Java开发 - 让你少走弯路的Redis主从实现单节点哨兵模式_redis_12

结语

虽然这只是一篇单节点哨兵的应用,但是对于一些初创型公司或者一些小型起步项目来说已经足够了,并不是所有的公司都会集群和微服务都搞的很棒,毕竟这玩意儿可是要花钱的,项目多的时候,一年随随便便服务器花出去几百万都是正常,所以也不要指望所有公司都上集群。如果对集群有需求,没关系,咱们下篇就来讲讲哨兵的集群怎么玩。

标签:Java,redis,Redis,哨兵,master,sentinel,少走弯路,节点
From: https://blog.51cto.com/u_15993027/6407669

相关文章

  • javaweb课程设计——商城项目
    目录本项目前端成员csdn地址:一、项目截图二、前端项目介绍最后源码地址本项目前端成员csdn地址:【后端】【前端】一、项目截图二、前端项目介绍ChangeAtWill:前台项目ChangeAtWill-admin:后台项目前端需要环境nodejsv16版本下载链接https://nodejs.org/download/release/v16......
  • Java内存模型
    一、Java内存模型简介1.Java内存模型的“底层原理”从Java代码到CPU指令的变化过程是怎样的?最开始,我们编写的Java代码,即*.Java文件在执行编译Javac命令后,从刚才的*.Java文件会变出一个新的Java字节码文件,即*.class文件JVM会执行刚才生成的*.class字节码文件,并把字节码文......
  • 多线程-线程池与java内存模型
    多线程-线程池与java内存模型线程池的使用(思路:什么是线程池->他的基本构造以及参数含义->如何使用,使用过程中需要注意什么->有哪些好用的工具类)线程池的基笨概念:首先看一下的继承关系,其次看他的状态,它是利用int的高三位表示状态,比如111表示能接受任务,具体看下面第二章图接下来看......
  • redis 相关
    redis-cli-hip-p6379-aselectnumber//0-15切换数据库flushdb//清除当前库的数据delkeyname//删除指定键及数据flushall//清空整个redis数据,所有库flushdb//清除当前库的数据dockerexec-itredisredis-cliauthpasswordkeys*delllen......
  • Java中的爬虫
    爬虫pattern:表示正则表达式Matcher:文本匹配器,作用按照正则表达式的规则去读取字符串,从头开始读取步骤:获取正则表达式的对象Patternp=Pattern.compile("正则表达式");获取文本匹配器的对象Stringstr="文本";Matcherm=p.matcher(str);p:规则,str:大串,m;文本匹......
  • Linux安装java(jdk8)
    1.查看Linux系统是否有自带的jdk:1、输入:java-version如果有输出版本信息,则需要卸载原本的jdk,如果没有说明linux系统没有安装jdk可以跳过下面步骤直接进行下一步的安装。2、发现有版本信息输入:rpm-qa|grepjava检测jdk的安装包,(注意:rpm符没有时记得下载一个输入:apt-getins......
  • 如何使用JavaScript格式化日期 – JS中的日期格式化
    日期是许多JavaScript应用程序的基本组成部分,无论是在网页上显示当前日期还是处理用户输入以安排事件。但以清晰一致的格式显示日期对于积极的用户体验至关重要。在本文中,我们将探讨在JavaScript中格式化日期的各种技术,使您能够以您的应用程序所需的格式显示日期。(前端教程......
  • Java官方笔记6继承
    继承Java只有单继承,最顶级的父类是Object。子类会继承父类的fields和methods,而不会继承constructors,因为constructors不属于methods,但是子类可以通过super调用父类的constructor。子类继承父类的范围是:public、protected、package-private隐式转换,子类转父类(只有1个爸爸):Objec......
  • 基于JAVA的springboot篮球论坛系统,附源码+数据库+论文+PPT
    1、项目介绍考虑到实际生活中在篮球论坛方面的需要以及对该系统认真的分析,将系统权限按管理员和用户这两类涉及用户划分。(a)管理员;管理员使用本系统涉到的功能主要有:首页、个人中心、用户管理、篮球论坛、系统管理等功能。管理员用例图如图3-1所示。(b)用户;用户使用本系统......
  • Java Native Interface Programming
    http://journals.ecs.soton.ac.uk/java/tutorial/native1.1/implementing/index.html JavaNativeInterfaceProgramming TheJDK1.1supportstheJavaNativeInterface(JNI).Ononehand,theJNIdefinesastandardnamingandcallingconventionsothattheJa......