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

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.mzph.cn/news/766166.shtml

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

相关文章

【多线程】有了解过 CAS 和原子操作吗?

SueWakeup 个人主页:SueWakeup 系列专栏:学习Java 个性签名:人生乏味啊,我欲令之光怪陆离 本文封面由 凯楠📷 友情赞助! 目录 前言 悲观锁和乐观锁 什么是 CAS ? 什么是原子操作? CAS 执行流…

git 上传文件夹至远端仓库的方法

上传的远端git可以是gitlab、github、gitee、gitblit或者gitCode等等 以下以GitHub为例说明: 1、登录GitHub网站(账户/密码) 2、创建一个新的空白项目(或者已有的项目)hello-world 分支是master ,这里默认即…

面经Java开发

联奕一面: 1、这段代码的输出结果是多少?t q z package com.smart.community.test;public class Test {public class B{static {System.out.println("t");}public B(){System.out.println("z");}}public class A extends B{static {System.out.println…

Matlab2024a在Windows系统上的安装配置

目录 前言一、​Matlab在Windows系统上安装总结 前言 Matlab是一种高级技术计算和编程环境,广泛应用于科学、工程和金融等领域。它提供了丰富的工具和函数库,用于数据分析、可视化、模型建立、算法开发和应用部署等任务。注:文末附有下载链接…

Unity vision pro模拟器开发教程-附常见问题解决方案

前言 庄生晓梦迷蝴蝶,望帝春心托杜鹃 废话 去年苹果发布会上,推出了Vision Pro这一款XR产品。并且宣布Unity作为其主要合作伙伴,负责开发XR的开发产品。 这消息一出,当晚Unity的股价直接被熔断。产品发布之后,一直等…

算法——深度优秀搜索和广度优秀搜索

深度优先——递归 // 先序遍历 void dfs(TreeNode* node){if(!node){return;}cout<<node->val;dfs(node->left);dfs(node->right); } // 中序遍历 void dfs(TreeNode* node){if(!node){return;}dfs(node->left);cout<<node->val;dfs(node->righ…

API(Arrays,Lambda)

一、Arrays 操作数组的工具类。 常用方法&#xff1a; public static Strinq tostring(数组) 把数组拼接成一个字符串 public static int binarySearch(数组&#xff0c;查找的元素) 二分查找法查…

算法|基础算法|位运算

基础算法|位运算 1.与运算 2.或运算 3.非运算 4.异或运算 5.左移、右移运算 心有猛虎&#xff0c;细嗅蔷薇。你好朋友&#xff0c;这里是锅巴的C\C学习笔记&#xff0c;常言道&#xff0c;不积跬步无以至千里&#xff0c;希望有朝一日我们积累的滴水可以击穿顽石。 与运算 与…

05- 还在双引号添加字符串?- 文本块

原因 使用过java的string的时候&#xff0c;当我们使用json&#xff0c;sql&#xff0c;xml在代码里面进行初始化的时候&#xff0c;大量的\n,“” 的真的是噩梦&#xff0c;导致无法顺畅的阅读&#xff0c;我一般调试的时候&#xff0c;会把他打印到console上进行阅读或者格式…

IPMI开源库pyghmi基本使用

简介&#xff1a;Pyghmi是一个纯Python&#xff08;主要是IPMI&#xff09;服务器管理库。IPMI&#xff08;Intelligent Platform Management Interface&#xff0c;智能平台管理接口&#xff09;是一种开放的标准&#xff0c;旨在帮助系统管理员在本地和远程管理服务器系统。而…

探索Garnet:微软开源的高性能分布式缓存存储系统

微软研究院近期宣布推出一款名为Garnet的创新开源分布式缓存存储系统&#xff0c;致力于解决现代应用程序在处理大规模数据时对于高吞吐量、低延迟及卓越可扩展性的严苛要求。这款基于C# .NET 8.0构建的新型系统&#xff0c;充分利用了现代硬件能力&#xff0c;为应用程序开发人…

2024年【通信安全员ABC证】新版试题及通信安全员ABC证模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 通信安全员ABC证新版试题根据新通信安全员ABC证考试大纲要求&#xff0c;安全生产模拟考试一点通将通信安全员ABC证模拟考试试题进行汇编&#xff0c;组成一套通信安全员ABC证全真模拟考试试题&#xff0c;学员可通过…

C++初阶---类和对象

目录 1. 类的引入 2. 类的定义 4. 类的访问限定符及封装 4.1 访问限定符 4.2 封装 5. 类的作用域 6.类的实例化 7.类对象模型 8. this指针 8.1 this指针的引出 8.2 this指针的特性 8.3 C语言和C实现栈的对比 9.类的六个默认成员函数 10&#xff0c;构造函数 10.1…

新能源汽车BMS应用设计

新能源汽车BMS应用设计 电池管理系统&#xff08;BMS&#xff09; 概述 电池管理系统&#xff08;BMS&#xff09;为一套保护动力电池使用安全的控制系统&#xff0c;时刻监控电池的使用状态&#xff0c;通过必要措施缓解电池组的不一致性&#xff0c;为新能源车辆的使用安全…

LeetCode热题Hot100-两数之和

充分意识到Coding能力的重要性&#xff0c;重启算法刷题之旅。 没想到这么简单的题目都写的磕磕绊绊。 一刷只写自己的解&#xff0c;二刷再看有没有其他更巧妙的方法~ 题目&#xff1a; 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目…

Prometheus+Grafana 监控Tongweb嵌入式(by lqw)

文章目录 1.思路2.部署准备3.Grafana仪表盘json文件下载4.tw嵌入式jar包本地引入依赖并测试运行5.运行jmx_prometheus_javaagent-0.19.0.jar形式获取监控数据&#xff08;方法一&#xff09;6.使用Actuator 获取监听数据&#xff08;方法二&#xff09;7.Prometheus部署8.Prome…

代码随想录day29(2)二叉树:将有序数组转换为二叉搜索树(leetcode108)

题目要求&#xff1a;将一个按照升序排列的有序数组&#xff0c;转换为一棵高度平衡二叉搜索树。 思路&#xff1a;思路比较简单&#xff0c;如果目标是平衡二叉树&#xff0c;我们每次只需要取数组的中间元素作为根节点&#xff0c;分成左右两个子树&#xff0c;再递归地进行…

B站python爬虫课程笔记(Q16-19结束)

下面是学习的网址&#xff1a; ​​​​​​【Python爬虫】 目录 16、捕捉异常try&except语句的一些问题 1&#xff09;一些常见的异常类型 2&#xff09;try&except的使用 17、测试Bug的一些问题 1&#xff09;assert断定函数的使用 2&#xff09;unittest单元…

SqlServer 数据库创建到指定目录

Sql 代码 CREATE DATABASE [StudentDB] CONTAINMENT NONE ON PRIMARY ( NAME NStudentDB, FILENAME ND:\Demo\DBs\StudentDB.mdf , SIZE 8192KB , MAXSIZE UNLIMITED, FILEGROWTH 65536KB ) LOG ON ( NAME NStudentDB_log, FILENAME NG:\Demo\DBs\StudentDB_log.ld…

fs-extra 抱错解决 TypeError: Cannot read property ‘native‘ of undefined

原来的写法&#xff0c;直接在最上面 import fs from fs-extra;在函数中&#xff0c;使用到的地方引入&#xff0c;修改为动态的 const fs await import("fs-extra");结果成功不抱错