当前位置: 首页 > news >正文

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

前言

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

简单哨兵模式

基础知识推荐

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

Redis中的哨兵模式 - 简书

怎么实现Redis的高可用?(主从、哨兵、集群) - 知乎

手把手教你配置Redis主从复制(含详细图文)

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

Redis主从加码

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

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

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

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

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

配置哨兵配置文件

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

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

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

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

#配置端口
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

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

启动哨兵

 启动哨兵:

redis-sentinel sentinel.conf

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

看运行的情况:

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

测试哨兵是否配置成功

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

ps -ef | grep redis

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

通过kill命令杀死主节点:

kill -9 74840

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

重新开启原6380主节点

 开启原主节点:

redis-server redis_master.conf

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

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

杀死全部进程

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

结语

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

http://www.lryc.cn/news/90169.html

相关文章:

  • Java的Atomic原子类
  • 离线语音控制新方案,NRK3303语音识别芯片在智能风扇的应用
  • 在树莓派3B+上安装Pytorch1.7
  • Java性能权威指南-总结4
  • c语言全局变量和局部变量问题汇总
  • 14.3:给定一个由字符串组成的数组strs,必须把所有的字符串拼接起来,返回所有可能的拼接结果中字典序最小的结果
  • C++ 项目实战:跨平台的文件与视频压缩解压工具的设计与实现
  • C和指针(二)数据
  • PyTorch基础学习(一)
  • chatgpt赋能python:Python代做:让您的网站更友好的SEO利器
  • 2022年都快结束了,还有人不会安卓录屏?在安卓上录制屏幕的的实现方式
  • px rem em rpx 区别 用法
  • 忆享聚焦|ChatGPT、AI、网络数字、游戏……近期热点资讯一览
  • [Daimayuan] 树(C++,动态规划,01背包方案数)
  • 如何选择源代码加密软件
  • TO-B类软件产品差异化
  • 设计模式之美-实战一(上):业务开发常用的基于贫血模型的MVC架构违背OOP吗?
  • ChatGPT如何训练自己的模型
  • springboot使用线程池的实际应用(一)
  • ESP-8266学习笔记
  • Java泛型简单的使用
  • 深度探索:Qt CMake工程编译后的自动打包策略
  • 2.7 编译型和解释型
  • 校园网自动登陆(河南科技学院)
  • C++11 override和final关键字
  • kafka的log存储解析
  • 4.文件系统
  • Shell脚本case in esac分支语句应用
  • 【线性dp必学四道题】线性dp四道经典例题【最长上升子序列】、【最长公共子序列】、【最长公共上升子序列(maxv的由来)】【最长公共子串】
  • 追寻幸福:探索幸福的关键特征和行为