Heartbeat高可用

  1. Heartbeat作用:

通过heartbeat,可以将资源(ip以及程序服务等资源)从一台已经故障的计算机快速转移到另一台正常运转的机器上继续提供服务,一般称之为高可用服务。

heartbeat和keepalived有很多相同之处,但是也有区别。

官方网址:http://www.linux-ha.org/wiki/Main_Page

  1. 工作原理:

通过修改heartbeat的配置文件,可以指定一台heartbeat服务器作为主服务器,另一台自动成为热备服务器。在热备服务器上面配置heartbeat守护程序来监听来自主服务器的心跳信息。如果在规定时间内,无法监听到心跳信息,那么就启动故障转移,取得主服务器上的相关资源的所有权,接替主服务器继续不间断的提供服务,从而达到资源以及服务高可用的目的。

heartbeat还支持主主模式,及两台服务器互为主备。一般故障切换时间在5~20s之间。

另外:和keepalived的服务一样,heartbeat高可用是服务器级别的,不是服务级别的。

  1. 服务器宕机
  2. heartbeat软件故障
  3. 心跳连接线故障)

服务故障不会导致切换,可以通过服务宕机把heartbeat服务停掉。

  1. 心跳连接:

    至少需要两台主机才可以实现高可用服务。

    两台heartbeat服务之间通信:

  • 穿行电缆,所谓的串口(首先,缺点是距离不能太远)
  • 一根以太网电缆两网卡直连(常用方式)
  • 以太网电缆,通过交换机等网络设备连接。(交换机可能出现问题等)
  1. Heartbeat裂脑(splitbrain)

两台服务器在一定时间内,无法相互检测到对方心跳而各自启动故障转移功能,取得资源和服务的所有权,会导致同一个IP在两端同时启动服务,存在两个相同的VIP,造成冲突的严重问题。

  1. 裂脑的原因:
  • 心跳链路故障,导致无法正常通信
  • 开启了防火墙阻挡了心跳信息传输
  • 心跳网卡地址等配置不正确
  • 心跳方式,心跳广播冲突,软件bug
  1. 防止裂脑方案:
  • 同时使用串行电缆和以太网电缆连接,同时使用两条心跳线
  • 检测到裂脑时,强制关闭一个节点。(需要特殊设备支持,如stonish和fence)。相当于程序上的备节点发现心跳故障,发送关机指令到主节点。
  • 做好监控预警
  • 启用磁盘锁
  • 仲裁机制(确定让那个节点接管服务)
  1. fence设备介绍
  • IBM:RSA
  • HP:ILO
  • DELL:iDRAC
  • 外部设备有APC生产的PowerSwitch
  1. 消息类型:

  • 心跳消息(单播,广播或者多播):150字节的数据包
  • 集群转换消息:ip-request,ip-request-rsp
  • 重传消息:rexmit-request
  1. IP地址接管和故障转移:

    heartbeat通过ip地址接管和arp广播进行故障转移的。

ARP广播:在主服务器故障时,备用节点接管资源后,会立即强制更新所有客户端本地的arp表(即清楚客户端本地缓存的故障服务器的vip和mac地址的解析记录),确保客户端和新的主服务器的对话。

  1.  

真是IP,又被称为管理ip,一般指配置在物理网卡上面的ip。在负载均衡高可用环境中,管理IP是不对外提供访问服务的。仅仅作为管理服务器使用,如SSH可以通过这个进行服务连接管理。

VIP是虚拟ip,实际上就是eth0:X,x为0~255的任意数字,你可以在一个网卡上面绑定多个别名。VIP当主服务器故障时,可以自动漂移到备用服务器。

注意区别辅助ip和别名ip,keepalived和heartbeat3都是用辅助ip的形式。

辅助ip设置:ip addr add 192.168.12.1 dev eth1

            ip addr del 192.168.12.1 dev eth1

别名ip设置:ifconfig eth0 192.168.12.1

            ifconfig eth0 down

  1. heartbeat配置文件:

    默认配置文件目录/etc/ha.d/,常用配置文件:

配置名称

作用

备注

ha.cf

参数配置文件

配置基本参数

authkey

认证文件

 

haresource

资源配置文件

启动ip脚本程序配置文件

  1. 实际案例:

    1. 修改主机名分别为ha1和ha2,分别加入host文件中:

      关闭iptables和selinux:

      时间同步:

       

主机名

ip地址

ha1

192.168.227.213

ha2

192.168.227.213

VIP=192.168.227.120

配置添加主机路由:

  1. 安装heartbeat3软件

    安装epel源:

    yum安装heartbeat3:

    查看heartbeat安装软件的路径:主要在/etc/ha.d下和

    拷贝三大配置文件到/etc/ha.d目录下:

  2. authkeys配置文件

        选择对应的1,2,3选项,去除前面的#即可。

        文件权限600。chmod 600 authkeys

  1. ha.cf文件较为详细,不做介绍。

    其中ucast为单播方式IP地址分别为对方的ip地址

  2. haresource

    主节点名    VIP地址        服务名

    此文件主备节点配置相同。

  3. 分别在两台服务器上安装httpd服务并启动

  1. 故障测试:

两台节点服务器同时开启heartbeat服务和httpd服务

因为heartbeat高可用是服务器级别的,所以停止一台服务器的heartbeat服务,发现备用节点启用,并且启用相关的httpd服务,代表高可用成功。

Heartbeat高可用解决方案的更多相关文章

  1. 常见的MYSQL高可用解决方案

    MySQL 是一种关系数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL 软件采用了双授权政策(本词条"授权政策& ...

  2. MySQL高可用解决方案(MySQL HA Solution)

    http://blog.sina.com.cn/s/blog_7e89c3f501012vtr.html 什么是高可用性?很多公司的服务都是24小时*365天不间断的.比如Call Center.这就 ...

  3. 浅谈mysql主从复制的高可用解决方案

    1.熟悉几个组件(部分摘自网络)1.1.drbd     —— DRBD(Distributed Replicated Block Device),DRBD号称是 "网络 RAID" ...

  4. (转)MySQL高可用解决方案

    MySQL高可用解决方案 原文:http://www.ywnds.com/?p=5565 有这么两个概念,数据库的可靠性和数据库的可用性,可靠性指的是数据可靠,而可用性指的是服务可用.但是不管是可靠性 ...

  5. Mycat高可用解决方案三(读写分离)

    Mycat高可用解决方案三(读写分离) 一.系统部署规划 名称 IP 主机名称 配置 192.168.199.112 mycat01 2核/2G Mysql主节点 192.168.199.110 my ...

  6. mysql高可用解决方案

    浅谈mysql主从复制的高可用解决方案 1.熟悉几个组件(部分摘自网络)1.1.drbd     —— DRBD(Distributed Replicated Block Device),DRBD号称 ...

  7. Haproxy+Heartbeat 高可用集群方案操作记录

    之前详细介绍了haproxy的基础知识点, 下面记录下Haproxy+Heartbeat高可用web集群方案实现过程, 以加深理解. 架构草图如下: 1) 基本环境准备 (centos6.9系统) 1 ...

  8. Mycat高可用解决方案二(主从复制)

    Mycat高可用解决方案二(主从复制) 系统部署规划 名称 IP 主机名称 用户名/密码 配置 mysql主节点 192.168.199.110 mysql-01 root/hadoop 2核/2G ...

  9. Mycat高可用解决方案一(mysql安装)

    Mycat高可用解决方案一(mysql安装) Mycat关键特性 关键特性 支持SQL92标准 支持MySQL.Oracle.DB2.SQL Server.PostgreSQL等DB的常见SQL语法 ...

随机推荐

  1. React翻译官网文档之JSX

    什么是JSX? 看下面的代码它被称为JSX,它既不是字符串也不是HTML,而是一种facebook公司对javascript语法的拓展.虽然写法很奇怪最终仍会会被编译为javascript代码 con ...

  2. Java在Debug的时候,有些变量能无限展开(循环了)?

    抛异常的时候,Java Debug 时,有些变量能无限展开,怎么做到的? 先来一个报错的例子: Exception in thread "main" java.lang.Stack ...

  3. Python标准模块--importlib

    作者:zhbzz2007 出处:http://www.cnblogs.com/zhbzz2007 欢迎转载,也请保留这段声明.谢谢! 1 模块简介 Python提供了importlib包作为标准库的一 ...

  4. linux入门之用户管理

    用户管理 添加用户 以root用户执行 adduser  或 useradd [new_account] -u  UID   -d 指定家目录 -g GID 指定一个基本组ID   -G指定一个附加组 ...

  5. SQL Server pivot 行转列遇到的问题

    前段时间开发系统时,有个功能是动态加载列,于是就使用了SQL Server自带的PIVOT函数进行行转列,开始用的非常溜,效果非常好.但是提交测试后问题来了,测试添加的列名中包含空格,然后就杯具了,功 ...

  6. Less与Sass

    less 1.变量    声明变量:@变量名:变量值 使用变量:@变量名 >>>Less中变量的类型 ①数字类:1 100px ②字符串:无引号字符串[red] 有引号字符串[&qu ...

  7. scp 命令快速使用讲解

    在 Linux 下使用 scp 命令 scp 是安全拷贝协议(Secure Copy Protocol)的缩写,和众多 Linux/Unix 使用者所熟知的拷贝(cp)命令一样.scp 的使用方式类似 ...

  8. 深入浅出理解yield

    索引 转载部分内容来自:http://www.jianshu.com/p/d09778f4e055 [彻底理解yield] http://blog.csdn.net/haskei/article/de ...

  9. IDEA下使用maven构建web项目(SpringMVC+Mybatis整合)

    需求背景:由于最近总是接到一些需求,需要配合前端团队快速建设移动端UI应用或web应用及后台业务逻辑支撑的需求,若每次都复用之前复杂业务应用的项目代码,总会携带很多暂时不会用到的功能或组件,这样的初始 ...

  10. java环境安装之不能安装exe文件

    经过多年,打算再学下java 从官网下载java8安装包,但因为我的计算机的cd-room被卸载掉了,安装是报错说cab文件损坏之类的错误. 从stackOverflow中找到一篇眼前一亮的解决办法. ...