HA集群之Heartbeat浅析及heartbeat+haresource

一、Heartbeat

Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。

heartbeat (Linux-HA)的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务。

二、Heartbeat的版本介绍

Heartbeat v1.x和Heartbeat v2.x版本的组成结构十分简单,所有模块都集中在heartbeat中。

1.Heartbeat v1.x与v2.x的组件

  • HeartBeat:节点间通信检测模块
  • Ha-Logd:集群事件日志服务
  • CCM(Consensus Cluster Membership):集群成员一致性管理模块
  • LRM (Local Resource Manager):本地资源管理模块
  • Stonith Daemon: 使出现问题的节点从集群环境中脱离或重启
  • CRM(Cluster resource management):集群资源管理模块
  • Cluster policy engine: 集群策略引擎
  • Cluster transition engine:集群转移引擎(也叫策略执行引擎)

Heartbeat v1.x与Heartbeat v2.x区别

在Heartbeat v1.x中的集群资源管理器(CRM)是haresource。

在Heartbeat v2.x中增加了一个功能更强大名为crm的新的集群资源管理器(CRM),自己可以做为一个独立进程来运行,它在各节点上运行一个叫crmd的进程,此进程监听在端口为5560的套接字上,所以服务器端叫crmd,客户端是个命令行接口叫crm(或crm shell),通过这个命令行接口就可以跟服务器端的crmd通信;heartbeat也有图形化界面工具heartbeat-GUI。

Heartbeat v2.x中为了兼容v1.x保留了haresource。crm管理方式有两种,即:基于命令行crmsh,基于图形界面的hb_gui。

2.Heartbeat v3.x的组件

Heartbeat 3与2.x 的最大差别在于,3 按模块把的原来2.x 拆分为多个子项目,但是HA实现原理与Heartbeat2.x基本相同,配置也基本一致,并且提供了一个cluster-glue的组件,专用于Local Resource Manager 的管理。即heartbeat + cluster-glue + resouce-agent 三部分:

  • Heartbeat:将原来的消息通信层(HeartBeat+CCM)独立为heartbeat项目,新的heartbeat只负责维护集群各节点的信息以及它们之前通信。
  • Cluster Glue:相当于一个中间层,它用来将heartbeat(HeartBeat+CCM)和CRM关联起来,主要包含2个部分,即为LRM和STONITH。
  • Resource Agent:用来操控服务务启停,监控服务状态的脚本集合,这些脚本将被LRM调用从而实现各种资源启动、停止、监控等等。

通过这三部分已可构成一套完整的HA集群系统。但是,这还不够,因为没有管理工具。而CRM工具crm被进一步拆分,由另一独立项目Pacemaker 负责。Pacemaker 提供了多种用户接口:

  • crm shell 基于字符的管理方式;
  • 一个使用Ajax Web配置方式的web konsole 窗口;
  • hb_gui ,即heartbeat gui 图形配置工具,这也是原来2.x的默认GUI 配置工具;
  • DRBD-MC,一个基于Java的配置管理工具。

需要说明的是,Pacemaker 支持的Cluster Stacks中,除了Heartbeat,还支持OpenAIS(其中就有corosync)。不过,OpenAIS 的内容已超出本文的范围,有待以后再做介绍。

三、Heartbeat v2.x 基于haresource实现高可用

1.配置主机名

节点名称很关键,集群每个节的名称都得能互相解析。/etc/hosts中的主机名配置结果必须跟”uname -n”的解析的结果一致。

node1/node2都添加:

node1示例:
# vim /etc/hosts
    172.16.1.11 node1.hoo.com node1
    172.16.1.12 node2.hoo.com node2
# ifconfig eth0 172.16.1.11  up
# hostname node1.hoo.com
# uname -n
# vim /etc/sysconfig/network  //重启才生效,source也不生效
    hostname=node1.hoo.com

2.时间同步

node1,node2都配置

# crontab -e
  */5 * * * * /usr/sbin/ntpdate  172.16.0.1 &> /dev/null

3.配置node之间SSH互信

node1:
#ssh-keygen  -t rsa -f ~/.ssh/id_rsa  -P ‘‘
# ssh-copy-id -i .ssh/id_rsa.pub [email protected]
node1:
#ssh-keygen  -t rsa -f ~/.ssh/id_rsa  -P ‘‘
# ssh-copy-id -i .ssh/id_rsa.pub [email protected]
node1:测试
#  ssh node2.hoo.com ‘date’;date

4.安装httpd

node1,nod

