heartbeat的心跳连接:

  讲过上面的描述,要部署heartbeat服务,至少需要两台主机才能完成。那么,要实现高可用服务,这两台主机之间,是如何做到互相通信互相监控的呢/

  下面是两台heartbeat主机之间通信的一些常用的可行的方法:

    1)串行电缆,即所谓的串口(首选,缺点是距离不能太远)

    2)一根以太网电缆量网口直连(生产环境中常用的方式)

    3)以太网电缆,通过交换机等网络设备连接(次选,原因是增加了故障点,不好排查故障,同时,线路不是专用的心跳线,容易受其他数据传输的影响,导致心跳报文发送问题)

Heartbeat裂脑:

什么是裂脑?

    由于两台高可用服务器之间在指定的时间内,无法互相检测到对方心跳而各自启动故障转移功能,取得了资源以及服务的所有权,而此时的两台高可用服务器对都还活着并作正常运行,这样就会导致同一个IP湖综合服务在两端同时启动而发生冲突的严重问题,最严重的就是两台主机同时占用一个VIP的地址,当用户写入数据的时候可能会分别写入到两端,这样可能会导致服务器两端的数据不一致或造成数据的丢失,这种情况就本成为裂脑,也有的人称之为分区集群或者大脑垂直分隔

导致裂脑发生的原因:  

  一般来说,裂脑的发生,主要是由以下的几个原因导致的:

  1)高可用服务器对之间心跳线路故障,导致无法正常的通信。原因比如:

    (1).心跳线本身就坏了(包括断了,老化)

    (2).网卡以及相关驱动坏了,IP配置及冲突问题

    (3).心跳线间连接的设备故障(交换机的故障或者是网卡的故障)

    (4).仲裁的服务器出现问题

  2)高可用服务器对上开启了防火墙阻挡了心跳消息的传输

  3)高可用服务器对上的心跳网卡地址等信息配置的不正确,导致发送心跳失败。

  4)其他服务配置不当等原因,如心跳的方式不同,心跳广播冲突,软件出现了BUG等

防止脑裂发生的方法总结:

  发生脑裂的时候,对业务的影响是及其严重的,有的时候甚至是致命的。如:两台高可用的服务器对之间发生脑裂,导致互相竞争同一个IP资源,就如同我们局域网内常见的IP地址冲突一样,两个机器就会有一个或者两个不正常,影响用户正常访问服务器。如果是应用在数据库或者是存储服务这种极重要的高可用上,那就导致用户发布的数据间断的写在两台服务器上的恶果,最终数据恢复及困难或者是难已恢复

  实际的生产环境中,我们可以从以下几个方面来防止裂脑的发生:

  1)同时使用串行电缆和以太网电缆连接,同时用两条心跳线路,这样一条线路坏了,另一个线路还是好的,依然能传送消息(推荐的)

  2)检测到裂脑的时候强行的关闭一个心跳节点(需要特殊的节点支持,如stonith,fence),相当于程序上备节点发现心跳线故障,发送关机命令到主节点。

  3)做好对裂脑的监控报警(如邮件以及手机短信等),在问题发生的时候能够人为的介入到仲裁,降低损失。当然,在实施高可用方案的时候,要根据业务的实际需求确定是否能够容忍这样的损失。对于一般的网站业务,这个损失是可控的(公司使用)

  4)启用磁盘锁。正在服务一方锁住共享磁盘,脑裂发生的时候,让对方完全抢不走共享的磁盘资源。但使用锁磁盘也会有一个不小的问题,如果占用共享盘的乙方不主动解锁,另一方就永远得不到共享磁盘。现实中介入服务节点突然死机或者崩溃,另一方就永远不可能执行解锁命令。后备节点也就截关不了共享的资和应用服务。于是有人在HA中涉及了“智能”锁,正在服务的一方只在发现心跳线全部断开时才启用磁盘锁,平时就不上锁了

  5)报警报在服务器接管之前,给人员处理留足够的时间就是1分钟内报警了,但是服务器不接管,而是5分钟之后接管,接管的时间较长。数据不会丢失,但就是会导致用户无法写数据。

  6)报警后,不直接自动服务器接管,而是由人员接管。

  7)增加仲裁的机制,确定谁该获得资源,这里面有几个参考的思路:

    1)增加一个仲裁机制。例如设置参考的IP,当心跳完全断开的时候,2个节点各自都ping一下参考的IP,不同则表明断点就出现在本段,这样就主动放弃竞争,让能够ping通参考IP的一端去接管服务。

    2)通过第三方软件仲裁谁该获得资源,这个在阿里有类似的软件应用

HeartBeat的一些介绍和功能上的一些总结

转载于:https://blog.51cto.com/xxr007/1912518

