Heartbeat高可用解决方案
Heartbeat高可用
Heartbeat作用:
通过heartbeat,可以将资源(ip以及程序服务等资源)从一台已经故障的计算机快速转移到另一台正常运转的机器上继续提供服务,一般称之为高可用服务。
heartbeat和keepalived有很多相同之处,但是也有区别。
官方网址:http://www.linux-ha.org/wiki/Main_Page
工作原理:
通过修改heartbeat的配置文件,可以指定一台heartbeat服务器作为主服务器,另一台自动成为热备服务器。在热备服务器上面配置heartbeat守护程序来监听来自主服务器的心跳信息。如果在规定时间内,无法监听到心跳信息,那么就启动故障转移,取得主服务器上的相关资源的所有权,接替主服务器继续不间断的提供服务,从而达到资源以及服务高可用的目的。
heartbeat还支持主主模式,及两台服务器互为主备。一般故障切换时间在5~20s之间。
另外:和keepalived的服务一样,heartbeat高可用是服务器级别的,不是服务级别的。
- 服务器宕机
- heartbeat软件故障
- 心跳连接线故障)
服务故障不会导致切换,可以通过服务宕机把heartbeat服务停掉。
心跳连接:
至少需要两台主机才可以实现高可用服务。
两台heartbeat服务之间通信:
- 穿行电缆,所谓的串口(首先,缺点是距离不能太远)
- 一根以太网电缆两网卡直连(常用方式)
- 以太网电缆,通过交换机等网络设备连接。(交换机可能出现问题等)
Heartbeat裂脑(splitbrain)
两台服务器在一定时间内,无法相互检测到对方心跳而各自启动故障转移功能,取得资源和服务的所有权,会导致同一个IP在两端同时启动服务,存在两个相同的VIP,造成冲突的严重问题。
- 裂脑的原因:
- 心跳链路故障,导致无法正常通信
- 开启了防火墙阻挡了心跳信息传输
- 心跳网卡地址等配置不正确
- 心跳方式,心跳广播冲突,软件bug
- 防止裂脑方案:
- 同时使用串行电缆和以太网电缆连接,同时使用两条心跳线
- 检测到裂脑时,强制关闭一个节点。(需要特殊设备支持,如stonish和fence)。相当于程序上的备节点发现心跳故障,发送关机指令到主节点。
- 做好监控预警
- 启用磁盘锁
- 仲裁机制(确定让那个节点接管服务)
- fence设备介绍
- IBM:RSA
- HP:ILO
- DELL:iDRAC
- 外部设备有APC生产的PowerSwitch
消息类型:
- 心跳消息(单播,广播或者多播):150字节的数据包
- 集群转换消息:ip-request,ip-request-rsp
- 重传消息:rexmit-request
IP地址接管和故障转移:
heartbeat通过ip地址接管和arp广播进行故障转移的。
ARP广播:在主服务器故障时,备用节点接管资源后,会立即强制更新所有客户端本地的arp表(即清楚客户端本地缓存的故障服务器的vip和mac地址的解析记录),确保客户端和新的主服务器的对话。
真是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
heartbeat配置文件:
默认配置文件目录/etc/ha.d/,常用配置文件:
|
配置名称 |
作用 |
备注 |
|
ha.cf |
参数配置文件 |
配置基本参数 |
|
authkey |
认证文件 |
|
|
haresource |
资源配置文件 |
启动ip脚本程序配置文件 |
实际案例:
- 修改主机名分别为ha1和ha2,分别加入host文件中:


关闭iptables和selinux:

时间同步:

|
主机名 |
ip地址 |
|
ha1 |
192.168.227.213 |
|
ha2 |
192.168.227.213 |
VIP=192.168.227.120
配置添加主机路由:


- 安装heartbeat3软件
安装epel源:

yum安装heartbeat3:

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


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

- authkeys配置文件

选择对应的1,2,3选项,去除前面的#即可。
文件权限600。chmod 600 authkeys
- ha.cf文件较为详细,不做介绍。

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

主节点名 VIP地址 服务名
此文件主备节点配置相同。
- 分别在两台服务器上安装httpd服务并启动


故障测试:
两台节点服务器同时开启heartbeat服务和httpd服务
因为heartbeat高可用是服务器级别的,所以停止一台服务器的heartbeat服务,发现备用节点启用,并且启用相关的httpd服务,代表高可用成功。

