生产和同城存储双活架构下,发生脑裂问题影响数据库读写,如何快速分析问题和解决问题?

news/2024/5/19 21:35:42/文章来源:https://www.cnblogs.com/tycibe/p/16645395.html

数据中心脑裂问题,简单说就是两个数据中心间的网络和存储链路同时发生中断,导致两个数据中心内的应用、数据库或者操作系统同时抢占和利用共享的资源,造成资源的数据不一致,产生重大影响。如何避免脑裂是每个存储双活方案都需要尤为重视的问题,脑裂会带来长时间的存储读写IO HANG住,轻则导致业务性能下降,重则因磁盘IO超时,导致数据库挂起甚至宕机,对生产业务系统造成重大影响。因此,在出现脑裂故障问题时,准确定位问题根因,以及快速恢复应急处置问题尤为关键。本议题针对生产和同城存储双活架构下,发生脑裂问题影响数据库读写的情况,分析如何快速分析问题和解决问题。

本期为大家带来《迈向YB数据时代》2022年春季刊“持续运维”栏目中的议题

生产和同城存储双活架构下,发生脑裂问题影响数据库读写,如何快速分析问题和解决问题?

 

社区专家主张

议题主编 邓毓 江西农信运维技术经理:本议题由利安人寿资深工程师陈萍春,以及长安银行存储架构师张俊禧两位专家分别从脑裂产生的影响,以及脑裂产生后的应对策略出发,帮助同行更好的认识脑裂,以及如何在问题产生时,能够在第一时间解决。文中涉及到的问题分析思路及具体应对策略得到了某农商银行架构师胡海光及我本人的认同,最终达成一定共识供同行参考。

 

陈萍春 利安人寿资深工程师:

作为运维人员,我们对脑裂故障要有足够的认知,需要能够快速分析定位故障原因,并采取措施及时解决问题。

 

脑裂故障是存储双活架构一个不可避免的问题,在一定程度上也影响到了存储系统的稳定性。作为运维人员,我们对脑裂故障要有足够的认知,需要能够快速分析定位故障原因,并采取措施及时解决问题。如图1所示,脑裂故障主要是两种类型,一种是双活存储之间互联的心跳链路出现故障,另外一种则是任一存储出现了故障。根据双活方案的不同,这两种类型的脑裂故障也存在着不同的故障点,我们要结合具体的脑裂故障来排查和应急处置。

▲图1 两种集群脑裂故障类型示意图

先来看故障现象,当发生脑裂故障时,存储双活集群需要仲裁故障,数据库的写IO会出现悬挂现象,从而导致大量业务超时失败,这是脑裂故障的一个基本故障现象。但故障现象还存在一次性的IO长时间悬挂与间歇性的IO悬挂的差异,一次性对应着故障的稳定状态,更加容易定位故障并修复,也会有更多的故障排查时间,而间歇性故障则对应着故障的不稳定状态,故障排查难度更大。

再来看故障触发因素和影响范围。故障触发因素方面虽然往往带有随机性,但也往往由一些日常忽视的细节所引发。比如存储方面的变更,心跳链路关联的网络设备的变更,或者其他突发事件,从故障发生前的事件,推测与故障本身存在关联关系,是一个很常见也很有效的故障排查思路。另外影响范围方面,单台存储往往对应着多个不同的应用系统,即使配置了存储双活,双活的两台也不一定会配置完全一致。如果是单台存储故障导致的脑裂故障,那么故障影响范围也会提供确定故障点的有力证据。如果是同城双活存储的心跳链路故障,可能在数据中心间SAN网络层IP网络、波分设备或者裸光纤都会受到影响。

下一步是排查可能的故障点的状态,比如存储故障,大多数在存储系统层面都会有告警事件日志,稍加分析就能确定其健康状态。心跳链路故障,则相对复杂,需要排查端口状态、收发光功率以及交换机日志等等。往往在这一步,我们已经能锁定是存储故障还是心跳链路故障。为了迅速恢复业务的数据访问,最有效的手段是从存储网络层去隔离故障,比如断开故障存储的SAN网络连接,或者彻底断开某条故障链路。

如果上述排查过程依然无法确定和隔离故障点,那么就需要考虑其他灾难恢复的应急手段,以恢复关键业务为目标。比如本地存储双活的情况下考虑同城灾备恢复方案,同城存储双活的情况下考虑其他数据复制的应急替代手段,甚至断开存储双活配置等等应急手段。总之一句话,有备无患。

 

张俊禧 长安银行存储架构师:

当前主流的存储厂商都通过强制配置优先站点或者添加仲裁在站点分离时做出干预,基本上杜绝了由于脑裂导致数据一致性损坏的可能性。

 

“脑裂”是威胁存储双活架构最危险故障场景。由两节点组成的存储双活体系,两节点间用于数据同步的复制链路通常通过裸光纤或者波分复用设备连接。当前主流的存储厂商都通过强制配置优先站点或者添加仲裁在站点分离时做出干预,基本上杜绝了由于脑裂导致数据一致性损坏的可能性。

