ETCD跨城容灾与异地多活网络故障的相关表现分析

news2024/9/21 14:37:24

ETCD跨城容灾与异地多活网络故障的相关表现分析

  • 1. 网络架构
  • 2. 单个网络中断-跟leader区中断
    • 2.1. 网络中断
    • 2.2. 网络恢复
  • 3. 单个网络中断-跟非leader区中断
  • 4. 两个网络中断-leader区中断
  • 5. 两个网络中断-非leader区中断
  • 6. 两个网络中断-非leader区中断
  • 7. 总结
  • 8. 参考文档

etcd集群进行分布式设计,并且通过raft协议来进行选leader以及确保数据一致性和高可用能力。本文重点分析在不同网落区之间出现网络中断时,相关的etcd集群的表现,以探究和加强对etcd集群的理解。更多raft协议的理解可以参考 分布式Raft原理详解,从不同角色视角分析相关状态

1. 网络架构

etcd集群一共有7个节点,分别部署在3个IDC,整体架构如下
在这里插入图片描述
在该架构下,理论上能够兼容任意网络区域之间的网络中断,能够重新选举出leader,从而保证etcd整体的可用性。但是当区域的集群表现时,我们通过分析相关日志来验证。

2. 单个网络中断-跟leader区中断

架构如下
在这里插入图片描述

2.1. 网络中断

上图中BC之间的网络出现了中断,leader节点在C区域,集群整体可用

  • 由于leader在C区,并且能够接受来自AC两个区的节点心跳,因此集群leader不会触发选举,整体可用

  • B区由于不能跟C区域通信,跟集群的leader失联,会尝试进行投票选举出新的leade在这里插入图片描述

  • B区的2个节点除了自己投票外,会给A区域的3个节点发送投票申请
    在这里插入图片描述

  • A区的节点由于能够感知到C区的leader心跳,因此会拒绝B区的投票请求
    在这里插入图片描述

  • B区的节点由于无法获取到足够的选票,因此无法选举出leader,并且持续发送投票,因此投票的周期会持续增大
    在这里插入图片描述

2.2. 网络恢复

上图中BC之间的网络恢复后,原leader收到了更高选票周期的B的通信,为了保证数据一致性,会重新出发选

  • B区的节点选票周期虽然更高,但是由于持续没有从原leader同步数据,因此数据索引index小于AC区节点,因此B区不能被选举出leader
    在这里插入图片描述
  • 重新触发选举后,leader会在AC中的节点选举出新leader,从而集群恢复可用
    在这里插入图片描述
  • 新leader选举出来后,会同步相关数据到其他follower节点,保持数据一致

恢复后,重新触发选举leader的原理,在 分布式Raft原理详解,从不同角色视角分析相关状态有说明

4.3. Leader(主节点)
节点成为Leader节点后,此时可以接受客户端的数据请求,负责日志同步
如果遇到更高任期Term的Candidate的通信请求,这说明Candidate正在竞选Leader,此时之前任期的Leader转化为Follower,且完成投票;
如果遇到更高任期Term的Leader的通信请求,这说明已经选举成功新的Leader,此时之前任期的Leader转化为Follower

3. 单个网络中断-跟非leader区中断

架构如下
在这里插入图片描述

如上图AB区连接中断,由于leader在C区,能够跟A\B正常连接,因此这种情形下,整体集群能够正常提供访问,不会导致leader重新触发选举。

4. 两个网络中断-leader区中断

架构如下
在这里插入图片描述

在这种情况下,由于AC\AB区网络不通,因此会在AB区重新进行选举leader,从而重新提供服务

5. 两个网络中断-非leader区中断

架构如下
在这里插入图片描述
在这里插入图片描述
在这种情况下,leader能够跟其他的区正常连接,因此整体集群能够正常提供服务,也不会重新触发leader选举

6. 两个网络中断-非leader区中断

架构如下

在这里插入图片描述
在这种情况下,由于各个区域网络中断,不能获取超过半数节点选举出leader,因此集群不能对外提供服务。

