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
(必须保证主节点和备份节点的时间同步,相差10秒内是正常的)