源码编译安装Heartbeat

一、Heartbeat介绍

官方站点:http://linux-ha.org/wiki/Main_Page
heartbeat可以资源(VIP地址及程序服务)从一台有故障的服务器快速的转移到另一台正常的服务器提供服务,heartbeat和keepalived相似,heartbeat可以实现failover功能,但不能实现对后端的健康检查。

二、简要规划


系统环境


系统


OEL6.6


系统位数


x86_64


内核版本


3.8.13-44.1.1.el6uek.x86_64


软件环境


Heartbeat


Heartbeat 3.0.6

Cluster Glue 1.0.12

Resource Agents 3.9.6


Heartbeat下载地址


http://linux-ha.org/wiki/Download


wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2
wget http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2

wget https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz


系统规划


主机名


IP


db-1-1


192.168.192.21    管理IP

10.0.100.21       心跳IP

192.168.192.100   VIP


db-1-2


192.168.192.22    管理IP

10.0.100.22       心跳IP

192.168.192.100   VIP


/etc/hosts


cat << EOF > /etc/hosts

127.0.0.1         localhost  localhost.localdomain

192.168.192.21    db-1-1

10.0.100.21       priv-1-1

192.168.192.22    db-1-2

10.0.100.22       priv-1-2

192.168.192.100   vip

EOF

三、编译安装

--依赖包安装(提前检查好):

yum -y install autoconf automake gcc-c++ asciidoc libxslt-devel libtool libtool-ltdl-devel libxml2 libxml2-devel bzip2-devel glib2-devel mercurial *openssl* net-snmp OpenIPMI flex bison e2fsprogs-devel

--源码编译安装:

下载地址:http://linux-ha.org/wiki/Download

--Heartbeat 3.0.6:
# wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2
--Cluster Glue 1.0.12:
# wget http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2
--Resource Agents 3.9.6: 
# wget https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz

--用户组及用户配置

# groupadd haclient
# useradd -g haclient hacluster

编译Cluster Glue

# tar -jxvf cluster-clue-1.0.12.tar.bz2 
# cd Reusable-Cluster-Components-glue--0a7add1d9996/
# ./autogen.sh
# 注:32位系统 LIBS=‘/lib/libuuid.so.1‘# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS=‘/lib64/libuuid.so.1‘
# make && make install

--卸载

# make uninstall && make clean

编译Resource Agents

 # tar -zxvf resource-agents-3.9.6.tar.gz
# cd resource-agents-3.9.6
# ./autogen.sh
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS=‘/lib64/libuuid.so.1‘
# make && make install

--卸载
# make uninstall && make clean

编译Heartbeat

# tar -jxvf heartbeat-3.0.6.tar.bz2
# cd Heartbeat-3-0-958e11be8686/
# ./bootstrap
# export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
# ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS=‘/lib64/libuuid.so.1‘
# make && make install

--卸载

# make uninstall && make clean
--heartbeat路径检查

# whereis heartbeat
heartbeat: /usr/lib64/heartbeat /usr/include/heartbeat /usr/libexec/heartbeat /usr/share/heartbeat /usr/share/man/man8/heartbeat.8

四、Heartbeat配置

# cp doc/{ha.cf,haresources,authkeys} /etc/ha.d/
# chmod 600 /etc/ha.d/authkeys

Heartbeat的配置主要涉 ha.cf、haresources、authkeys 三个文件:

ha.cf:主配置文件;

haresource:用来配置要让Heartbeat托管的服务;

authkey:用来指定Heartbeat的认证方式。

主备节点两端的三个配置文件(ha.cf authkeys haresources)完全相同

1)、配置ha.cf文件
# cp /etc/ha.d/ha.cf /etc/ha.d/ha.cf.bak
# > /etc/ha.d/ha.cf
# vi /etc/ha.d/ha.cf