脑裂还会造成另一个严重后果是整个双活体系被“保护”,指的是为了避免由于脑裂导致数据一致性发生不可修复的损坏,主流的存储厂商将存储预先配置成当某个存活的节点,既不能通过复制链路和对方站点通信也不能和仲裁取得通信,将进入不可对外服务状态。如果发生脑裂,两个节点都处于这种隔离状态则没有节点可以对外服务,这会导致业务中断,这种情况被称为“保护”。对当前存储双活体系而言,“保护”是比脑裂损坏数据更现实的威胁。

 

 

▲图2 双活存储故障场景

以上4个示意图将展开分析存储双活体可能遇到的主要故障场景及后果。图2.1是指双活两节点没有预先配置分离规则,分离规则指定两节点断开后哪个节点优先对外提供服务,这种情况下一旦复制链路断开导致脑裂,两个站点均进入保护状态,均不能对外服务,业务中断。

图2.2是指双活两节预先配置分离规则,即指定断开后,节点1优先提供服务,这种情况复制链路断开根据分离规则,节点1对外服务,节点2的IO被抑制。可见未配置仲裁的双活体系指定分裂规则是规避脑裂严重后果的必要手段。但是只配置分离规则的不足是,一旦优先站点发生故障则第二站点也不能对外服务,因此整个体系的可用性有限。

图2.3是指添加仲裁的双活存储体系,复制链路断开后,仲裁将介入,理论上最先和仲裁取得通信的节点对外服务。通常会预先设置节点1优先级高,复制链路断开后,仲裁将等待一个超时时间,在超时时间内节点1和仲裁通信,节点1将对外服务,超过时间节点1都没能与仲裁取得联系,则节点2可对外提供服务。可见添加第三方仲裁,比只配置分离规则进一步提高了双活体系的可用性。

图2.4是指配置了仲裁也会导致保护的一种极端情况,即当发生复制链路和两个节点到仲裁的线路均中断,此时两个节点由于都不能和仲裁通信而进入保护状态。规避这种情况措施主要有三个,一是加强复制链路的冗余性保护,比如两个站点通过冗余的波分复用设备及冗余的运营商线路连接,可以最大限度降低复制链路断开的风险。二是加强站点到仲裁服务器之间线路的管理监控,如果是同城双活架构在第三站点部署仲裁服务器,尽可能避免将两站点到仲裁站点使用同一家运营商,如果是在园区内使用裸光纤或通过以太网连接存储站点和仲裁站点的,则务必加强裸光纤的保护,加强网络连接设备的管理以避免仲裁线路的故障。三是通过引入多个仲裁避免但仲裁不可用导致的故障。

存储双活体系应配置分离规则,引入仲裁甚至引入多个仲裁用于脑裂发生后进行及时准确的干预,避免数据一致性被破坏以及避免被保护,最大限度提高体系的可用性。

 

结束语

“脑裂”是威胁存储双活架构最危险的故障场景,我们事前需做好预防,事后需能第一时间解决问题,避免产生更多的影响。而预防手段,以及分析、解决问题的方案甚多,在此呼吁更多的同行能分享实践的成功经验,帮助大家彻底和脑裂绝缘。

 

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

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

相关文章

linux上redis单机的安装

1. 官网下载 https://github.com/redis/redis/archive/7.0.4.tar.gz 2. 上传到虚拟机/data/目录下、解压 tar -xzvf redis-7.0.4.tar.gz 3. 进入redis-7.0.4此目录 cd redis-7.0.4;ll 4. 安装到指定目录中 a. mkdir /usr/local/redis b. make PREFIX/usr/local/redis inst…

沃尔玛、eBay、wish、新蛋等美系平台对于测评风控点有哪些?怎么解决

很多人把各大平台风控想得过于简单,以为注册一批买家账号配一个IP就能进行下单上评,这也是导致市面上的测评现象杂乱无章。但是一定要明白一点各大电商平台都是一家数据公司他的算法一定是根据市场的变化而不断调整的。 平台检测的方式有很多种 1、平台…

RabbitMQ入门(二)

1.概述 RabbityMQ整体上是一个生产者和消费者模式。生产者生产消息到消息中间件的服务节点(Broker),服务节点中包含交换器(Exchange)和队列(Queue),生产的消息首先经过交换器,再由交…

搭建vue3项目

搭建vue3项目搭建准备创建项目选择所需配置运行项目vue3已经被大众所熟悉,很多公司都在做vue2到vue3的升级。 介绍vue3项目的搭建过程 搭建准备 前端开发环境需要node.js&npm node下载地址:http://nodejs.cn/download/ 根据自己电脑环境下载就行 安装vue-cli3…

2022/08/31 day14:企业级解决方案