# yum install httpd -y
# ssh node2 "yum install httpd -y "
# ss -tunl | grep 80
# ssh node2 "ss -tunl | grep 80"

5.安装heartbeat v2.x

node1,node2都安装

包:
    heartbeat-2.1.4-12.el6.x86_64.rpm
    heartbeat-pils-2.1.4-12.el6.x86_64.rpm
    heartbeat-stonith-2.1.4-12.el6.x86_64.rpm
依赖:
    perl-TimeDate
    net-snmp-libs
    libnet PyXML
安装:
# yum -y perl-TimeDate net-snmp-libs libnet PyXML
# rpm -ivh heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm  heartbeat-2.1.4-12.el6.x86_64.rpm

6.配置Heartbeat

最好按:1、信息层; 2、资源管理器;3、资源代理  配置。

集群中心跳信息传递,基于组播地址传递的,为防止随便一台主机组播地址装了heartbeat也连接到集群,各节点信息传递是配置认证。认证基于HMAC(消息认证码),使用单向加密算动法实现,单向加密一般有三类:crc(循环冗余校验码)、md5(信息摘要算法)、sha1。

heartbeat基于udp协议,监听在694端口上。

a).默认配置目录/etc/ha.d/下没有配置文件,移动配置模板文件至配置目录下

# cp /usr/share/doc/heartbeat-2.1.4/{ha.cf,authkeys,haresources} /etc/ha.d/
    // authkeys 节点之间认证key文件
    // ha.cf  heartbeat的主配置文件
    // haresources 集群资源管理配置文件(在heartbeat所有版本中都是支持haresources来配置集群中的资源)

b).配置authkeys文件

# openssl rand -hex 8   //生成16位随机数
    ee869d3d86e1556f
# vim /etc/ha.d/authkeys
    #auth 1
    #1 crc
    #2 sha1 HI!
    #3 md5 Hello!
    auth 2       //选择使用sha1加密
    2 sha1 ee869d3d86e1556f
# chmod 600 authkeys
                //修改密钥文件的权限为600,否则无法启动服务

c).配置主配置文件ha.cf

# vim /etc/ha.d/ha.cf    启用以下参数及功能
logfile /var/log/ha-log
                  //日志文件,正常日志信息记录到哪去的
keepalive 1000ms
                  //每隔多长时间发送一次心跳信息的,单位是秒,毫秒用ms
deadtime 8
                  //隔多长时间探测到对方不在线就kill掉的时间间隔
warntime 10
                  //警告时间
udpport 694
mcast eth0 225.16.1.1 694 1 0
                  //定义组播地址
auto_failback on
                 //开启故障转回功能
node    node1.hoo.com   //定义两个节点
node    node2.hoo.com
crm on
                //启用crm功能
ping 172.16.0.1
                //ping节点
compression     bz2
                //压缩格式
compression_threshold 2
               //表示小于2K时不压缩传输

d).配置资源管理文件haresource

# vim haresources
    node1.hoo.com 172.16.249.188 httpd
或:node1.hoo.com IPaddr::192.168.249.188/24/eth0 httpd
# scp -p authkeys haresources ha.cf node2.hoo.com:/etc/ha.d/

e).启动服务

node1,node2

# service heartbeat start
# ssh node2 "service heartbeat start"

7.测试

浏览器访问正常

查看node1上的IP
[[email protected] ha.d]# ifconfig
       //显示 eth0:0  172.16.1.11  node1为主节点
模拟node1故障
[[email protected] ha.d]# service heartbeat stop  //将node1中的heartbeat关闭
查看node2上的IP
[[email protected] ~]# ifconfig
        // 查看node2的IP,可以看到立即转移到node2上

补充

httpd是绑定在heartbeat服务上面的 就是启动heartbeat也就启动了httpd,如果node1就httpd进程停止了,heartbeat没有停止,整个系统就访问不了。

Heartbeat仅仅是个HA软件,它仅能完成心跳监控和资源接管,不会监视它控制的资源或应用程序,要监控资源和应用程序是否运行正常, 得使用第三方的插件或者自己按需求写监控脚本脚本。

HA集群之Heartbeat浅析及heartbeat+haresource

时间: 2024-08-03 21:38:56

HA集群之Heartbeat浅析及heartbeat+haresource的相关文章

HA集群之DRBD浅析及实现DRBD高可用

