`

高可用方案之脑裂问题探讨(原创)

阅读更多

关于脑裂我们先来看看红帽的文档是如何解释的
# What does "split-brain" mean?
"Split brain" is a condition whereby two or more computers or groups of computers lose contact with one another but still act as if the cluster were intact. This is like having two governments trying to rule the same country. If multiple computers are allowed to write to the same file system without knowledge of what the other nodes are doing, it will quickly lead to data corruption and other serious problems.
Split-brain is prevented by enforcing quorum rules (which say that no group of nodes may operate unless they are in contact with a majority of all nodes) and fencing (which makes sure nodes outside of the quorum are prevented from interfering with the cluster).
在“双机热备”高可用(HA)系统中,当联系2个节点的“心跳线”断开时,本来为一整体、动作协调的HA系统,就分裂成为2个独立的个体。由于相互失去了联系,都以为是对方出了故障,2个节点上的HA软件像“裂脑人”一样,“本能”地争抢“共享资源”、争起“应用服务”,就会发生严重后果:或者共享资源被瓜分、2边“服务”都起不来了;或者2边“服务”都起来了,但同时读写“共享存储”,导致数据损坏(常见如数据库轮询着的联机日志出错)。
运行于备用主机上的Heartbeat可以通过以太网连接检测主服务器的运行状态,一旦其无法检测到主服务器的“心跳”则自动接管主服务器的资源。通常情况下,主、备服务器间的心跳连接是一个独立的物理连接,这个连接可以是串行线缆、一个由“交叉线”实现的以太网连接。Heartbeat甚至可同时通过多个物理连接检测主服务器的工作状态,而其只要能通过其中一个连接收到主服务器处于活动状态的信息,就会认为主服务器处于正常状态。从实践经验的角度来说,建议为Heartbeat配置多条独立的物理连接,以避免Heartbeat通信线路本身存在单点故障。
1、串行电缆:被认为是比以太网连接安全性稍好些的连接方式,因为hacker无法通过串行连接运行诸如telnet、ssh或rsh类的程序,从而可以降低其通过已劫持的服务器再次侵入备份服务器的几率。但串行线缆受限于可用长度,因此主、备服务器的距离必须非常短。
2、以太网连接:使用此方式可以消除串行线缆的在长度方面限制,并且可以通过此连接在主备服务器间同步文件系统,从而减少了从正常通信连接带宽的占用。
基于冗余的角度考虑,应该在主、备服务器使用两个物理连接传输heartbeat的控制信息;这样可以避免在一个网络或线缆故障时导致两个节点同时认为自已是唯一处于活动状态的服务器从而出现争用资源的情况,这种争用资源的场景即是所谓的“脑裂”(split-brain)或“partitioned cluster”。在两个节点共享同一个物理设备资源的情况下,脑裂会产生相当可怕的后果。
为了避免出现脑裂,可采用下面的预防措施:
添加冗余的心跳线,例如双线条线。尽量减少“裂脑”发生机会。
启用磁盘锁。正在服务一方锁住共享磁盘,“裂脑”发生时,让对方完全“抢不走”共享磁盘资源。但使用锁磁盘也会有一个不小的问题,如果占用共享盘的一方不主动“解锁”,另一方就永远得不到共享磁盘。现实中假如服务节点突然死机或崩溃,就不可能执行解锁命令。后备节点也就接管不了共享资源和应用服务。于是有人在HA中设计了“智能”锁。即,正在服务的一方只在发现心跳线全部断开(察觉不到对端)时才启用磁盘锁。平时就不上锁了。
设置仲裁机制。例如设置参考IP(如网关IP),当心跳线完全断开时,2个节点都各自ping一下 参考IP,不通则表明断点就出在本端,不仅“心跳”、还兼对外“服务”的本端网络链路断了,即使启动(或继续)应用服务也没有用了,那就主动放弃竞争,让能够ping通参考IP的一端去起服务。更保险一些,ping不通参考IP的一方干脆就自我重启,以彻底释放有可能还占用着的那些共享资源。


参考至:http://surpassdream.blog.51cto.com/1347340/284974
            http://www1.chinaunix.com/space.php?uid=25715911&do=blog&id=261403
本文原创,转载请注明出处、作者
如有错误,欢迎指正
邮箱:czmcj@163.com

0
0
分享到:
评论

相关推荐

    redis哨兵模式之脑裂现象.docx

    Redis哨兵模式是一种高可用性的解决方案,它可以自动地检测Redis节点的故障,并自动执行故障转移来确保Redis集群的高可用性。然而,在Redis哨兵模式中存在一种可能的风险,即脑裂现象。 什么是脑裂? 脑裂是一个...

    基于Oracle RAC 双活方案实施,如何规避脑裂风险- 最佳实践.docx

    Oracle Real Application Clusters (RAC) 是一种高性能、高可用性的解决方案,它允许多个数据库实例同时访问同一份数据,从而提高系统的扩展性和可靠性。在双活方案中,两个或多个数据中心均处于活跃状态,共同承担...

    容灾脑裂及解决方案.pptx

    容灾脑裂及解决方案 容灾脑裂是指在分布式系统中,由于网络故障或节点故障,导致系统中的两个或多个节点无法正常通信,形成相互独立的子系统,各自独立运行。这是一种灾难性事件,因为这会导致数据的不一致性和业务...

    MySQL数据库高可用性方案.pdf

    本文主要探讨了几种常见的MySQL高可用性解决方案,包括MySQL主从复制、MySQL+Heartbeat+存储、MySQL+DRBD+Heartbeat以及MySQL Cluster。 1. **MySQL+Replication** - **概述**:MySQL的异步复制允许数据从一个主...

    电力系统管理网关的高可用性方案.pdf

    电力系统管理网关的高可用性方案主要关注的是在电力系统中,如何通过集群技术确保网络管理网关的持续稳定运行。随着智能电网的发展,网络远程控制设备的增多,网关的高可用性成为了保障系统正常运行的关键。高可用性...

    Keepalived高可用服务解决方案.docx

    ### Keepalived高可用服务解决方案知识点详述 #### 一、高可用集群概念与重要性 **1.1 高可用集群定义** 高可用集群(High Availability Cluster,简称HACluster)是一种服务器集群技术,旨在减少服务中断时间,...

    高可用服务解决方案(DBA).md.docx

    ### 高可用服务解决方案概述 #### 一、Heartbeat高可用解决方案 ##### 1.1 Heartbeat简介 **Heartbeat**是一种实现高可用性的开源工具,属于Linux-HA项目的一部分。其核心价值在于确保关键服务在面对单点故障时...

    城商行同城双活存储方案设计探讨.docx

    本文将探讨城商行同城双活存储方案设计的相关知识点,涵盖双活解决方案的部分难点解读、国内华为存储双活解决方案、全闪存阵列的引入对存储双活的帮助、数据同步与复制相关问题、同城双活建设规划、规模、模式与运维...

    mysql高可用

    通过对MySQL高可用方案的深入探讨,我们可以看到,在构建金融级别的MySQL高可用系统时,需要综合考虑多种因素,包括但不限于数据的一致性、业务的连续性以及可能出现的各种故障类型。通过合理的设计和选择合适的方案...

    nigix实现MYSQL主备高可用双活

    本文将深入探讨如何利用Nginx来实现MySQL的主备高可用双活。 首先,理解“主备高可用”意味着有一个主数据库处理所有的写操作,而一个或多个备用数据库同步主数据库的数据,以备在主数据库出现问题时接管服务。而...

    mysql+lvs+keepalive+mha高可用

    然而,`keepalived`在特定情况下可能出现“脑裂”问题,即两台服务器都认为自己是主服务器,可能导致数据不一致。为避免这种情况,本教程可能建议采用其他方法替代`keepalived`来管理VIP漂移。 `MHA`是一个用于...

    数据库高可用和分区解决方案-MongoDB篇.docx

    本文将深入探讨MongoDB在高可用性和分区解决方案方面的关键技术点,重点介绍副本集(ReplicaSet)与分片(sharding)。 #### 二、副本集(ReplicaSet) 副本集是MongoDB实现高可用性的一种机制,通过维护多个数据副本,...

    高可用技术的实践分享.pdf

    云平台的高可用需求 在云平台的高可用需求方面,需要确保基础平台的稳定性,并能够监控业务并快速恢复。此外,在云平台升级过程中,需要保证业务的连续性。在云计算中,可用性被视为一项新需求,因为它对保证服务的...

    云计算的高可用实践探索与分享.pdf

    《云计算的高可用实践探索与分享》是一份深入探讨云计算高可用性的研究报告。报告的核心是保障云平台稳定、快速响应业务故障以及在升级过程中确保业务连续性。以下将详细阐述其中的关键知识点: 1. **云平台的高...

    redis高可用core

    这里我们将详细探讨Redis如何实现高可用以及读写分离策略。 一、Redis高可用方案 1. **主从复制(Replication)**:Redis支持主从复制模式,主节点负责数据的写入,从节点则同步主节点的数据并提供读取服务。当主...

    Redis高可用集群实战与优化 - 打造稳定高效的数据存储方案

    Redis高可用集群实战与优化是构建稳定高效数据存储的关键步骤。相比哨兵模式,Redis集群模式在性能和可用性上有着显著优势。哨兵模式主要依赖于哨兵系统监控主节点状态,当主节点出现问题时,自动进行主从切换。然而...

    系统高可用技术架构设计.pptx

    本文将深入探讨云平台的高可用需求、基础组件的高可用实践以及监控系统的构建,为实现高效、可靠的云环境提供关键见解。 首先,云平台的高可用需求主要集中在三个方面:保证基础平台的稳定性、实时监控业务并快速...

    基于MongoDB的高可用性分布式数据库集群技术研究.pdf

    在实际应用中,MongoDB的分片技术和复制集机制对于构建高可用性、高扩展性的数据库解决方案非常有效。特别是对于需要高并发处理能力和大数据量处理能力的应用场景,MongoDB的分布式架构可以提供显著的优势。同时,...

Global site tag (gtag.js) - Google Analytics