7. 总结

  • 在3区域环境,按照这样的架构设计,能够兼容非所有区域网络中断的场景,能够兼容2个区网络中断。因此能够提供比较高的高可用服务能力
  • 其他组件在设计多区域高可用时,为了能够保证集群能够兼容多区域之间的网络中断问题,需要确保集群节点数为单数,并且至少3区域,才能在人工不干预的情况下,实现多区域间的网络中断荣灾能力
  • 通常由于在高qps情况下,不通城区之间的网络带宽以及网络时延限制,应当实现多活,并且考虑应用访问 就近原则 以减少网络时延的影响

8. 参考文档

  • 分布式Raft原理详解,从不同角色视角分析相关状态

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1536008.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

国内ip切换是否合规?

在网络使用中,IP地址切换是一种常见的行为,可以用于实现隐私保护、访问地域限制内容等目的。然而,对于国内用户来说,IP地址切换是否合规一直是一个备受关注的话题。在中国,网络管理严格,一些IP切换行为可能…

ArtDD 一键下载 掘金、CSDN、开源中国、博客园文章 文章的Chrome 插件

有想一键下载博客园、掘金、CSDN、开源中国等博客自己的文章到本地的可以使用这个插件 插件会根据当前页面链接自动分辨出文章所属平台,可能有些文章详情链接是不支持的,例如博客园存在很多个版本的文章详情页链接格式,想要支持所有的链接是…

MySQL Workbench连接云服务器内网数据库

在项目上遇到一个问题,生产环境是Centos,分配了两台云服务器,一台应用服务,一台数据库服务,应用服务与数据库服务采用内网连接。我作为开发和运维方,有权限直接访问应用服务,但是数据库服务器需…

vivado 增量实施

增量实施 增量实现是指增量编译的实现阶段设计流程: •通过重用参考设计中的先前布局和布线,保持QoR的可预测性。 •加快地点和路线的编制时间或尝试最后一英里的计时关闭。 下图提供了增量实现设计流程图。该图还说明了增量合成流程。有关增量的更多…