#log configure
#用于记录heartbeat的调试信息
debugfile /var/log/ha-debug
#用于记录heartbeat的日志信息
logfile /var/log/ha-log
#设置heartbeat的日志,这里用的是系统日志
logfacility local1
#options configure
#设定心跳(监测)时间时间为2秒
keepalive 2
#指定若备用节点在30秒内未收到主节点心跳信号,则接管主服务器资源
deadtime 30
#指定心跳延迟告警时间为10秒(最好在2~10秒之间),,10秒内备节点不能接收主节点心跳信号,即往日志写入警告日志,但不会切换服务
warntime 10
#系统启动或重启后预留的忽略时间段,取值至少为deadtime的两倍
initdead 120
##########################
#广播/单播通讯使用的Udp端口
#udpport694
#使用网卡eth1发送心跳检测(Linux)
#bcast eth1
#采用网卡eth1的udp单播来组织心跳,后面跟的IP地址为双机对方IP地址
#ucast eth1 10.0.100.22
##########################
#bcasteth1
#采用网卡eth1的Udp多播来组织心跳,一般在备用节点不止一台时使用。Bcast、ucast和mcast分别代表广播、单播和多播,是组织心跳的的方式,任选其一
mcast eth1 225.0.0.7 694 1 0
#node configure
#定义当主节点恢复后,是否将服务自动切回(DB建议为off,测试阶段设置为on)
auto_failback on
#可选配置,通过Heartbeat监控系统运行状态
#watchdog /dev/watchdo
#主节点名称(主节点主机名),与uname -n显示一致
node db-1-1
#备用节点名称
node db-1-2
crm no
#通过ping网关检测心跳是否正常,仅用来测试网络
#ping 10.0.100.1
#指定和heartbeat一起启动、关闭的进程,可选
#respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail
#设置启动IPfail的用户和组
#apiauth ipfail gid=haclient uid=hacluster

注:

① watchdog /dev/watchdog: 可选配置,通过Heartbeat监控系统运行状态。该特性需在内核中载入"softdog"内核模块,用来生成实际的设备文件,如系统中没有该模块,需进行指定,重新编译内核。编译完成输入 "insmod softdog"加载模块,然后输入"grep misc/proc/devices",输入"cat /proc/misc |grep watchdog",最后生成设备文件:"mknod /dev/watchdog c 10 130" 即可使用

② espawn hacluster /usr/lib/heartbeat/ipfail: 可选配置,指定和heartbeat一起启动、关闭的进程。这些进程一般是和heartbeat集成的插件,遇到故障可自动重启。IPfail进程用于检测和处理网络故障,需配合ping语句指定ping node检测网络连通性;hacluster表示启动IPfail进程的用户。

2)、配置authkeys,心跳密钥验证文件
# cp /etc/ha.d/authkeys /etc/ha.d/authkeys.bak
# > /etc/ha.d/authkeys
# vi /etc/ha.d/authkeys

#注:auth后填序号,可任意填写
auth 1
#开头必须为序号名,然后为验证方式,支持三种( crc md5 sha1 )方式验证,最后面是自定义密钥
1 sha1 ccb6d8d12a7c207d7somb6618556d62e4831dfab

3)、配置haresources

# cp /etc/ha.d/haresources /etc/ha.d/haresources.bak
# > /etc/ha.d/haresources
# vi /etc/ha.d/haresources

#db-1-1 #预定的主机节点名称,与相应主机$uname -n的结果一致。需保证drbd.conf和ha.cf中节点的名字一致。备机此处写db-1-2。
#IPaddr::192.168.192.100/24/eth0 #规划的VIP。
db-1-1 IPaddr::192.168.192.100/24/eth0
######################
##@说明信息:
##@drbddisk::dbdata_r0<==启动drbd data资源,相当于执行/etc/ha.d/resource.d/drbddisk dbdata_r0 stop/start操作
##@Filesystem::/dev/drbd1::/dbdata::ext4 <==drbd分区挂载到/dbdata目录,相当于执行/etc/ha.d/resource.d/Filesystem /dev/drbd1 /dbdata ext4 stop/start<==设定需要挂载的drbd设备采用的文件系统,相当于系统中执行mount /dev/drbd1 /dbdata
##@mysql <==启动mysql服务脚本,相当于/etc/init.d/mysql stop/start
######################
#db-1-1 IPaddr::192.168.192.100/24/eth0 drbddisk::dbdata_r0 Filesystem::/dev/drbd1::/dbdata::ext4 mysql

注:

Haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址及启动服务集群资源,文件每一行可包含一个或多个资源脚本名,资源间使用空格隔开,参数间使用两个冒号隔开,主节点和备份节点中资源文件haresources要完全一样。

一般格式为: node-name network <resource-group>
node-name表示主节点的主机名,必须和ha.cf文件中指定的节点名一致。network用于设定集群的IP地址、子网掩码和网络设备标识等。resource-group用于指定需Heartbeat托管的服务(即这些服务可由Heartbeat来启动和关闭)。

