Linux-HA实战(1)— Heartbeat安装

接触Heartbeat主要是因为之前项目中使用了TFS,最近想给nameserver做HA,因为TFS官方用的Heartbeat,所以刚好了解下,参考了网络上很多内容,这里简单记录下。

内容

  • 环境和软件包
  • Heartbeat源码安装
  • Heartbeat yum安装
  • Heartbeat配置
  • 测试
  • FAQ
  • 参考链接

环境和软件包

我的机器是两台64位的CentOS,其它Linux机器应该差不多可以参考官方的说明。

从Heartbeat 2.1.4之后原先的项目被拆分成了三个子项目:cluster-glueresource-agentsheartbeat,导致了配置更加复杂。下面列出了我使用的各个软件包版本并提供了下载(后面具体安装提供了官方的下载地址,这里自己做个备份)。

  • cluster-glue 1.0.9
  • resource-agents 3.9.2
  • heartbeat 3.0.5

Heartbeat源码安装

先最小化系统安装:gcc编译环境等。

# yum install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-develbzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel make wget docbook-dtds docbook-style-xsl

添加 Haclient 组和 Hacluster 账户。这个用户主要用来配置respawn的。

# groupadd haclient
# useradd -g haclient hacluster -M -s /sbin/nologin

安装libaio

cluster-glue依赖的库。libaio是Linux下的一个异步非阻塞接口,它提供了以异步非阻塞方式来读写文件的方式,读写效率比较高。

# yum install libaio-devel

安装cluster-glue

glue(胶水的意思)是用来粘合Heartbeat、Pacemake以及Resource Agent的一系列类库、工具的集合。

# wget http://hg.linux-ha.org/glue/archive/glue-1.0.9.tar.bz2
# tar jxvf glue-1.0.9.tar.bz2
# cd Reusable-Cluster-Components-glue--glue-1.0.9/
# ./autogen.sh
# ./configure --prefix=/usr/local/heartbeat --sysconfdir=/etc/heartbeat libdir=/usr/local/heartbeat/lib64 LIBS='/lib64/libuuid.so.1'
# make & make install l

安装Resource Agents

resource-agents为集群资源的访问提供了一系列标准的接口。

# wget https://codeload.github.com/ClusterLabs/resource-agents/zip/v3.9.2
# unzip v3.9.2
# cd resource-agents-3.9.2/
# ./autogen.sh
# ./configure --prefix=/usr/local/heartbeat --sysconfdir=/etc/heartbeat libdir=/usr/local/heartbeat/lib64 CFLAGS=-I/usr/local/heartbeat/include LDFLAGS=-L/usr/local/heartbeat/lib64 LIBS='/lib64/libuuid.so.1'
//建立一个软连接,避免编译时找不到所需要的包
# ln -s /usr/local/heartbeat/lib64/* /lib64/

注意:LDFLAGS的空格,否则configure时不会报错但make时报错。

安装Heartbeat

# wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/7e3a82377fa8.tar.bz2
# tar jxvf 7e3a82377fa8.tar.bz2
# cd Heartbeat-3-0-7e3a82377fa8/
# ./bootstrap
# ./configure --prefix=/usr/local/heartbeat --sysconfdir=/etc/heartbeat CFLAGS=-I/usr/local/heartbeat/include  LDFLAGS=-L/usr/local/heartbeat/lib64 LIBS='/lib64/libuuid.so.1'
# vi  /usr/local/heartbeat/include/heartbeat/glue_config.h// 删除 glue_config.h 最后一行定义的配置文件路径,避免编译时产生的路径重复定义错误,Shift+g 跳到末行,dd删除
# make && make install

配置文件修改

将配置文件复制到 /etc/heartbeat/ 下,并使用sed 修改路径

# cp doc/ha.cf /etc/heartbeat/ha.d/
# cp doc/haresources /etc/heartbeat/ha.d/
# cp doc/authkeys /etc/heartbeat/ha.d/
# chkconfig --add heartbeat
# chkconfig heartbeat on
# chmod 600 /etc/heartbeat/ha.d/authkeys
# sed -i 's#/usr/lib/ocf#/usr/local/heartbeat/usr/lib/ocf#g' /etc/heartbeat/ha.d/shellfuncs
# sed -i 's#/usr/lib/ocf#/usr/local/heartbeat/usr/lib/ocf#g' /etc/heartbeat/ha.d/resource.d/hto-mapfuncs
# sed -i 's#/usr/lib/ocf#/usr/local/heartbeat/usr/lib/ocf#g' /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/ocf-shellfuncs

建立Resource-Agent 的脚本软连接,避免Heartbeat 找不到路径而无法工作

# ln -s /usr/local/heartbeat /usr/lib/ocf

Heartbeat yum安装

推荐通过yum来安装Heartbeat,因为无论是tfs官方还是网上一些参考资料都是采用这种方式,这样会少很多路径配置方面的问题。但CentOS默认情况通过yum install heartbeat好像找不到相应的包,需要先下载并安装epel包:

# wget http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm
# rpm -ivh epel-release-6-8.noarch.rpm
# yum install heartbeat*

Heartbeat配置

Heartbeat的配置主要涉及到ha.cf、haresources、authkeys这三个文件。其中ha.cf是主配置文件,haresource用来配置要让Heartbeat托管的服务,authkey是用来指定Heartbeat的认证方式,具体参考:http://ixdba.blog.51cto.com/2895551/548625

需要注意几点:

  • authkeys的配置方式:

# auth 1      //认证序号1
# 1 md5 password  //序号1 采用MD5 后面是密钥

auth 后面填写序号,可任意填写,但第二行开头必须为序号名,然后为验证方式,支持三种( crc md5 sha1 )方式验证,最后面是自定义密钥。

  • 需要保证authkeys有相应的读写权限:
# chmod 600 /etc/heartbeat/ha.d/authkeys

  • 对于HA系统来说主从节点的机器时间同步时很重要的。

  • 服务要想被Heartbeat托管则必须写成可以通过start/stop来启动和关闭的脚本,然后放在/etc/init.d或者Heartbeat自己的ha.d/resource.d目录中。

  • HA的备份节点也需要安装Heartbeat,可以同错scp命令来复制配置文件:

# scp –r node1:/etc/heartbeat/ha.d/*  /etc/heartbeat/ha.d/
//node1为主节点的主机名(uname -n)

测试

  • 创建测试脚本 在Heartbeat的ha.d/resource.d下如下建立一个脚本:
# vi /etc/heartbeat/ha.d/resource.d/test1

输入如下内容:

#!/bin/bash
logger $0 called with $1
case "$1" in
start)
# Start commands go here
echo "start!!!";
;;
stop)
# Stop commands go herer
echo "stop!!!";
;;
status)
# Status commands go here
echo "status!!!";
;;
esac 

增加相应的权限:

# chmod 755 test1

可以这样执行该脚本:

# ./test1 start

  • 配置haresource文件
# vi /etc/heartbeat/ha.d/haresources
# 输入下面的内容
# ydhl-test1 test1

其中ydhl-test1为uname –n输出的结果。

  • 配置authkeys,参见上段内容。

  • 配置ha.cf

debugfile /var/log/ha-debug
# 用于记录heartbeat的调试信息
logfile /var/log/ha-log
# 用于记录heartbeat的日志信息
logfacility local0
keepalive 2
# 设置心跳间隔
watchdog /dev/watchdog
deadtime 30
# 在30秒后宣布节点死亡
warntime 10
# 在日志中发出“late heartbeat“警告之前等待的时间,单位为秒
initdead 120# 网络启动时间
udpport 694
# 广播/单播通讯使用的udp端口
#baud 19200
#serial /dev/ttyS0
# 使用串口heartbeat
bcast eth0
# 使用网卡eth0发送心跳检测
auto_failback on
# 当主节点从故障中恢复时,将自动切换到主节点
watchdog /dev/watchdog
# 该指令是用于设置看门狗定时器,如果节点一分钟内都没有心跳,那么节点将重新启动
node HA-01
node HA-02
# 集群中机器的主机名,与“uname –n”的输出相同。
ping 192.168.0.254
# ping 网关或路由器来检测链路正常
respawn hacluster /usr/local/heartbeat/lib64/heartbeat/ipfail
# respawn调用 ipfail 来主动进行切换
apiauth ipfail gid=haclient uid=hacluster
# 设置启动ipfail的用户和组

  • 备份节点配置,参见上段内容。

  • 同步主从节点系统时间:可以通过ntpdate来同步

  • 启动Heartbeat

在启动之前用下面的命令在主从节点上面测试一下配置是否正确,ReourceManager在Heartbeat安装目录的share/heartbeat目录下。

# ./ResourceManager listkeys `/bin/uname -n`
测试通过后启动主节点和从节点Heartbeat:
# service heartbeat start

通过查看 /var/log/messages可以看到Hearbeat的很多信息:

可以看到我们前面的测试脚本test1输出的信息。

当通过service heartbeat stop命令停止一个节点的Heartbeat的时候,从日志中可以看到另外一个节点已经感知到了:

重启后可以看到:

FAQ

Q:为什么在/var/log/messages里看到很多下面这样的警告?

A :这种情况是因为部署Heartbeat是直接从其它机器上拷贝过来导致的。直接拷过来会导致两个节点上的uuid冲突,解决方法是强制某个Hearbeat重新生成uuid,先停止Heatbeat然后删除hb_uuid这个文件(可以通过find命令查找)重启就好了:

# rm –rf /usr/local/heartbeat/var/lib/heartbeat/hb_uuid

Q:什么是“脑裂”问题?

