HeartBeat单独提供高可用服务

本文目录:
1.简介
2.安装heartbeat
 2.1 编译安装Heartbeat
3.heartbeat相关配置文件
 3.1 配置文件ha.cf
 3.2 配置文件authkeys
 3.3 配置文件haresources
4.示例:heartbeat为httpd提供高可用服务

1.简介
heartbeat是人所众知高可用软件。但是在以前,heartbeat是Linux-ha项目里一大堆提供高可用组件的集合体:

Messaging Layer(消息传递层)
local resource manager(LRM,本地资源管理,cluster glue的一个功能)
stonith(爆头,cluster glue的一个功能)
Resource Agent(RA,资源代理)、
cluster resource manager(CRM,集群资源管理器,现在独立出去的pacemaker)。
现在,由于linux-ha将很多这些组件都分离为一个个单独的软件,heartbeat已经只代表消息层(取代它的是corosync)。而且linux-ha项目团队已经不再维护heartbeat,目前能从官方获取到的最新版本是Heartbeat 3.0.6,在epel中可获取到"Heartbeat 3.0.4"版本的rpm包。

虽然Heartbeat只代表高可用集群的消息传递层,但它结合cluster glue和resource agent也可以提供高可用服务,这正是本文的内容。相比于corosync+pacemaker,heartbeat要轻量级的多,配置起来也简单许多。相应的,它的功能和完整性要简陋的多,它只支持两个heartbeat节点(结合pacemaker可多于两节点),且加载资源的速度比较慢。

当然,既然heartbeat是消息传递层,它也能配合pacemaker,但是不建议如此。而且这样搭配时,各个组件的版本要求很严格。

2.安装heartbeat
如果使用yum安装,可以配置epel源。注意,在CentOS7的epel上,已经没有heartbeat了。

release=`grep -o "[0-9]" /etc/RedHat-release | head -1`
cat <<eof>/etc/yum.repos.d/epel.repo
[epel]
name=epelrepo
baseurl=https://mirrors.aliyun.com/epel/${release}Server/\$basearch
gpgcheck=0
enable=1
eof

yum -y install heartbeat
可以看到,安装heartbeat的时候,同时还会安装cluster-glue和resource-agent。

HeartBeat单独提供高可用服务

然后提供配置文件。

cp -a /usr/share/doc/heartbeat-3.0.4/{ha.cf,haresources,authkeys} /etc/ha.d/
chmod 600 /etc/ha.d/authkeys

2.1 编译安装heartbeat
不建议编译安装heartbeat,heartbeat这个程序本身附带的很多脚本在路径指定上很混乱,安装后很可能需要到处修改脚本中关于路径的变量。

如果要编译安装heartbeat,则必须先安装cluster-glue和resource-agent,建议这3个程序安装在同一路径下。

(1).安装依赖包。

yum -y install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-devel bzip2 bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel asciidoc
创建好所需组和所有者,在编译cluster-glue会设置一些文件的属组和属主分别为haclient、hacluster,因此名称必须为这两个。

groupadd -g 65 haclient
useradd -g 65 -u 17 hacluster
(2).编译cluster-glue。

tar xf Cluster\ Glue\ 1.0.12.bz2
cd Reusable-Cluster-Components-glue--0a7add1d9996/
./autogen.sh
./configure --prefix=/usr/local/heartbeat LIBS=/lib64/libuuid.so.1
make
make install
如果make时有如下错误:

./.libs/libplumb.so: undefined reference to `uuid_parse'
./.libs/libplumb.so: undefined reference to `uuid_generate'
./.libs/libplumb.so: undefined reference to `uuid_copy'
./.libs/libplumb.so: undefined reference to `uuid_is_null'
./.libs/libplumb.so: undefined reference to `uuid_unparse'
./.libs/libplumb.so: undefined reference to `uuid_clear'
./.libs/libplumb.so: undefined reference to `uuid_compare'
collect2: ld returned 1 exit status
gmake[2]: *** [ipctest] Error 1
gmake[2]: Leaving directory `/root/Reusable-Cluster-Components-glue--0a7add1d9996/lib/clplumbing'
gmake[1]: *** [all-recursive] Error 1
gmake[1]: Leaving directory `/root/Reusable-Cluster-Components-glue--0a7add1d9996/lib'
make: *** [all-recursive] Error 1
解决方法:在configure中使用LIBS指向正确的库文件,64位使用/lib64,32位使用/lib

./configure LIBS=/lib64/libuuid.so.1
如果是如下错误:

gmake[2]: a2x: Command not found
解决方法:yum install asciidoc

可以看下cluster-glue提供了哪些命令。

[root@xuexi ~]# ls /usr/local/heartbeat/sbin/
cibsecret  ha_logger  hb_report  lrmadmin    meatclient  stonith
从此不难看出,cluster-glue是整个ha的核心组件,除了crm、messageing layer、resource agent,所有的功能包括最基本的功能都是它提供的。例如,日志记录,stonith,lrm等。

(3).编译resource-agent。

tar xf  resource-agents-3.9.6.tar.gz
cd resource-agents-3.9.6
./autogen.sh
./configure --prefix=/usr/local/heartbeat
make
make install
(4).编译heartbeat。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/79227f6773124b6aa3e0ab8d424485b0.html