这里指定的IP地址就是集群对外服务的IP地址,如要托管这些服务,必须将服务写成可通过start/stop来启动或关闭的脚本,放到/etc/init.d/或/etc/ha.d/resource.d/目录下,Heartbeat会根据脚本名称自动去/etc/init.d或者/etc/ha.d/resource.d目录下找到相应脚本进行启动或关闭操作。

4)、同步两个节点的配置文件

# scp /etc/ha.d/{ha.cf,haresources,authkeys} db-1-2:/etc/ha.d/
ha.cf           100%        1385      1.4KB/s 00:00
haresources     100%         781      0.8KB/s 00:00
authkeys        100%          77      0.1KB/s 00:00

5)、启动heartbeat

#chkconfig --add heartbeat
#关闭开机自启动,当服务器重启时,需要人工去启动
#chkconfig heartbeat off
#chkconfig heartbeat --list
#两个节点都启动
#service heartbeat start

五、VIP切换测试

① 启动heartbeat查看当前状态

[[email protected] /etc/ha.d]
#ip addr 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:10:a7:fe brd ff:ff:ff:ff:ff:ff
    inet 10.0.100.21/24 brd 10.0.100.255 scope global eth1
    inet6 fe80::20c:29ff:fe10:a7fe/64 scope link 
       valid_lft forever preferred_lft forever
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:10:a7:08 brd ff:ff:ff:ff:ff:ff
    inet 192.168.192.21/24 brd 192.168.192.255 scope global eth0
    inet 192.168.192.100/24 brd 192.168.192.255 scope global secondary eth0:0
    inet6 fe80::20c:29ff:fe10:a708/64 scope link 
       valid_lft forever preferred_lft forever
[[email protected] /etc/ha.d]
#ip addr          
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:47:ae:ec brd ff:ff:ff:ff:ff:ff
    inet 192.168.192.22/24 brd 192.168.192.255 scope global eth0
    inet6 fe80::20c:29ff:fe47:aeec/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:47:ae:f6 brd ff:ff:ff:ff:ff:ff
    inet 10.0.100.22/24 brd 10.0.100.255 scope global eth1
    inet6 fe80::20c:29ff:fe47:aef6/64 scope link 
       valid_lft forever preferred_lft forever

上面的结果可以看到db-1-1节点拥有vip地址:192.168.192.100,db-1-2节点没有

② 模拟主节点宕机后的状态

[[email protected] /etc/ha.d]
#service heartbeat stop
Stopping High-Availability services:                       [  OK  ]
[[email protected] /etc/ha.d]
#ip addr|grep eth0
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 192.168.192.21/24 brd 192.168.192.255 scope global eth0
[[email protected] /etc/ha.d]
#ip addr|grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 192.168.192.22/24 brd 192.168.192.255 scope global eth0
    inet 192.168.192.100/24 brd 192.168.192.255 scope global secondary eth0:0

上面的结果可以看到db-1-1宕机后,vip地址漂移到db-1-2节点上,db-1-2成为了主节点

③ 模拟主节点故障恢复后的状态

[[email protected] /etc/ha.d]
#service heartbeat start
Starting High-Availability services: INFO:  Resource is stopped
                                                           [  OK  ]
[[email protected] /etc/ha.d]
#ip addr|grep eth0
3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 192.168.192.21/24 brd 192.168.192.255 scope global eth0
    inet 192.168.192.100/24 brd 192.168.192.255 scope global secondary eth0:0
[[email protected] /etc/ha.d]
#ip addr|grep eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    inet 192.168.192.22/24 brd 192.168.192.255 scope global eth0

上面的结果可以看到vip又漂移回节点db-1-1,db-1-1成为了主节点。

时间: 2024-10-10 06:17:56

源码编译安装Heartbeat的相关文章

centos7 源码编译安装heartbeat 以及结合nginx测试高可用

1.环境CentOS Linux release 7.4.1708 (Core) 3.10.0-693.el7.x86_64主(heartbeat27=uname -n)10.0.0.27(ip) 10.0.10.27(心跳) 10.0.0.29(vip)备(heartbeat28=uname -n)10.0.0.28(ip) 10.0.10.28(心跳) 10.0.0.29(vip)2.cat /etc/hosts10.0.0.27 heartbeat2710.0.0.28 heartbeat

