使用Heartbeat构建Linux双机热备系统

本文档版本号: V1.0

版 本 历 史

版本号

更新时间

说 明

创建者

V1.0

2013-3-23

修改版

金桥

1 部署环境

OS: Red Hat Enterprise Linux release 6.0 Beta (Santiago)

kernel:  2.6.32-19.el6.x86_64

Software:

Heartbeat ver3.0.5

Libnet ver1.1.6

2 Heartbeat简介

Heartbeat是Linux-HA的一个开源的Linux High-Availability群集项目, 支持如下应用群集:

  • Web servers
  • LVS director servers
  • Mail servers
  • Database servers
  • Firewalls
  • File servers
  • DNS servers
  • DHCP servers
  • Proxy Caching servers
  • etc.

3 安装Heartbeat

3.1 添加用户和组

# groupadd -g 800 haclient

# useradd -u 800 -g haclient hacluster

# yum install -y cluster-glue wget net-snmp-devel net-snmp OpenIPMI glib2-devel libxml2-devel bzip2-devel libuuid-devel docbook-utils docbook-dtds libtool-ltdl libxslt perl-TimeDate openssl-devel docbook-style-xsl e2fsprogs-devel mailx glib2-devel libtool-ltdl-devel net-snmp-devel bzip2-devel ncurses-devel openssl-devel libtool libxml2-devel gettext bison flex zlib-devel mailx which docbook-style-xsl PyXML shadow-utils opensp autoconf automake libxslt libxslt-devel libgcrypt-devel pkgconfig libgpg-error-devel sgml-common opensp openjade xml-common docbook-style*

# rpm –ivh libtool-ltdl-devel

# yum install -y intltool

# yum install -y pacemaker

3.2 编译和安装libnet库

# su - root

# cp libnet.tar.gz /usr/local

# cd /usr/local

# tar xzvf libnet.tar.gz

# cd libnet

# ./configure

# make

# make install

# cd libnet-1.1.6/src/.libs/

# cp libnet.so.1 /usr/lib64/

3.3编译和安装Reusable-Cluster-Components-glue--glue

# bunzip2 Reusable-Cluster-Components-glue--glue-1.0.9.tar.bz2

# tar xvf Reusable-Cluster-Components-glue--glue-1.0.9.tar

# cd Reusable-Cluster-Components-glue--glue-1.0.9

# ./autogen.sh

# ./configure && make && make install

3.4编译和安装ClusterLabs-resource-agents

# tar xzvf ClusterLabs-resource-agents-v3.9.2-0-ge261943.tar.gz

# cd ClusterLabs-resource-agents-b735277/

# ./autogen.sh

# ./configure && make && make install

metadata-IPv6addr.xml:1: parser error : Document is empty

metadata-IPv6addr.xml:1: parser error : Start tag expected, '<' not found

unable to parse metadata-IPv6addr.xml

gmake[2]: *** [ocf_heartbeat_IPv6addr.xml] Error 6

gmake[2]: Leaving directory `/home/soft/ClusterLabs-resource-agents-b735277/doc'

gmake[1]: *** [all-recursive] Error 1

gmake[1]: Leaving directory `/home/soft/ClusterLabs-resource-agents-b735277'

make: *** [all] Error 2

遇到此错误,将此安装包删除,重新解压,再次执行,

3.4 编译和安装heartbeat HA

# su - root

# bunzip2 Heartbeat-3-0-7e3a82377fa8.tar.bz2

# tar xvf Heartbeat-3-0-7e3a82377fa8.tar

# cd Heartbeat-3-0-7e3a82377fa8

#./bootstrap

# cp /usr/include/heartbeat/*.h /usr/include/

# cp /root/Reusable-Cluster-Components-glue--glue-1.0.9/include/clplumbing/*.h /usr/include/

# cp /root/Reusable-Cluster-Components-glue--glue-1.0.9/include/*.h /usr/include/

#./ConfigureMe configure && make && make install

此处configure应该指定安装路径,默认安装在/usr/etc下

heartbeat 启动后,关闭出现异常,提示问题/etc/init.d/heartbeat: line 253: /ResourceManager: No such file or directory 解决方式: vi /etc/ha.cf/shellfuncs

增加如下信息: : ${HA_NOARCHBIN:=/usr/share/heartbeat}

4 配置Heartbeat service

4.1 配置/etc/hosts

在所有节点上配置:

192.168.209.50    kingserver60

192.168.209.60    kingserver50

4.2 配置/etc/ha.d/ha.cf

