首页 > 其他分享 >orchestrator系列(二)--故障检测与恢复

orchestrator系列(二)--故障检测与恢复

时间:2023-09-07 09:33:21浏览次数:30  
标签:副本 orchestrator -- 恢复 故障 检测 节点

Orchestrator实现了自动Failover,现在来看看自动Failover的大致流程是怎么样的。

1、故障检测(Failure detection)

orchestrator使用整体性方法来检测主节点和中间主节点的故障。

在原始的检测方法中,监控工具会探测主节点,并在无法联系或查询主服务器时发出警报。这种方法容易受到网络故障引起的误报的影响。为了减少误报的几率,简单方法通过以t长时间间隔运行n个测试来缓解这个问题。这在某些情况下减少了误报的几率,但也增加了在真正故障事件发生时的响应时间。

orchestrator利用了复制拓扑。它不仅观察master server本身,还观察其副本。例如,为了诊断一个主节点失效的情况,orchestrator必须同时满足以下两个条件:

无法连接主节点
能够连接到主节点的副本,并确认它们也无法看到主节点

orchestrator不是按时间来排查错误,而是通过多个观察者,即复制拓扑中的服务器。实际上,当一个主节点的所有副本都一致认为它们无法联系到主节点时,复制拓扑实际上已经出现故障,此时进行故障转移是合理的。

orchestrator的整体性故障检测方法在生产环境中被认为非常可靠。

2、检测和恢复(Detection and recovery)

检测并不总是导致恢复。有一些情况下不希望进行恢复:

集群没有被列为自动故障转移的候选项;
管理员指示不应在特定服务器上进行恢复;
管理员全局禁用了恢复操作;
在之前的故障转移完成后不久,进行了反复操作;
故障类型被认为不值得进行恢复;

在期望的情况下,恢复会立即跟随检测。在其他情况下,例如被阻止的恢复,恢复可能在检测后的几分钟内进行。

检测是独立于恢复的,并且始终处于启用状态。根据检测执行OnFailureDetectionProcesses钩子函数,具体配置看下文故障检相关测配置。

3、故障检测相关配置

故障检测的配置:

{
  "FailureDetectionPeriodBlockMinutes": 60,
}

组织发送时间,orchestrator每秒检测一次。

hooks:

{
  "OnFailureDetectionProcesses": [
    "echo 'Detected {failureType} on {failureCluster}. Affected replicas: {countReplicas}' >> /tmp/recovery.log"  ],
}

MySQL 侧设置:

  • set global slave_net_timeout = 4

在从库和主库之间设置一个较短(2秒)的心跳间隔,使从库能够快速识别故障。如果没有进行此设置,某些情况可能需要长达一分钟才能检测到故障。

  • CHANGE MASTER TO MASTER_CONNECT_RETRY=1, MASTER_RETRY_COUNT=86400

在复制失败的情况下,使从库每秒尝试重新连接(默认为60秒)。对于短暂的网络问题,此设置尝试快速恢复复制,如果成功,将避免由协调器执行的一般故障/恢复操作。

故障检测场景

以下是潜在故障列表:

- DeadMaster  主节点故障
- DeadMasterAndReplicas 主节点和副本节点故障
- DeadMasterAndSomeReplicas 主节点和部分副本节点故障
- DeadMasterWithoutReplicas 主节点没有副本节点
- UnreachableMasterWithLaggingReplicas 无法访问的主节点且存在滞后的副本节点
- UnreachableMaster 无法访问的主节点
- LockedSemiSyncMaster 被锁定的半同步主节点
- MasterWithTooManySemiSyncReplicas 主节点具有过多的半同步副本
- AllMasterReplicasNotReplicating 所有主节点副本均未进行复制
- AllMasterReplicasNotReplicatingOrDead 所有主节点副本未进行复制或停止工作
- DeadCoMaster 协同主节点故障
- DeadCoMasterAndSomeReplicas 协同主节点和部分副本节点故障
- DeadIntermediateMaster 中间主节点故障
- DeadIntermediateMasterWithSingleReplicaFailingToConnect 中间主节点故障且单个副本无法连接
- DeadIntermediateMasterWithSingleReplica 中间主节点故障且只有一个副本节点
- DeadIntermediateMasterAndSomeReplicas 中间主节点和部分副本节点故障
- DeadIntermediateMasterAndReplicas 中间主节点和副本节点故障
- AllIntermediateMasterReplicasFailingToConnectOrDead 所有中间主节点副本无法连接或停止工作
- AllIntermediateMasterReplicasNotReplicating 所有中间主节点副本未进行复制
- UnreachableIntermediateMasterWithLaggingReplicas 无法访问的中间主节点且存在滞后的副本节点
- UnreachableIntermediateMaster 无法访问的中间主节点
- BinlogServerFailingToConnectToMaster Binlog服务器无法连接到主节点

