如何解决 “主节点故障恢复的自动化” 问题?

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 工作 & 面试中,当面试官问你主服务器宕机了,怎么办,如何处理?那么“哨兵”它来了~~~

今日主题

       1、恢复主节点的故障,通过 redis 自动化哨兵的方式

       2、预计阅读 6 分钟,正文 2700 字。


一、开场介绍


     hello,八点半的铁友们,其实在讲文章内容之前,我们先简单来知晓一下,哨兵是什么?用在哪里?等等一系列。这样我们先做一层铺垫,在后续的理解起来会更加容易,快似飞起般的感觉~~~


我们来以 Q&A 的回答方式先来了解一些基础内容


Q:哨兵是什么?

A:网上说:哨兵是一种运行模式;其实可以理解哨兵就是一个进程,因此会独立运行


Q:哨兵原理 &用在何处?

A:网上说:主节点出现故障,redis 进行通知、转移,来实现高可用;其实可以白话文理解为:哨兵就是通过发送命令,等待 redis 服务响应,从而监控运行 redis 多个实例


Q:哨兵的应用场景是?

A:主服务器宕机了,那么需要人工处理切换服务器,这多麻烦,还影响业务服务。因此哨兵它来了,带着高可用慢慢的走来了,实现了自动化


Q:哨兵是怎么使用的?

A:你猜猜难道是....对,就是通过配置的,操作核心的 redis.conf 文件等若干文件


二、实战操作


通过上述开场的基础介绍,想必我们脑子里已经有对 哨兵 有个相对闭环的了解了吧。话不多说,兄弟们上操作,有不足地方欢迎评论区探讨 &指出你认为应该改变的地方~~~


毕竟刚开始操作,我们就不要想太复杂,我们就简单来一波哨兵系统。


1、准备一台服务器即可(有 money 的准备 3~4 台,换着玩😂),准备一台的玩家需要注意,我们使用端口来区分滴哈。


2、按照网上教程的来,那我们也部署 1 个主 2 个从 2 个哨兵,跟着大佬走,幸福到长久~~~


3、开始部署主 &从节点,配置一样哈,没有特殊化,不需要额外关注其他配置,可以看我插入的代码配置,代码中会标注细节点。

#redis.conf - 这里是主节点,port端口给了一个6379port 6379#守护线程,默认是NOdaemonize yeslogfile "6379.log"dbfilename "dump-6379.rdb" #redis-6300.conf - 这里是从节点,port端口给了一个6300port 6300#守护线程,默认是NOdaemonize yeslogfile "6300.log"dbfilename "dump-6300.rdb"slaveof 192.168.1.1 6379 - 192.168.1.1(模拟服务器ip) #redis-6301.conf - 这里是从节点,port端口给了一个6301port 6301#守护线程,默认是NOdaemonize yeslogfile "6301.log"dbfilename "dump-6301.rdb"slaveof 192.168.1.1 6379 - 192.168.1.1(模拟服务器ip)

复制代码


4、配置就这么愉快的完了,上述代码很详细,还是不懂评论区见,那么接下来需要做什么?

当然是:依次启动 redis 服务的主节点 、从节点 ~~~

redis-server redis-6379.confredis-server redis-6300.confredis-server redis-6301.conf

复制代码


5、启动后,那么我们来个命令看下状态即可,下图标注的命令会有解释:

192.168.1.1:6379> info replication# Replication# 角色role:master# 从节点的连接数connected_slaves:2# 从节点详细信息 IP PORT 状态 命令(单位:字节长度)偏移量 延迟秒数# 主节点每次处理完写操作,会把命令的字节长度累加到master_repl_offset中。# 从节点在接收到主节点发送的命令后,会累加记录偏移量信息slave_repl_offset,同时,也会每秒钟上报自身的复制偏移量到主节点,以供主节点记录存储。# 在实际应用中,可以通过对比主从复制偏移量信息来监控主从复制健康状况。slave0:ip=192.168.1.1,port=6300,state=online,offset=236,lag=1slave1:ip=192.168.1.1,port=6301,state=online,offset=236,lag=0# master启动时生成的40位16进制的随机字符串,用来标识master节点master_replid:acc2aaa1f0bb0fd79d7d3302f16bddcbe4add423master_replid2:0000000000000000000000000000000000000000# master 命令(单位:字节长度)已写入的偏移量master_repl_offset:23866second_repl_offset:-1# 0/1:关闭/开启复制积压缓冲区标志(2.8+),主要用于增量复制及丢失命令补救repl_backlog_active:1# 缓冲区最大长度,默认 1Mrepl_backlog_size:1048576# 缓冲区起始偏移量repl_backlog_first_byte_offset:1# 缓冲区已存储的数据长度repl_backlog_histlen:23866

复制代码


6、接下来我们配置哨兵的配置,也是大家关注点之一,哨兵的配置简化版,端口区分:

#sentinel-26000.confport 26000#守护线程,默认是NOdaemonize yeslogfile "26000.log"#sentinel monitor mymaster 配置的含义是:#该哨兵节点监控192.168.1.1:6379这个主节点,该主节点的名称是mymaster;#最后2含义与主节点的故障判定有关:至少需要2个哨兵节点同意,才能判定主节点故障并进行故障转移。sentinel monitor mymaster 192.168.1.1 6379 2

复制代码


7、启动哨兵节点

#redis sentinel 是哨兵的英文名redis-server sentinel-26000.conf --sentinel

复制代码


8、全部结束,这个时候整个系统就开始运行了,这个时候想要验证,我们可以通过一个命令来看:

通过redis-cli连接哨兵节点:info sentinel
#sentinelsentinel_master:1sentinel_tilt:0sentinel_running_scripts:0sentinel_scripts_queue_length:0#看到这里主节点名称,以及状态,以及地址,以及从节点数量,哨兵数量master0:name=myaster,status=ok,address=192.168.1.1:6379,salves:2,sentinel:3

复制代码


9、这个时候,我们也可以看下哨兵的配置文件,例如:

打开 sentinel-26000.conf 文件目录,从这里可以看到哨兵已经发现从节点与其他哨兵的一个存在。

复制代码


10、整个配置过程就结束了,我个人建议可以玩玩,挺不错的。


三、总结


     兄弟姐妹们能看到现在,必须给个赞👍。基础内容看了,配置也教了;但是整体感觉还差点,那么就对了,还差一波总结,总结就是精华 &核心。看一篇文章,总结一定要看呐,过来人~~~


总结列举:

1、哨兵,又名(redis sentinel),独立运行,进程方式。

2、哨兵,自动化监控服务、切换主从节点,恢复故障。

3、哨兵,也有单点问题,也可以搞集群。

4、哨兵,每秒钟/次的频率向它的 master,salve 以及其他 哨兵 实例发送一个 ping 命令。

5、哨兵,监控记录,可以查看哨兵所对应的 conf 文件。

6、哨兵,配置种出现 epoch 的参数,是一个从 0 开始的计数器,选举机制。

7、哨兵,故障发现和转移是由哨兵来控制和完成的。

8、哨兵,节点本质上是 redis 节点。

9、哨兵,可以监控多个主节点,通过配置多 sentinel monitor 即可实现。


四、下期预告


下期预告:故障如何转移?它是如何运行 &切换的呢?


感谢各位的阅览 &关注,如果感觉对您或者周围的人不管在面试中还是实际学习中,如有所帮助,欢迎点赞、转发,谢谢。


有任何疑问🤔️或后续想要了解的内容点,欢迎评论区留言,我来帮助你梳理 &总结,你来读。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
JSON 数据格式
【分享】宜搭集成自动化,Groovy节点一般用法,解析JSON数据
【分享】宜搭集成自动化,Groovy节点一般用法,解析JSON数据 by 页一
1333 0
【分享】宜搭集成自动化,Groovy节点一般用法,解析JSON数据
|
Web App开发 JavaScript 开发者
Python+selenium 自动化-chrome页面静止、冻结技术,获取web动态页面的Xpath方法,查看浏览器动态dom节点
Python+selenium 自动化-chrome页面静止、冻结技术,获取web动态页面的Xpath方法,查看浏览器动态dom节点
531 0
Python+selenium 自动化-chrome页面静止、冻结技术,获取web动态页面的Xpath方法,查看浏览器动态dom节点
|
Python
Python 自动化-pywinauto库定位树结构控件里的树节点实例演示
Python 自动化-pywinauto库定位树结构控件里的树节点实例演示
638 0
Python 自动化-pywinauto库定位树结构控件里的树节点实例演示
|
JavaScript
Python+selenium 自动化-调用dom节点的click()监听事件,强力操作节点!穿透元素进行点击,节点被遮挡不可点击解决方法
Python+selenium 自动化-调用dom节点的click()监听事件,强力操作节点!穿透元素进行点击,节点被遮挡不可点击解决方法
668 0
|
2月前
|
机器学习/深度学习 人工智能 运维
构建高效运维体系:从自动化到智能化的演进
本文探讨了如何通过自动化和智能化手段,提升IT运维效率与质量。首先介绍了自动化在简化操作、减少错误中的作用;然后阐述了智能化技术如AI在预测故障、优化资源中的应用;最后讨论了如何构建一个既自动化又智能的运维体系,以实现高效、稳定和安全的IT环境。
74 4
|
2月前
|
运维 Linux Apache
,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具
【10月更文挑战第7天】随着云计算和容器化技术的发展,自动化运维成为现代IT基础设施的关键部分。Puppet是一款强大的自动化运维工具,通过定义资源状态和关系,确保系统始终处于期望配置状态。本文介绍Puppet的基本概念、安装配置及使用示例,帮助读者快速掌握Puppet,实现高效自动化运维。
63 4
|
18天前
|
机器学习/深度学习 运维 监控
智能化运维:从自动化到AIOps的演进之路####
本文深入探讨了IT运维领域如何由传统手工操作逐步迈向高度自动化,并进一步向智能化运维(AIOps)转型的过程。不同于常规摘要仅概述内容要点,本摘要将直接引入一个核心观点:随着云计算、大数据及人工智能技术的飞速发展,智能化运维已成为提升企业IT系统稳定性与效率的关键驱动力。文章详细阐述了自动化工具的应用现状、面临的挑战以及AIOps如何通过预测性分析和智能决策支持,实现运维工作的质变,引领读者思考未来运维模式的发展趋势。 ####
|
18天前
|
机器学习/深度学习 数据采集 人工智能
智能化运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的崛起背景,深入分析了其核心概念、关键技术、应用场景及面临的挑战,并对比了传统IT运维模式,揭示了AIOps如何引领运维管理向更高效、智能的方向迈进。通过实际案例分析,展示了AIOps在不同行业中的应用成效,为读者提供了对未来智能运维趋势的洞察与思考。 ####
40 1
|
1月前
|
机器学习/深度学习 数据采集 人工智能
智能运维:从自动化到AIOps的演进与实践####
本文探讨了智能运维(AIOps)的兴起背景、核心组件及其在现代IT运维中的应用。通过对比传统运维模式,阐述了AIOps如何利用机器学习、大数据分析等技术,实现故障预测、根因分析、自动化修复等功能,从而提升系统稳定性和运维效率。文章还深入分析了实施AIOps面临的挑战与解决方案,并展望了其未来发展趋势。 ####