heartbeat心跳检测和裂脑相关推荐

  1. mysql复制之HeartBeat介绍和裂脑

    HeartBeat的一些介绍和功能上的一些总结 HeartBeat的作用: 通过HeartBeat,可以将资源(IP以及程序服务等资源)从一台已经故障的计算机快速转移到另一台正常运转的机器上继续提供服 ...

  2. Linux系统运维之keepalived的工作原理和裂脑

    目录 一.keepalived的工作原理 1.Keepalived高可用对之间的通信原理 2.Keepalived服务的工作原理 二.裂脑 1.什么是"裂脑" 2.导致裂脑的原因及 ...

  3. java心跳监控服务_JavaHeartBeat-应用服务器心跳检测

    HeartBeat 心跳检测应用服务器(如Tomcat,Jetty)的JAVA WEB应用程序. 如何实现? 使用HttpClient对指定的服务器(application-instance) URL ...

  4. Debezium系列之:增加心跳检测heartbeat.interval.ms

    Debezium系列之:增加心跳检测heartbeat.interval.ms 一.需求背景 二.心跳检测含义 三.增加心跳检测参数 四.查看心跳检测topic 五.修改心跳检测topic前缀 一.需 ...

  5. Goroutine心跳检测

    Goroutine心跳检测 心跳检测的核心思想是,单独启动心跳协程,然后通过向协程发送数据,表示心跳. package main import ("fmt""math/r ...

  6. Netty -Netty心跳检测机制案例,Netty通过WebSocket编程实现服务器和客户端长链接

    Netty心跳检测机制案例 案例要求 编写一个Netty心跳检测机制案例,当服务器超过3秒没有读时,就提示读空闲 当服务器超过5秒没有写操作时,提示写空闲 服务器超过7秒没有读或者写操作时,就提示读写 ...

  7. Netty(八) Netty心跳检测机制

    1.什么是长链接和短链接 在HTTP/1.0中默认使用短连接.也就是说,客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接.当客户端浏览器访问的某个HTML或其他类型的Web页中 ...

  8. 【Netty】利用Netty实现心跳检测和重连机制

    一.前言 心跳机制是定时发送一个自定义的结构体(心跳包),让对方知道自己还活着,以确保连接的有效性的机制.   我们用到的很多框架都用到了心跳检测,比如服务注册到 Eureka Server 之后会维 ...

  9. netty自定义消息实现心跳检测与重连

    netty的心跳发送的重连,主要在client端.前面有关于自定义协议的demo:https://blog.csdn.net/zc_ad/article/details/83829620 其实客户端心 ...

最新文章

  1. sql08 访问接口没有oraoledb_状态接口的实现方式讨论
  2. 输入一个数组,逆序存放在另一个数组并输出
  3. MySQL 绿色版安装方法图文教程
  4. mysql 回滚之后抛出异常_在PHP中 开始事务后,程序抛出异常 没有执行commit也没有执行rollback mysql事务会回滚吗?...
  5. 【数据结构----笔记2】查找算法之【哈希查找或散列查找】
  6. 转--linux开启FrameBuffer
  7. python爬取喜马拉雅vip音频安卓_Python爬虫:爬取喜马拉雅音频数据详解
  8. 逆向脱壳附加数据处理
  9. 笔记本电脑拔掉电源屏幕会黑一下怎么办
  10. 郑立:一个80后互联网创业神话的倒掉
  11. eclipse下载安装、配置tomcat、Maven、lombok
  12. 科学设置百度网盟到访定向,提升竞价转化率!
  13. 多线程编程核心技术总结(读周志明书籍的总结)
  14. 怎么在Vc中打开MySQL数据库_在vc++中使用mysql数据库_MySQL
  15. 第一次预习作业(html,css,js简单介绍,HTML常用标签)
  16. Linux mysql 内存设置_MYSQL在LINUX机器(4G内存)配置参数
  17. 【笔记】Go语言学习笔记
  18. 什么是32位单片机?32位单片机有哪些优点和缺点?8位,16位,32位是什么区别?
  19. js 获取图片原始宽高并等比例缩放
  20. gem5和NVM的搭建(完整版)

热门文章

  1. 浅谈一下:运营网站的一些经历和故事
  2. MySQL免安装版下载及安装
  3. 走进JavaWeb技术世界8:浅析Tomcat9请求处理流程与启动部署过程
  4. Kotlin常见知识点和踩坑指南
  5. nyoj 301递推求值 (矩阵+快速幂)
  6. html基本页面的构成,HTML网页的基本组成概述
  7. 树状数组 区间加 区间求和_EXCEL统计区间个数的专属函数
  8. “开放”Android恐怕难敌Apple iOS
  9. JasperReport类进行PDF打印导致内容缺失
  10. Windows Store apps开发[8]处理Fullscreen, Snapped和Filled状态