4 拓扑恢复

拓扑恢复

orchestrator 能够从一系列故障场景中进行恢复。特别是,它可以从主服务器或中间主服务器的故障中恢复。

自动和手动恢复

orchestrator 支持以下恢复方式:

  • 自动恢复(在意外故障时采取行动)。
  • 优雅、计划的主库提升。
  • 手动恢复。
  • 手动、强制/紧急切换。

欲知后事如何,且听下回分解。
欢迎关注公众号:DBA札记,一起交流数据库技术。后台回复“交流群”可添加技术交流群。欢迎觉得读完本文有收获,可以转发给其他朋友,大家一起学习进步!

标签:副本,orchestrator,--,恢复,故障,检测,节点
From: https://www.cnblogs.com/kaluolazhiye/p/17683988.html

相关文章

  • 界面控件开发包DevExpress 9月全新发布v23.1.5
    DevExpressUniversalSubscription拥有.NET开发需要的所有平台控件,包含600多个UI控件、报表平台、DevExpressDashboardeXpressApp框架、适用于VisualStudio的CodeRush等一系列辅助工具。屡获大奖的软件开发平台DevExpress今年第一个重要版本v23.1正式发布,该版本拥有众多新......
  • 创建虚拟环境
    安装virtualenvpython3-mpipinstallvirtualenv-ihttps://pypi.tuna.tsinghua.edu.cn/simple进入一个目录cdCVE-2022-24834/创建一个名为test的虚拟环境virtualenvtest激活虚拟环境source./test/bin/activate......
  • #define定义宏本质是替换一、宏常量:#defineMAX50优点:提高代码可扩展性、提高可读性、提高了安全性、还可以与case配合注意:定义宏常量不要加分号,一般宏名全部大写预定义好的宏常量:printf("%s\n",__func__);获取函数名printf("%s\n",__FILE__);获取文件名print......
  • html+css:<a>中嵌入<img>,实现图片链接
    这个很好理解,记住<a>中不仅可以写标签,还可以嵌入文字。现在效果如下,在<a>中嵌入了<img>,同时又嵌入了<p>,点击图片和文字段落,其都会直接来进行跳转。这个是非常重要的,一点也不难,耐心做下去。  ......
  • rabbit发送定时邮件
    项目整体结构本文涵盖了关于RabbitMQ很多方面的知识点,如:消息发送确认机制消费确认机制消息的重新投递消费幂等性,等等这些都是围绕上面那张整体流程图展开的,所以有必要先贴出来,见图知意实现思路简略介绍QQ邮箱授权码的获取编写发送邮件工具类编写RabbitMQ......
  • 2022csp-j复赛试题及答案
    1#include<iostream>2usingnamespacestd;34intmain(){5inta,b;6cin>>a>>b;7longlongans=1;//注意longlong,不能用int8for(inti=1;i<=b;i++){9ans*=a;10if(ans>1e9){11......
  • 代码随想录算法第一天704
    代码随想录算法第一天|704.二分查找、27.移除元素学习(复习)数组理论基础:​ (https://programmercarl.com/数组理论基础.html)​ 新了解到Java中数组地址不是连续的。704.二分查找题目题目链接:https://leetcode.cn/problems/binary-search/文章讲解:https://programmercarl.......
  • 计算器1
    利用pythontinker来写交互界面 主要代码由两部分组成,一方面是交互页面的按钮,另一个是按钮与功能的绑定。首先创建一个交互窗口fromtkinterimport*window=Tk()window.title("计算器")window.geometry("400x500+100+200")//初始窗口位置及大小window.resizable(0,0)......
  • 【漏洞复现】DataEase数据可视化分析工具SQL注入-CVE-2023-40771
    1、DataEase数据可视化分析工具简介DataEase是开源的数据可视化分析工具,帮助用户快速分析数据并洞察业务趋势,从而实现业务的改进与优化。DataEase支持丰富的数据源连接,能够通过拖拉拽方式快速制作图表,并可以方便与他人分享。前端:Vue.js、Element图库:ApacheECharts、AntV后......
  • 提高 Web 开发效率的10个VS Code扩展插件,你知道吗?
    前言一个出色的开发工具可以显著提高开发人员的开发效率,而优秀的扩展插件则能更进一步地提升工具的效率。在前端开发领域,VSCode毫无疑问是目前最受欢迎的开发工具。为了帮助前端开发人员提高工作效率,今天小编将向大家推荐10个强大的VSCode扩展插件。1.JavaScript(ES6)CodeSni......