文章目录目录缓存预热缓存雪崩缓存击穿缓存穿透性能指标监控总结目录 面试问题 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EtBtkGNE-1661933471760)(en-resource://database/5507:1)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下…

抖音小程序模板全行业整理合集,抖音小程序制作平台分享

小弟我是来自第三方抖音小程序制作平台的打工人,给大家整合了一些我们平台的抖音小程序模板,大家可以根据需要来获取。 步骤就是点击下方的链接,选好自己的抖音小程序模板,在平台注册账号直接套用到自己的抖音小程序上&#xff0…

深入理解蓝牙BLE之“信道管理”

目录 一.BLE的调制解调: 二.BLE的信道: 三.BLE的广播信道: 四.BLE的数据信道: 五.BLE信道管理: 5.1广播信道的随机延时: 5.2数据信道的调频算法: 跳频算法1: 跳频算法2&…

02.Haoop 虚拟机 桥接与NAT之间区别 及桥接设置

首先说 我的硬件准备,1台windows系统,1台mac pro 。 在 物理机上使用了 VMWARE CENTOS 7 的 方式进行配置。 那么我希望能实现把 这2台机器连在一起,做Hadoop 的集群。 网络问题是首先需要解决的事情,主要不通物理主机之间一直…

02:入门及安装(狂神说RabbitMQ)

RabbitMQ入门及安装 https://www.bilibili.com/video/BV1dX4y1V73Gp27 概述 简单概述: RabbitMQ是一个开源的遵循 AMQP协议实现的基于 Erlang语言编写,支持多种客户端(语言),用于在分布式系统中存储消息&#xff0…

Spring Security 入门之自定义表单登录开发实现(三)

文章目录1. 前言2. 自定义认证2.1 自定义登录页面2.2 后端认证逻辑3. 自定义登陆成功处理3.1 登陆成功原理3.2 自定义登陆成功响应处理4. 自定义登陆失败处理4.1 登陆失败原理4.2 自定义登陆失败响应处理5. 注销用户处理5.1 注销原理总结1. 前言 在弄懂HelloWorld案例后&#…

Node.js | 使用内置模块 event 实现发布订阅模式

🖥️ NodeJS专栏:Node.js从入门到精通 🖥️ 蓝桥杯真题解析:蓝桥杯Web国赛真题解析 🧧 加入社区领红包:海底烧烤店ai(从前端到全栈) 🧑‍💼个人简介&#xff…

自动化测试中的验证码问题

做自动化测试的同学在面试的时候经常会遇到这问题,而且我们在实际的工作中也会遇到这个问题,那么这问题到底该怎么处理? 下面给出了面试过程中常见的相关面试题供大家参考: 01 在做自动化登陆的同时,如何绕过验证码&a…

windows下安装docker

下载docker,通过Redirecting…这个下载docker 正在上传…重新上传取消 下载完安装 安装完成后,进入powershell,输入命令docker network ls,查看docker网络,如果没有bridge项目,创建容器会报错(Windows容器就是两…

3D格式转换神器HOOPS Exchange使用教程(一):打印组件结构

HOOPS Exchange是什么? HOOPS Exchange 是一组软件库,可以帮助开发人员在开发应用程序时读取和写入主流的 2D 和 3D 格式。HOOPS Exchange 支持在主流的3D 文件格式中读取 CAD 数据,并支持将 3D 数据转换为 PRC 数据格式,这是一种…

NGINX源码之:event与epoll

在进入正题之前,先来大概了解下epoll: 引入多路复用之前socket建立连接流程: 1、服务端先建立socket(serversocket)占用一个文件描述符fd,然后bind端口,开启监听listen accept事件; 2、客户端请…

有趣的前端项目——一个暴躁萌的大眼仔

有趣的前端项目——一个暴躁萌的大眼仔 众所周知,我是一个摆子前端(真的 ),闲来无事,网上冲浪 遇见了如此蠢萌的大眼 于是我,行也思,坐也思,可算把这个大眼给复刻出来了。 原文出…

01-Flink概述

1. 源起和设计理念https://flink.apache.org/在 Flink 官网主页的顶部可以看到,项目的核心目标,是“数据流上的有状态计算”(Stateful Computations over Data Streams)。 具体定位是:Apache Flink 是一个框架和分布式处理引擎,如下图所示,用于对无界和有界数据流进行有…

利用逻辑分析仪处理CAN协议数据

1.设置逻辑分析仪 设置合适的采样频率和软件定义的波特率500K 2.数据分析 实测SOF的宽度是2us,因此可计算出波特率为500K,与实际程序设置的速率一致。 取图中的一部分数据分析,从左往右看: 0|| 000 0[1]001 0010 0|| 000 1000 …

《RO 仙境传说》Game Jam 游戏创作大赛

浪漫奇幻 MMORPG《RO 仙境传说》迎接 20 周年的到来,同时展开在 The Sandbox 元宇宙的旅程。冒险家们,是时候创建你的 RO 元宇宙新世代! 游戏创作大赛 (Game Jam) 在 The Sandbox 中制作最有代表性的《RO》内容,同时重温 RO 20 年…

使用谷歌浏览器 devtools 调试node项目

使用谷歌浏览器 devtools 调试node项目 当我们写node项目时,可以通过谷歌浏览器自带的devtools帮助我们debug我们的node项目 1.启动调试命令 nodemon --inspect app.js如上图所示,当出现Debugger… 字样时即说明启动成功! 2.在谷歌浏览器…