以root身份编辑所有节点的配置文件ha.cf:

其中auto_failback on表示主节点在错误状态恢复正常之后,会重新接管HA,

bcast eth0 表示是eth0网卡为ha工作网络

node kingserver60

node kingserver50 分别表示ha的主节点和备节点的主机名

ping 192.168.209.1,可以设置为ping一个可用的节点即可。

serial    /dev/ttyS0 串口如果没有心跳线,就不要配置啊!

debugfile /var/log/ha-debug

logfile /var/log/ha-log

logfacility     local0

keepalive 2

deadtime 30

warntime 10

udpport 694

bcast   eth0

ucast eth0 192.168.209.1

auto_failback on

node    kingserver60

node    kingserver10

ping 192.168.209.41

respawn hacluster /usr/lib64/heartbeat/ipfail

4.3 配置/etc/ha.d/authkeys(所有节点)

auth 1

1 crc

以root身份更改授权文件的权限

# chmod 600 authkeys

4.4 配置/etc/ha.d/haresources

如果是配置heartbeat本身支持的服务,可以直接调用heartbeat的默认脚本,形如:

kingserver60 IPaddr::192.168.209.100/24/eth0 httpd

如果是需要自己定义的程序脚本,需要配置所有节点:

Node1 表示的是主节点主机名,192.168.0.26表示ha的工作IP,haserver.sh表示ha的切换脚本

单网卡SHQZ-PS-WCITY-SV-MMS01 172.17.60.73/255.255.255.128/eth0 harmserver.sh

多网卡

SHQZ-PS-WCITY-CL02 IPaddr::192.168.156.10/255.255.255.0 clserver1.sh

SHQZ-PS-WCITY-CL02 IPaddr::10.11.25.10/255.255.255.224 clserver2.sh

node1 192.168.0.26 haserver.sh

其中haserver.sh为HA在切换时运行的脚本。位于/etc/rc.d/init.d目录下.

如: /etc/rc.d/init.d/haserver.sh

此处一定要记得传参数

date >> /tmp/ha.txt

su - vas -c "vas_server.sh $1"

exit 0

用户vas脚本vas_server.sh如下:

if [ $1 = "start" ]; then

echo "Starting vas..."

/home/vas/vas/bin/billing.sh &

echo "* * * * * /home/vas/vas/bin/billing.sh > /dev/null" > /tmp/cron.vas

echo "0,30 * * * * /home/vas/watch1.1/watch.sh > /dev/null" >> /tmp/cron.vas

crontab /tmp/cron.vas

fi

if [ $1 = "stop" ]; then

echo "Stopping vas..."

crontab -r

echo "Sleep 65 seconds..."

sleep 65

app_name="billing"

ps -ef | grep ${app_name} | awk '{print $2}' | xargs kill -9 >/dev/null 2>&1

app_name="SMSAgent"

ps -ef | grep ${app_name} | awk '{print $2}' | xargs kill -9 >/dev/null 2>&1

fi

exit 0

4.5 启动和停止Heartbeat

  • 启动heartbeat

# /etc/init.d/heartbeat start

  • 停止heartbeat

# /etc/init.d/heartbeat stop

  • Start heartbeat server on all nodes, and add it to /etc/rc.local:

# /etc/init.d/heartbeat start

5 测试Heartbeat

5.1 测试service IP是否成功

可以用ping命令测试service IP(如192.168.0.26)是否成功, 也可以在HA的Active机器上使用ifconfig查看网卡是否绑定多个IP地址。

5.2 服务脚本是否运行正常

可以观察2台机器(1台Active, 1台Standby)是否运行了服务脚本haserver.sh.

5.3 HA切换是否正常

手工模拟网卡坏掉的情况,将处于Active状态的机器的网卡拔掉,然后监测日志/var/log/ha.log,这时service应从Active切换到Standby的机器,然后利用上面的方法测试Service IP和服务脚本是否运行正常。

手工模拟机器当机的情况,将处于Active状态的机器人工关机,依照上面的方法测试HA切换是否正常。