马哥linux学习笔记:源码编译安装

由于rpm包在作者制作封装的时候已经把程序的一些特性固定了,如果我们根据自己的需求,需要运用程序的一些没有普适性相关特性,就需要下载程序的源码手动编译安装了,这里只是简单的介绍一下C代码的程序包编译安装方法. 为了能更直观的看到源码编译安装的过程,我演示一下在centos7.2环境中编译安装httpd2.2: 首先,编译的前提是得有称手的工具及环境了,编译c源代码就需要用到开发工具,make,gcc了,环境就需要开发库跟头文件了,如果系统中没有这些,就需要yum安装了. 这里我运行yum gro

烂泥:mysql5.0数据库源码编译安装

本文首发于烂泥行天下. 本次实验的mysql.OS相关信息如下: Mysql:5.0.96 OS:centos 32 bit 最近公司要上新的业务,指明数据库使用的是mysql5.0版本.如果是使用rpm包安装的话,那就很简单了.直接使用yum安装即可,命令如下: yum –y install mysql mysql-server Yum方式安装完毕后,直接启动mysql数据库服务即可.如下图: 这样基本上就可以了. 但是这样安装mysql数据库,没有进行定制.比如mysql数据库的数据文件存储

ubuntu 源码编译安装最新的vim 8.0

为什么要源码编译安装VIM? 因为我要安装ycm,ycm要求vim版本为8.0 教程步骤: 1, 核对系统版本 2, 删除系统自带的vim 3, 编译安装vim 4, 检验vim的安装 1,核对系统版本 [email protected]:~# lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 14.04.5 LTS Release: 14.04 Codename: tr

详解LAMP源码编译安装

实战:LAMP源码编译安装 家住海边喜欢浪:zhang789.blog.51cto.com 目录 详解LAMP源码编译安装 LAMP简介 一.准备工作 二.编译安装 Apache 三.编译安装 MySQL 四.编译安装 PHP 测试LAMP搭建开源数据web管理程序phpMyadmin 详解LAMP源码编译安装 LAMP简介 LAMP是当下非常流行的一套Web架构,我们可以在GNU/Linux下通过其他人打包的程序包来进行安装; 但是在生产环境中,很多时候都需要我们自己定制安装AMP,编译安装L

centos 6.5源码编译安装subversion 1.8.10

一.简介 CentOS 6.5的yum源可以安装的SVN客户端版本太低了,1.6.11,所以需要升级到1.8.10,而官网有没有找到1.8.10的安装包,只能选择源码编译安装. 二.安装步骤 参考官网:http://svn.apache.org/repos/asf/subversion/trunk/INSTALL 源码下载:http://archive.apache.org/dist/subversion/ 源码编译subversion依赖许多别的工具,比如:apr.apr-util.libto

软件包管理之源码编译安装

编译步骤: 1.#cd SOURCE_CODE 2../configure 作用: 检测编译环境 提供给用户编译配置(通过脚本选项) --help 帮助信息 --prefix=/usr/local/name 安装路径 二进制 /usr/local/name/bin /usr/local/name/libexec不允许自动执行,只能被其他程序调用执行 配置文件 /usr/local/name/conf 库文件 /usr/local/name/lib 帮助文档 /usr/local/name/sha

LAMP纯源码编译安装日志

一.LAMP构架的安装与经验技巧(源码安装好处.是便于管理,可以选定参数,可以使用新版本) 相关软件列表: # ls /soft/ | grep -E "*.gz|*.zip|*.xz|*.bz2"    apr-1.4.5.tar.gz    apr-util-1.3.12.tar.gz    autoconf-2.61.tar.gz    freetype-2.3.12.tar.gz    httpd-2.4.18.tar.bz2    jpegsrc.v6b.tar.gz    

源码编译安装

除了用rpm.yum安装包外,还可以用源码编译安装 源码包:代码可见的,要想在系统里运行,要翻译成机器语言,编译就是翻译的过程. 源码包下载最好去官方网站 以httpd为例 下载地址 以后下载的源码包最好放在/usr/local/src下,目的是为了以后方便维护 有时候,需要去看一下它里面的文件,比如INSTALL  README 安装指引 源码包安装三个步骤: 第一步:   ./configure --help  查看有哪些选项 --prefix   指定安装路径 检查这步操作是否有问题,没问