基于springboot+vue的毕业论文管理系统

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战,欢迎高校老师\讲师\同行交流合作 ​主要内容:毕业设计(Javaweb项目|小程序|Pyt…

文献速递:深度学习乳腺癌诊断---使用深度学习改善乳腺癌诊断的MRI技术

Title 题目 Improving breast cancer diagnostics with deep learning for MRI 使用深度学习改善乳腺癌诊断的MRI技术 01 文献速递介绍 乳腺磁共振成像(MRI)是一种高度敏感的检测乳腺癌的方式,报道的敏感性超过80%。传统上,其…

CorelDRAW2024中文最新版本新增功能及更新日志

作为一名软件工程师,对于各种软件,尤其是图形设计软件,如CorelDRAW的最新版本信息通常会有所了解。CorelDRAW作为一款功能强大的图形设计软件,其2024中文版的发布无疑为设计师们带来了全新的体验。以下是我为你整理的关于CorelDRA…

20240309web前端_第二周作业_完成游戏导航栏

作业&#xff1a;游戏导航栏 成果展示&#xff1a; 完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0…

Docker构建多平台(x86,arm64)构架镜像

这里写自定义目录标题 背景配置buildx开启experimental重启检查 打包 背景 docker镜像需要支持不同平台架构 配置buildx 开启experimental vi /etc/docker/daemon.json {"experimental": true }或者 重启检查 # 验证buildx版本 docker buildx version# 重启do…

策略路由PBR

PBR策略路由_路由环路policy-based-routeing 1、路由策略&#xff1a; 首先要了解什么是路由策略&#xff1a;首先需要在路由器上运行路由协议&#xff0c;然后在路由协议进程中通过某些工具&#xff0c;对路由进行策略修改&#xff0c; 比如通过filter-policy import-route…

【规范】小程序发布,『小程序隐私保护指引』填写指南

前言 &#x1f34a;缘由 『小程序隐私保护指引』小程序发布&#xff0c;每次都躲不开&#xff01; &#x1f3c0;事情起因&#xff1a; 最近在帮朋友弄一个小项目&#xff0c;uniappunicloud壁纸小程序。虽然之前做过不少小程序&#xff0c;但是每次发布正式版本时都有一步『…

kafka面试篇

消息队列的作用&#xff1a;异步、削峰填谷、解耦 高可用&#xff0c;几乎所有相关的开源软件都支持&#xff0c;满足大多数的应用场景&#xff0c;尤其是大数据和流计算领域&#xff0c; kafka高效&#xff0c;可伸缩&#xff0c;消息持久化。支持分区、副本和容错。 对批处理…

python四川火锅文化网站的设计与实现flask-django-php-nodejs

四川火锅文化网站的目的是让使用者可以更方便的将人、设备和场景更立体的连接在一起。能让用户以更科幻的方式使用产品&#xff0c;体验高科技时代带给人们的方便&#xff0c;同时也能让用户体会到与以往常规产品不同的体验风格。 与安卓&#xff0c;iOS相比较起来&#xff0c;…

Android ViewPager不支持wrap_content的原因

文章目录 Android ViewPager不支持wrap_content的原因问题源码分析解决 Android ViewPager不支持wrap_content的原因 问题 <androidx.viewpager.widget.ViewPagerandroid:id"id/wrap_view_pager"android:layout_width"match_parent"android:layout_he…

QT6 android下配置文件打包到APK

一.遇到问题 用QT做android开发&#xff0c;生成的apk文件默认不包含程序配置文件和png文件&#xff0c;导致程序在android上无法读取必要的参数和logo&#xff0c;本文主要解决这个问题&#xff0c;并详细讲述QT android 的apk程序打包流程。 二.APK打包流程 1.如何生成APK 当…

STM32关于使用定时器触发ADC转换的理解

以STM32 ADC的常规通道为例&#xff08;注入通道类似&#xff09;&#xff1a; 如上图&#xff0c;STM32 ADC的常规通道可以由以上6个信号触发任何一个&#xff0c;我们以使用TIM2_CH2触发ADC1&#xff0c;独立模式&#xff0c;每次仅测一条通道&#xff0c;则ADC的配置如下&am…

2023年最受欢迎的编程语言排行榜 —— Python位居榜首,但对你来说未必是最佳选择

本文的编程语言热度统计数据来自《IEEE Spectrum》&#xff0c;《IEEE Spectrum》杂志是IEEE&#xff08;美国电气电子工程师学会&#xff09;的旗舰出版物&#xff0c;探讨了新技术的发展、应用和影响。它预测工程、科学和技术的趋势&#xff0c;并为理解、讨论和领导这些领域…

扩容分区和文件系统(Linux)

在ECS控制台上扩容云盘容量后&#xff0c;对应分区和文件系统并未扩容&#xff0c;您还需要进入ECS实例内部继续扩容云盘的分区和文件系统&#xff0c;将扩容部分的容量划分至已有分区及文件系统内&#xff0c;使云盘扩容生效。本文为您介绍如何通过两个步骤完成Linux实例云盘的…

牛客NC403 编辑距离为一【中等 模拟法 Java,Go,PHP】

题目 题目链接&#xff1a; https://www.nowcoder.com/practice/0b4b22ae020247ba8ac086674f1bd2bc 思路 注意&#xff1a;必须要新增一个&#xff0c;或者删除一个&#xff0c;或者替换一个&#xff0c;所以不能相等1.如果s和t相等&#xff0c;返回false,如果s和t长度差大于1…

搜维尔科技:利用增强现实改进检验和质量控制流程

直接在工作环境中显示数字指令 DELMIA 质量检查增强体验通过工作环境中的数字指令指导操作员完成检查过程&#xff0c;从而有效地识别、鉴定和报告不合格项。使用增强现实可以显着提高质量控制和检查过程的准确性和速度。由于技术人员可以访问实时信息&#xff0c;因此他们会减…