A :采用keepalive等心跳软件,需要注意“脑裂”问题: "在“双机热备”高可用(HA)系统中,当联系2个节点的“心跳线”断开时,本来为一整体、动作协调的HA系统,就分裂成为2个独立的个体。由于相互失去了联系,都以为是对方出了故障,2个节点上的HA软件像“裂脑人”一样,“本能”地争抢“共享资源”、争起“应用服务”,就会发生严重后果:或者共享资源被瓜分、2边“服务”都起不来了;或者2边“服务”都起来了,但同时读写“共享存储”,导致数据损坏(常见如数据库轮询着的联机日志出错)。

Q:启动heartbaet的时候可能会报很多库找不到的错误:

A:可以先通过find命令查找,然后通过建立软连接就可以解决了:

# ln -s /usr/libexec/pacemaker/* /usr/local/heartbeat/lib64/heartbeat/

Heartbeat安装相关推荐

  1. 高可用集群heartbeat安装配置(一)

    一.HA高可 FailOver:故障转移 包含HA Resource IP, service,STONITH FailBack故障转移原点 Faiover domain:故障转移域 资源粘性资源更倾向 ...

  2. Heartbeat安装与配置

    1.环境描述 服务器A(主) 192.85.1.175 服务器B(从) 192.85.1.176 Mysql版本:5.1.61 系统版本:System OS:ubuntu 10.10 X86 2.安装 ...

  3. Heartbeat 安装教程

    准备 两台虚拟机 10.254.124.227 10.254.124.228 虚拟 IP 10.254.124.22 关闭防火墙 service iptables stop 配置网络和主机名 分别在两 ...

  4. Heartbeat V2.x双机热备安装

      Heartbeat V2.x双机热备安装 1       简述 1.1   文档目的 本文档主要介绍linux-HA项目的新版本v2的安装和配置及相关算法,为以后架构linux-HA增加系统的可用 ...

  5. centos6.2+heartbeat+mysql5.5+drbd84高可用安装

    CentOS6.2 64位 Mysql版本mysql-5.5.35.tar.gz,编译安装 drbd yum安装 drbd kmod-drbd84 heartbeat yum安装 heartbeat- ...

  6. CentOS6安装NFS HA架构部署(NFS + Heartbeat + DRBD)

    因业务需求,使用NFS共享服务,为了避免硬件故障导致的服务不可用,使用NFS + Heartbeat + DRBD架构实现NFS高可用.(我当时在测试环境操作的/dev/sdb 有时候写成了/dev/ ...

  7. mysql+heartbeat+drbd安装

    环境: 系统           IP地址            主机名             软件包列表 centos6.5  192.168.200.101      server1       ...

  8. HA-heartbeat高可用双击热备安装配置详解

    前期准备工作 *两台节点必须是双网卡,一个口外网,一个口内网心跳 改网卡: 三块网卡,设置一个外网网卡的网关为外网地址的网关 心跳网卡,设置外网网卡的IP为网关 内网网卡,设置外网网卡的IP为网关   ...

  9. heartbeat自带的断网切换功能-ipfail

    一.我们一直以来用的heartbeat 大家用heartbeat做双机热备已经都做过很多次很熟悉了,而且配置起来其实也可以说是比较容易的.但是,说实话我们双机配置起来以后能实现的功能其实比较简单,只有 ...

最新文章

  1. docker mysql 无权限_Docker 中级篇
  2. Py之re:re正则表达式库的简介、常用函数、经典案例之详细攻略
  3. C++ Boost在Windows和Linux下的编译安装
  4. mybatis中mapUnderscoreToCamelCase自动驼峰命名转换
  5. java比较equlse_java基础知识要点
  6. C++ 函数参数入栈方式与调用约定
  7. 【人脸识别】基于模板匹配算法实现人脸识别matlab源码
  8. 布客·ApacheCN 编程/后端/大数据/人工智能学习资源 2022.2
  9. Win10远程控制别人电脑的操作方法
  10. x86系统引导(1)
  11. 阿里云服务器购买后如何做好安全防护?
  12. KMPlayer如何设置H.264硬解
  13. firefly 3399 开发板笔记
  14. va_start用法
  15. cdm 图片 转_从CDP到CDM的转变
  16. python生成微信个性签名的词云图
  17. 云商之softlayer与saltstack
  18. python简单绘图(根据表格绘制曲线图)
  19. Java进阶:基于TCP的网络实时聊天室(socket通信案例)
  20. [译]如何理解你的肠道微生物检测报告和数据

热门文章

  1. android6.0最新补丁,谷歌发布安卓补丁修复漏洞 支持6.0之后所有版本
  2. 【码云周刊第 30 期】打造场景化的图片特效处理工具
  3. LogStash 简介
  4. 追梦App系列博客——理念篇
  5. 统一修改word中的英文字体
  6. H5接收原声app传参
  7. 调用地区天气预报代码
  8. vue服务端渲染ssr
  9. java线程基础知识整理
  10. 短视频的内容策划有多重要?不仅是开端,还是灵魂