heartbeat3.x部署安装的更多相关文章

  1. Android 开发环境在 Windows7 下的部署安装

    Android SDK Android SDK 为 Android 应用的开发.测试和调试提了必要的API库和开发工具. ADT Bundle 下载 如果你是一个android 开发新手,推荐你下载使 ...

  2. Windows系统下部署安装一个/多个Tomcat8

    首先从http://tomcat.apache.org/上下载Tomcat8.0压缩版的,解压到指定路径后即可.  第一:在Windows系统中安装部署单个Tomcat         对于这种情况, ...

  3. Zabbix监控windows部署安装

    Zabbix agent 在windows上安装部署 1.  下载与解压 地址: http://www.zabbix.com/downloads/2.4.0/zabbix_agents_2.4.0.w ...

  4. Hadoop 2.2.0部署安装(笔记,单机安装)

    SSH无密安装与配置 具体配置步骤: ◎ 在root根目录下创建.ssh目录 (必须root用户登录) cd /root & mkdir .ssh chmod 700 .ssh & c ...

  5. _00024 尼娜抹微笑伊拉克_云计算ClouderaManager以及CHD5.1.0群集部署安装文档V1.0

    笔者博文:妳那伊抹微笑 itdog8 地址链接 : http://www.itdog8.com(个人链接) 博客地址:http://blog.csdn.net/u012185296 博文标题:_000 ...

  6. Ubuntu16.04 部署安装Docker容器 & 注意事项

    一.部署安装Docker容器 1.1 Ubuntu下安装 crul sudo apt install curl curl是利用URL语法在命令行方式下工作的开源文件传输工具.它被广泛应用在Unix.多 ...

  7. Docker+Redis镜像的原理以及部署安装(超详解附截图)

    文章来源:公众号-智能化IT系统. 一. DOCKER介绍 Docker简介 (1)Docker 是一个开源的应用容器引擎,基于 Go 语言,并遵从Apache2.0协议开源. (2)Docker 可 ...

  8. 单机多实例mysq 8.0l部署安装

    单机多实例mysql部署安装 目的需求 在单台虚拟机部署部署多实例mysql,用于配置mysql replication,MHA等. 思路 多实例安装mysql可以参考<源编译MySQL8.0的 ...

  9. Hadoop教程(五)Hadoop分布式集群部署安装

    Hadoop教程(五)Hadoop分布式集群部署安装 1 Hadoop分布式集群部署安装 在hadoop2.0中通常由两个NameNode组成,一个处于active状态,还有一个处于standby状态 ...

随机推荐

  1. 广告制胜无它,顺应人性尔——leo鉴书63

    近期看了几本怎样写文案的书.对广告有了些兴趣.查了下相关销量排行,位置比較高的是本叫<科学的广告+我的广告生涯>的书,是同一作者(Claude C. Hopkins)两本书的合集.前者是他 ...

  2. Django进阶之Form

    Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 一.创建Form类 #!/usr/bin/en ...

  3. Perl图书的一些体会

    近期,由于项目须要.又又一次将Perl学习起来. Perl老实说.让我又爱又恨. 爱它.是由于自己写代码的确非常爽. 是代码最少.速度最快的语言. 恨是由于看别人的代码实在太累了. 但,整体体会,在文 ...

  4. 笔记03 MVVM 开发的几种模式(WPF)

    转自http://www.cnblogs.com/buptzym/p/3220910.html 在WPF系(包括SL,WP或者Win8)应用开发中,MVVM是个老生常谈的问题.初学者可能不会有感觉,但 ...

  5. caffe搭建--caffe在invidia+cpu 酷睿2Q9300 + ubuntu16.04.2上面的安装和编译过程

    本文原创,转载请注明出处. ------------------------------------------------分割线-------------------------------- 概要 ...

  6. Canvas学习笔记——拖曳与投掷物体

    首先用一个例子来演示这个效果: 鼠标可以拖曳和投掷小球   // > 16 & 0xff, g = color >> 8 & 0xff, b = color > ...

  7. Hibernate中的事务处理流程详解

    一.Hibernate操作的基本流程 使用 Hibernate 进行数据持久化操作,通常有如下步骤: 1.编写持久化类: POJO + 映射文件 2.获取 Configuration 对象 3.获取 ...

  8. [Phoenix] 七、如何使用自增ID

    摘要: 在传统关系型数据库中设计主键时,自增ID经常被使用.不仅能够保证主键的唯一,同时也能简化业务层实现.Phoenix怎么使用自增ID,是我们这篇文章的重点. 在传统关系型数据库中设计主键时,自增 ...

  9. LESS和sa

    一. Sass/Scss.Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,Sass语法属于缩排语法,比css比多出好些功能(如变量 ...

  10. Machine Learning in Action(7) 回归算法

    按照<机器学习实战>的主线,结束有监督学习中关于分类的机器学习方法,进入回归部分.所谓回归就是数据进行曲线拟合,回归一般用来做预测,涵盖线性回归(经典最小二乘法).局部加权线性回归.岭回归 ...