浅析 Heartbeat

简介:

 1、简介

Heartbeat是一个守护进程,为client的集群基础设施之间的成员及通信服务。它允许clients 掌握在其他server上的对等进程是否正在运行并可以和其他server进行通讯。
为方便使用,Heartbeat 守护进程被合并到集群资源管理器中(cluster resource manager CRM),CRM可以进行启动停止相应服务来提供高高的可用性。这个CRM就是Pacemaker,一个高扩展性,具有丰富管理功能,并且支持Heartbeat和Corosync 集群的通讯层。
   2、组件
   2.1通讯模块
   提供强认证,本地有序的广播
   支持以下类型的网络链路:
   1、在ipv4中的UDP单播
   2、ipv4中的中的udp广播
   3、ipv4中的UDP多播
   4、串行链接(相比网络来说,直接的串口链接是最安全的)

   Heartbeat 可以在半秒内检测node的故障。

   heartbeat layer的API可以提供以下级别的服务:

   1、向集群内的节点,发送和接受数据包
   2、可配置的查询
   3、可以得知正在接受packet的Node的查询和通知的连接信息
   4、基本组的成员服务

   2.2Cluster Consensus Membership

   CCM 维护集群成员的一致性
   2.3 Cluster Plumbing Library

   2.4 ipc 进程间通讯

   2.5 logging 守护进程

       将日志信息记录的系统日志中或者其他文件,或者两者都有。这个守护进程是不间断的,它只会摒弃那些落后太多的信息。
      
安装:
    3.1从源码安装:
       需要的软件包:heartbeat ,cluster-glue(包含Heartbeat的本地资源.LRM和  STONITH 插件,这个属于附属软件,必须先安装
    3.1.1从源码安装cluster-glue
       先决条件:

       C编译器(GCC),C的开发包

       flex scanner generator ,the bison parser compiler;

       net-snmp development headers(启用snmp相关功能)

       OpenIPMI development headers(启用IPMI相关功能)

       Python(只是一个语言接口,不需要头文件)

    # wget http://hg.linux-ha.org/glue/archive/glue-1.0.1.tar.bz2

    # tar -vxjf glue-1.0.1.tar.bz2
       安装:
       ./autogen.sh
       ./configure
       make

       make install

       安装 heartbeat,(前期都准备好的话,基本不需要其他依赖包)

       # wget http://hg.linux-ha.org/dev/archive/STABLE-3.0.4.tar.bz2

    # tar -vxjf STABLE-3.0.4.tar.bz2
    安装:
    $ ./bootstrap

    $ ./configure

    $ make

    $ sudo make install
初始化配置:
以下文件必须存在:
/etc/ha.d/ha.cf — 全局配置文件
/etc/ha.d/authkeys – 节点之间进行验证
ha.cf 简单的配置:
autojoin none
禁止cluster Node 自动发现其他Node,直接使用配置文件中已经列出的node list。加快cluster启动过程。
 
配置文件详解:
ha.cf
logfile /var/log/ha-log 日志存储位置
crm yes (是否开启crm 集群资源管理功能)
bcast eth1 指明心跳检测在eth1上以广播的形式进行。
Keepalive 2    心跳检测间隔时间S。
Warntime 10 心跳延迟的时间,超过后在日志中进行记录。
Deadtime 30    超过此时间,则认为对方 node 已经dead,如果是master的话,则进行角色切换
initdead 120 系统重启过程中,等待时间(至少为deadtime的两倍)
udpport 694 广播通信使用的端口

baud 19200   设置串行通信的波特率

serial   /dev/ttyS0 选择串行通信设备,

ucast eth0 ip     使用 eth0 udp 单播的形式进行心跳检测,

mcast eth0 ip 使用 eth0 多播的形式进行心跳检测

auto_failback on  当master恢复后,是否将服务自动切回。stonith baytech /etc/ha.d/conf/stonith.baytech  stonith的主 要作用是使出现问题的节点从集群环境中脱离,进而释放集群资源,避免两个节点争 用一个资源的情形发生。保证共享数据的安全性和完整性。

watchdog /dev/watchdog #该选项是可选配置,是通过Heartbeat来监控系统的运 行状态。使用该特性,需要在内核中载入"softdog"内核模块,用来生成实际的设备文件, 如果系统中没有这个内核模块,就需要指定此模块,重新编译内核。编译完成输入 "insmod softdog"加载该模块。然后输入"grep misc /proc/devices"(应为10), 输入"cat /proc/misc |grep watchdog"(应为130)。最后,生成设备文件: "mknod /dev/watchdog c 10 130" 。即可使用此功能。(在半秒内,能检测到系统故障)

node node1              #主节点主机名,"uname -n"查看。
node node2              #备用节点主机名。

ping  ip ping节点仅仅用来测试网络连接。ping节点选择的越好,HA集群就越强壮, 可以选择固定的路由器作为ping节点,但最好不要选择集群中的成员作为ping节点

 
资源文件: /etc/ha.d/haresources
文件格式: node-name network <resource-group>
Haresources 文件用于指定系统中的主节点、集群ip、子网掩码、广播地址以及启动的服务等集群资源。文件每一行可以包含一个或多个资源脚本名,资源之间空格隔开。参数之间使用::隔开,在两个ha节点上该文件必须完全一致。

Node-name 表示主节点的主机名,network 为 设定集群的ip地址、netmask 、device resource-group 用来指定需要Heartbeat 托管的服务,这样heartbeat会根据脚本的名称自动去/etc/init.d 或者 /etc/ha.d/resource.d 目录下找到相应的脚本。

举例:

Node 1 IPaddr::192.168.60.200/24/eth0/ Filesystem::/dev/sdb5::/web/data:ext3 httpd tomcat

Node 1 是HA集群的主节点,IPaddr 为heartbeat自带的一个执行脚本,它首先执行/etc/ha.d/resource.d/IPaddr 192.168.60.200/24 start 操作,虚拟出一虚拟ip(集群的ip地址)并指定使用的网络接口是eth0,接着 heartbeat将共享磁盘分区的挂接操作,即:mount –t  ext3 /dev/sdb5 /webdata 最后依次启动httpd 和tomcat 服务。
注意点: master和slave中资源文件haresources 完全一样。
 
认证文件 /etc/ha.d/authkeys

设定heartbeat的认证方式,三种认证,crc md5 sha1 不推荐 crc

Auth 1
1 md5





本文转自 位鹏飞 51CTO博客,原文链接:http://blog.51cto.com/weipengfei/1058341,如需转载请自行联系原作者
目录
相关文章
|
Linux 网络协议
|
监控 应用服务中间件 数据库
|
监控 Linux Shell
|
Linux Apache 开发工具
|
负载均衡 测试技术 C++

热门文章

最新文章