一.DRBD概述 DRBD (Distributed Replicated Block Device) 是 Linux 平台上的分散式储存系统. 由内核模组.用户空间工具组成,通常用于高可用性(high availability, HA)集群.其实现方式是通过网络在服务器之间的对块设备(硬盘,分区,逻辑卷等)进行镜像.你可以把它看作是一种网络RAID1. DRBD的工作模式如下图: DRBD工作的位置在文件系统的buffer cache和磁盘调度器之间,数据进入Buffer Cache后,DRB

HA集群之Heartbeat v1 高可用安装讲解

什么是高可用集群        高可用集群是指一组通过硬件和软件连接起来的独立计算机,它们在用户面前表现为一个单一系统,在这样的一组计算机系统内部的一个或者多个节点停止工作,服务会从故障节点切换到正常工作的节点上运行,不会引起服务中断.从这个定义可以看出,集群必须检测节点和服务何时失效,何时恢复为可用.这个任务通常由一组被称为"心跳"的代码完成.在Linux-HA里这个功能由一个叫做heartbeat的程序完成. Heartbeat简介        Heartbeat是Linux-H

HA集群之CoroSync+Pacemaker浅析及实现

一.CoroSync corosync最初只是用来演示OpenAIS集群框架接口规范的一个应用,可以说corosync是OpenAIS的一部分,然而后面的发展超越了官方最初的设想,越来越多的厂商尝试使用corosync作为集群解决方案.如Redhat的RHCS集群套件就是基于corosync实现. corosync只提供了message layer(即实现HeartBeat + CCM),而没有直接提供CRM,一般使用Pacemaker进行资源管理. OpenAIS是基于SA Forum 标准的

HA集群之DRBD实现MySQL高可用

一.前言 本篇博文只是实现Corosync + Pacemaker + DRBD + MySQL,实现MySQL的高可用.更多的基础知识在前几篇博文中已有涉猎,故更多的理论细节将不再此篇中详述. 若想了解高可用基础知识,请参考:http://hoolee.blog.51cto.com/7934938/1406951 若想了解Corosync + Pacemaker,请参考:http://hoolee.blog.51cto.com/7934938/1409395 若想了解DRBD,请参考:http

架构之高可用性(HA)集群(Keepalived)

Keepalived简介 Keepalived是Linux下一个轻量级别的高可用解决方案.高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭义的来讲就是之主机的冗余和接管, 它与HeartBeat RoseHA 实现相同类似的功能,都可以实现服务或者网络的高可用,但是又有差别,HeartBeat是一个专业的.功能完善的高可用软件,它提供了HA 软件所需的基本功能,比如:心跳检测.资源接管,检测集群中的服务,在集群节点转移共享IP地址的所

HA集群配置

HA(high available)即高可用,又被叫做双机热备,用于关键性业务.简单理解就是,有两台机器A 和B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至B机器继续提供服务.常用实现高可用的开源软件有heartbeat和keepalived,其中keepalived有负载均衡的功能. 下面我们使用heartbeat来做HA集群,并且把nginx服务作为HA对应的服务. 一.准备工作  两个机器操作系统都是centos6.5,网卡eth0 ip分别为: master  192.1

Linux系统架构(LB—HA集群)-HA集群配置

HA集群配置 准备两台设备,分别为主从 主: [[email protected] ~]# ifconfig eth0       inet addr:192.168.137.21 从: [[email protected] ~]# ifconfig eth0      inet addr:192.168.137.23 先开始配置 主上: [[email protected] ~]# hostname master [[email protected] ~]# iptables -F [[ema

corosync+pacemaker实现高可用(HA)集群

corosync+pacemaker实现高可用(HA)集群(一) ????重要概念 在准备部署HA集群前,需要对其涉及的大量的概念有一个初步的了解,这样在实际部署配置时,才不至于不知所云 资源.服务与主机(又称节点)的关系: 资源包括vip,httpd,filesystem等: 可整合多个资源形成一个服务: 服务必运行在某个主机上,主机上也可不运行服务(此为空闲主机): 服务里的所有资源应该同时运行在同一个节点上,实现方式有2种: 资源组: 排列约束 资源类型 primitive(或native

高可用(HA)集群原理概述

一.高可用集群(High Availability Cluster) 集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源.每一个单个的计算机系统都叫集群节点(node).随着业务的增长,集群通过添加新的节点,满足资源的高可扩展性. 计算机硬件和软件易错性不可避免,这样在节点上的服务会不可避免的中断.高可用集群的出现是为保证即使节点失效,而服务能不中断. 高可用集群在一组计算机中,采用主备模式,主节点提供服务,备节点等待:一旦,主节点失效,备节点无需人工的无缝取代主节点提