Heartbeat高可用解决方案的更多相关文章
- 常见的MYSQL高可用解决方案
MySQL 是一种关系数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性.MySQL 软件采用了双授权政策(本词条"授权政策& ...
- MySQL高可用解决方案(MySQL HA Solution)
http://blog.sina.com.cn/s/blog_7e89c3f501012vtr.html 什么是高可用性?很多公司的服务都是24小时*365天不间断的.比如Call Center.这就 ...
- 浅谈mysql主从复制的高可用解决方案
1.熟悉几个组件(部分摘自网络)1.1.drbd —— DRBD(Distributed Replicated Block Device),DRBD号称是 "网络 RAID" ...
- (转)MySQL高可用解决方案
MySQL高可用解决方案 原文:http://www.ywnds.com/?p=5565 有这么两个概念,数据库的可靠性和数据库的可用性,可靠性指的是数据可靠,而可用性指的是服务可用.但是不管是可靠性 ...
- Mycat高可用解决方案三(读写分离)
Mycat高可用解决方案三(读写分离) 一.系统部署规划 名称 IP 主机名称 配置 192.168.199.112 mycat01 2核/2G Mysql主节点 192.168.199.110 my ...
- mysql高可用解决方案
浅谈mysql主从复制的高可用解决方案 1.熟悉几个组件(部分摘自网络)1.1.drbd —— DRBD(Distributed Replicated Block Device),DRBD号称 ...
- Haproxy+Heartbeat 高可用集群方案操作记录
之前详细介绍了haproxy的基础知识点, 下面记录下Haproxy+Heartbeat高可用web集群方案实现过程, 以加深理解. 架构草图如下: 1) 基本环境准备 (centos6.9系统) 1 ...
- Mycat高可用解决方案二(主从复制)
Mycat高可用解决方案二(主从复制) 系统部署规划 名称 IP 主机名称 用户名/密码 配置 mysql主节点 192.168.199.110 mysql-01 root/hadoop 2核/2G ...
- Mycat高可用解决方案一(mysql安装)
Mycat高可用解决方案一(mysql安装) Mycat关键特性 关键特性 支持SQL92标准 支持MySQL.Oracle.DB2.SQL Server.PostgreSQL等DB的常见SQL语法 ...
随机推荐
- Hadoop之RPC简单使用(远程过程调用协议)
一.RPC概述 RPC是指远程过程调用,也就是说两台不同的服务器(不受操作系统限制),一个应用部署在Linux-A上,一个应用部署在Windows-B或Linux-B上,若A想要调用B上的某个方法me ...
- 如何选择适合自己的CMS建站系统
在互联网发展突飞猛进的今天,可谓”得市场者得天下”,而电商已成为占据市场速度最快.范围最广的手段,进而网站建设也逐渐引起商家重视,并深入到了企业和个体的发展战略之中. 如今企业建站已 ...
- AspNetCore - MVC实战系列(一)
本章开篇先简单介绍下最近两周自己利用业余时间做的一个图片收集网站,当然这个是靠用户自己上传来收集不是去抓某些个网站的图片,那样没意义,这里我取名为“爱留图”:该网站的简单介绍大家可以参考下上篇的内容爱 ...
- MySQL之改_update
MySQL增删改查之改_update UPDATE语句 进行数据记录的更新. 1.更新单个表中的值 语法: UPDATE [IGNORE] table_reference SET col_name1= ...
- undo表空间
undo表空间undo表空间的管理,主要包括创建.删除.修改.切换.其中需要注意的是不能在undo表空间创建数据库对象,还有就是只能是单文件或大文件表空间. 创建创建主要有两种方法,一种是在创建数据库 ...
- stl_container容器和std_algorithm算法相同的函数
八.算法和容器中存在的功能相同的函数: 8.1.array: 8.1.1.fill. 1.在array中:void fill (const value_type& val); 2.在algor ...
- CSS3弹性伸缩布局(下)——flex布局
新版本 新版本的flex布局模型是2012年9月提出的工作草案,这个草案是由W3C推出的最新语法,这个版本立志于指定标准,让新式的浏览器全面兼容,在未来的浏览器更新换代中实现统一. 目前几乎大部分的浏 ...
- 【转】10 条提升 Android 性能的建议
每个人都知道一个 App 的成功,与这个 App 的性能体验有着很密切的关系.但是如何让你的 App 拥有极致性能体验呢?在 DroidCon NYC 2015 的这个分享里,Boris Farber ...
- 【Java SE】如何用Java实现直接选择排序
摘要:直接选择排序属于选择排序的一种,但是它的排序算法比冒泡排序的速度要快一些,由于它的算法比较简单,所以也比较适合初学者学习掌握. 适宜人群:有一定Java SE基础,明白Java的数据类型,数组的 ...
- Python学习之路-Day1-Python基础
学习python的过程: 在茫茫的编程语言中我选择了python,因为感觉python很强大,能用到很多领域.我自己也学过一些编程语言,比如:C,java,php,html,css等.但是我感觉自己都 ...