Linux-HA实战(1)— Heartbeat安装
接触Heartbeat主要是因为之前项目中使用了TFS,最近想给nameserver做HA,因为TFS官方用的Heartbeat,所以刚好了解下,参考了网络上很多内容,这里简单记录下。
内容
- 环境和软件包
- Heartbeat源码安装
- Heartbeat yum安装
- Heartbeat配置
- 测试
- FAQ
- 参考链接
环境和软件包
我的机器是两台64位的CentOS,其它Linux机器应该差不多可以参考官方的说明。
从Heartbeat 2.1.4之后原先的项目被拆分成了三个子项目:cluster-glue
、resource-agents
和heartbeat
,导致了配置更加复杂。下面列出了我使用的各个软件包版本并提供了下载(后面具体安装提供了官方的下载地址,这里自己做个备份)。
- 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/
参考链接
[1]高可用方案之脑裂问题探讨
Linux-HA实战(1)— Heartbeat安装相关推荐
- ThinkPad物理机安装Linux系统实战企业级项目之CentOS安装
ThinkPad物理机安装Linux系统实战企业级项目之CentOS安装 系统安装 下载CentOS系统制作系统U盘 笔记本电源设置 网络设置 WiFi类型查看验证设置联网 设置固定IP 安装MySQ ...
- VMware HA实战攻略之四VMware HA安装及配置
[IT168 专稿]在前面三篇文章中(点击1.2.3),不但讲述了如何准备适合虚拟化的硬件.软件,以及如何使用现有的硬件.软件搭建一套实验环境,还讲述了通过VC Server如何添加主机和ISCSI存 ...
- 「docker实战篇」python的docker爬虫技术-在linux下mitmproxy介绍和安装(四)
原创文章,欢迎转载.转载请注明:转载自IT人故事会,谢谢! 原文链接地址:「docker实战篇」python的docker爬虫技术-在linux下mitmproxy介绍和安装(四) 上次说了fiddl ...
- biee 12c linux 安装,oracle biee 12c linux ha 集群安装配置手册.pdf
oracle biee 12c linux ha 集群安装配置手册 Oracle BIEE 12c Linux 系统集群安装配置文档 仇 辉 2017 年 2 月 1 1 文档控制 编制 日期 作者 ...
- Linux网络实战 (一) —— DNS配置详解(安装与使用DNS)
Linux网络实战-- DNS配置 Linux网络实战 (一) -- DNS配置 Linux 本机DNS配置 Linux主机名配置文件 添加一个新的主机名映射 删除一个主机名映射 实例 安装DNS服务 ...
- Linux高可用之heartbeat
Linux高可用之heartbeat heartbeat的概念 HA集群中的相关术语 Heartbeat的组成与原理 HeartBeat组件 heatbeat基本使用 安装heartbeat前的准备 ...
- Heartbeat安装
Linux-HA实战(1)- Heartbeat安装 接触Heartbeat主要是因为之前项目中使用了TFS,最近想给nameserver做HA,因为TFS官方用的Heartbeat,所以刚好了解下, ...
- 高可用集群heartbeat安装配置(一)
一.HA高可 FailOver:故障转移 包含HA Resource IP, service,STONITH FailBack故障转移原点 Faiover domain:故障转移域 资源粘性资源更倾向 ...
- Linux HA Cluster高可用集群之HeartBeat2
一.阐述Linux HA Cluster的使用背景: 1.1 高可用集群定义: 高可用集群全称:High Availability Cluster,简单的说,集群就是一组高可扩展.高可用性.高性价比的 ...
- 使用Cloudera Manager搭建zookeeper集群及HDFS HA实战篇
使用Cloudera Manager搭建zookeeper集群及HDFS HA实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.使用Cloudera Manager搭建zo ...
最新文章
- Android 开源框架Universal-Image-Loader全然解析(一)--- 基本介绍及使用
- c# websocketServer传图片
- python叫什么-python中什么叫类
- win10+VS2013+opencv2.4.11的安装和配置
- ASP.NET Core改进了.NET Framework中的字符串处理
- java 递归 堆栈_Java中的堆栈安全递归
- C# 判断txt文件编码格式
- 【blockly教程】第五章 循环结构
- 基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达
- android平板电脑 刷机工具,安卓平板电脑刷机教程之一键刷机.pdf
- wincc mysql_Wincc操作数据库SQLSERVER
- 拼多多被“薅羊毛” 交千万学费学到了什么?
- nssl 1467.U
- java的listroots_Java File listRoots()用法及代码示例
- 剑网3官方(内置)宏语法说明---(转自令狐志超帖子)
- Tui-editor富文本编辑器的使用
- 博林格林大学计算机排名,美国传媒研究生排名简述
- 回溯法——回溯法的算法思想
- 学生用计算机app,学生方程计算器
- 主機名稱控制者: DNS 伺服器
热门文章
- Xcode给应用开启沙箱sandbox
- 六石管理学:提出分形进度的概念
- 错误: 程序包org.eclipse.swt.graphics不存在/swt.jar下载方法
- 全网首发:configure: error: cannot guess build type; you must specify one
- Dx unsupported class file version 52.0 Conversion to Dalvik format failed with error 1
- 全网首发:CENTOS FreeSwitch集成NVIDIA CODEC
- 软件基本功:数组赋值,一定要对齐
- 同一个JDK,命令行运行,与JNI加载虚拟机,还是有差异
- 使用JNI加载JAVA虚拟机
- 小腿抽筋了,按摩承山穴,外加念观世音菩萨是不是迷信