centos7源代码编译安装heartbeat
一。安装heartbeat
1》安装包下载
下载地址参考 http://Linux-ha.org/wiki/Download
分别下载 Cluster Glue 1.0.12 和 Heartbeat 3.0.6 上传到linux
参考安装文档 http://www.linux-ha.org 首页左侧菜单点击 User's Guide进入以下地址
http://www.linux-ha.org/doc/users-guide/_building_and_installing_from_source.html#_building_and_installing_cluster_glue_from_source
2》安装Cluster Glue和resource-agents 过程
》》安装 Heartbeat 之前需要先安装Cluster Glue 1.0.12 (下载包名一般为 958e11be8686.tar.bz2)
》》安装解压缩工具 bzip2 yum intall -y bzip2
》》解压 tar -jxvf 958e11be8686.tar.bz2
》》编译运行
Reusable-Cluster-Components-glue--0a7add1d9996 目录 执行
./autogen 生成 configure检测文件
一般会报错 因为缺少一些依赖包
yum install -y autoconf automake libtool
yum install libtool-ltdl-devel
看到 Now run ./configure 表示自动生成完成
执行 ./configure --prefix=/usr/local/heartbeat 必须将Cluster Glue和resource-agents和heartbeat都安装在同一目录 因为heartbeat需要依赖这些库
提示配置错误 缺少库
yum install -y glib2-devel libxml2 libxml2-devel bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel make wget docbook-dtds docbook-style-xsl bzip2-devel asciidoc libuuid-devel
配置完成列表显示默认的安装位置
- cluster-glue configuration:
- Version = 1.0.12 (Build: 0a7add1d9996b6d869d441da6c82fb7b8abcef4f)
- Features =
- Prefix = /usr/local/heartbeat
- Executables = /usr/local/heartbeat/sbin
- Man pages = /usr/local/heartbeat/share/man
- Libraries = /usr/local/heartbeat/lib
- Header files = /usr/local/heartbeat/include
- Arch-independent files = /usr/local/heartbeat/share
- Documentation = /usr/local/heartbeat/share/doc/cluster-glue
- State information = /usr/local/heartbeat/var
- System configuration = /usr/local/heartbeat/etc
- Use system LTDL = yes
- HA group name = haclient
- HA user name = hacluster
编译和安装 make & make install
》》安装resource-agents
./autogen.sh
export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib" CFLAGS 表示用于 C 编译器(gcc)的选项 -L表示搜索库目录 -l或者-I表示包含头文件目录
./configure --prefix=/usr/local/heartbeat
ln -s /usr/local/heartbeat/lib/* /lib/ 将生成的动态库 添加快捷方式到/lib下
ln -s /usr/local/heartbeat/lib/* /lib64/ 在make过程中需要在lib下找到Cluster Glue的so文件
配置完成列表显示默认的配置信息
- resource-agents configuration:
- Version = UNKNOWN
- Build Version = 02beac55c1da0ad99a5a19bd3b2333bcff7e916c
- Features =
- Prefix = /usr/local/heartbeat
- Executables = /usr/local/heartbeat/sbin
- Man pages = /usr/local/heartbeat/share/man
- Libraries = /usr/local/heartbeat/lib
- Header files = /usr/local/heartbeat/include
- Arch-independent files = /usr/local/heartbeat/share
- Documentation = /usr/local/heartbeat/share/doc/resource-agents
- State information = /usr/local/heartbeat/var
- System configuration = /usr/local/heartbeat/etc
- HA_BIN directory prefix = /usr/local/heartbeat/libexec
- RA state files = /usr/local/heartbeat/var/run/resource-agents
- AIS Plugins =
- CFLAGS = -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib -ggdb3 -fgnu89-inline -fstack-protector-all -Wall -
如果碰到 metadata-IPv6addr.xml:1: parser error : Document is empty 错误 可以重新解压包重新生成配置
编译和安装 make&make install
3》安装Heartbeat
》》编译运行
进入对应目录 ./bootstrap&./configure --prefix=/usr/local/heartbeat
配置信息如下
- heartbeat configuration:
- Version = "3.0.6"
- Executables = "/usr/local/heartbeat/sbin"
- Man pages = "/usr/local/heartbeat/share/man"
- Libraries = "/usr/local/heartbeat/lib64"
- Header files = "/usr/local/heartbeat/include"
- Arch-independent files = "/usr/local/heartbeat/share"
- Documentation files = "/usr/local/heartbeat/share/doc/heartbeat"
- State information = "/usr/local/heartbeat/var"
- System configuration = "/usr/local/heartbeat/etc"
- Init (rc) scripts = "/etc/rc.d/init.d"
- Init (rc) defaults = "/etc/sysconfig"
- Use system LTDL = "yes"
- HA group name = "haclient"
- HA group id = "65"
- HA user name = "hacluster"
- HA user user id = "17"
- Build dopd plugin = "yes"
- Enable times kludge = "yes"
- CC_WARNINGS = " -Wall -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-arith -Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast -Winline -Wmissing-format-attribute -Wformat=2 -Wformat-security -Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing -Werror "
- Mangled CFLAGS = " -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib -Wall -Wmissing-prototypes -Wmissing-declarations -Wstrict-prototypes -Wdeclaration-after-statement -Wpointer-arith -Wwrite-strings -Wcast-qual -Wcast-align -Wbad-function-cast -Winline -Wmissing-format-attribute -Wformat=2 -Wformat-security -Wformat-nonliteral -Wno-long-long -Wno-strict-aliasing -Werror -ggdb3 -funsigned-char"
- Libraries = "-lbz2 -lz -lc -luuid -lrt -ldl -lltdl"
- RPATH enabled = ""
- Distro-style RPMs = "no"
make 过程出现如下错误 /usr/local/heartbeat/include/heartbeat/glue_config.h:105:0: error: "HA_HBCONF_DIR" redefined [-Werror]
glue.config.h中 宏 HA_HBCONF_DIR被定义了多次
vi 编辑glue_conf.h 注释掉最后一行 定义宏的代码
make install 安装
二。heartbeat配置
1》简要描述:
heartbeat属于机器之间进行主备高可用 也就是当主机 死机或者被关机的情况下 备机接管主机 其实就是接管主机的vip 和keepalived不同的地方
在于 keepalived是应用级别的主备转移 比如主机lvs挂了(主机并没有挂) vip转移到备用机器的lvs
原理:主机和备机之间进行心跳检测 当备机无法检测到主机的心跳 开启vip 如果主机和备机都没有挂掉 由于通信问题 无法连接 会出现裂脑 也就是 主机
有vip 备机由于连不上主机 所以也对外路由了vip 两台主机都拥有了vip 导致数据出现故障 所以主机和备机间应该有一个网卡 只是用于检测心跳的 其他网
络不能影响心跳检测
2》测试环境
主机 物理网卡ip 192.168.58.135 心跳网卡ip 192.168.150.129
备机 物理网卡ip 192.168.58.140 心跳网卡ip 192.168.150.128
vip是 192.168.58.88
这里给出 如果添加双网卡 不同网络的配置
》》点击vmware菜单 编辑-虚拟网络编辑器
》》添加网卡 在虚拟机上右键 -设置
3》配置文件理解和主备转移配置
》》配置用户组
从安装配置日志中可以看出
- HA group name = haclient
- HA user name = hacluster
在启动时 必定要使用到该组合该用户所以先给予创建
- groupadd haclient
- useradd hacluster -g haclient -G haclient,root
- chmod g+rwx / 和属组相同组(root和haclient都是root组)的用户都具有读写和执行的权限
》》配置hostname
- 分别58.135(主机名ha)和58.140(主机名ha1)执行
- hostname 自己的ip 来设置主机名
- 修改 /etc/hosts文件
- 192.168.58.135 ha
- 192.168.58.140 ha1
》》复制配置文件
配置文件详解 从安装过程中的日志中 看到
System configuration = "/usr/local/heartbeat/etc" 默认的配置需要置于 /usr/local/heartbeat/etc目录下 默认该目录不存在配置文件
拷贝三个重要的文件到 /usr/local/heartbeat/etc/ha.d 目录下
cp /usr/local/heartbeat/share/doc/heartbeat/ha.cf
/usr/local/heartbeat/share/doc/heartbeat/authkeys /usr/local/heartbeat/share/doc/heartbeat /usr/local/heartbeat/etc/ha.d
》》修改配置文件
》/usr/local/heartbeat/etc/ha.d/ha.cf
该配置文件用于配置 心跳的核心配置
- #表示调试的日志文件 一般测试建议开启 因为一旦启动服务报错 就可以根据日志定位错误
- debugfile /var/log/ha-debug
- #表示系统的的日志文件
- logfile /var/log/ha-log
- #表示使用系统日志
- logfacility local0
- #主备之间的心跳间隔时间单位:s
- #keepalive 2
- #表示如果连接对方 30s 还无法连接 表示节点死亡 需要考虑vip转移
- #deadtime 30
- #表示10s时间未收到心跳时发出警告日志
- #warntime 10
- #有时机器启动后需要一段时间网卡才能正常工作 需要预留一定的时间后 再开始判断心跳
- 检测
- #initdead 120
- #多播的udp端口
- udpport 694
- #串行端口的波特率
- #baud 19200
- #串口的接口名
- #serial /dev/ttyS0 # Linux
- #serial /dev/cuaa0 # FreeBSD
- #serial /dev/cuad0 # FreeBSD 6.x
- #serial /dev/cua/a # Solaris
- #传播心跳的广播播网卡信息
- #bcast eth0 # Linux
- #bcast eth1 eth2 # Linux
- #bcast le0 # Solaris
- #bcast le1 le2 # Solaris
- #多播传送心跳的网卡 多播组 端口 跃点数 是否回环内传送
- #mcast eth0 225.0.0.1 694 1 0
- #设置单播心跳 设置对方的ip地址 这里 58.135和 58.136需要分别设置对方的心跳ip 150.128和150.129
- ucast eno33554984 192.168.150.128
- #表示 如果主机停止后 从机接管 设置为 on 当主机从新启动后 主机立即接管vip off 从机不会释放vip给主机
- auto_failback on
- #配置主从的节点信息
- node ha
- node ha1
- #############################################
- #使用ping模式 有时当主机挂掉或者heartbeat挂掉后vip才会转移 有时出现某个进程挂掉 切换需要使用脚本
- #ping模式用于测试 如果网卡ping不同 某个主机 就认为当前断网 需要转移vip
- #respawn root /usr/local/heartbeat/libexec/heartbeat/ipfail 表示当ping不通时 自动调用 ipfail这个脚本
- #apiauth ipfail gid=haclient uid=hacluster 表示有权限操作ipfail脚本的组和用户
- ############################################
- ping 192.168.150.1
- #ping组的所有主机
- #ping_group group1 10.10.10.254 10.10.10.253
- #respawn userid /path/name/to/run
- respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail
- apiauth ipfail gid=haclient uid=hacluster
这里注意一点 一般启动时会报错因为 ping和ucast这些配置都需要插件支持 需要将lib64下面的插件软连接到lib目录 才不会抛出异常
- ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/
- ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/
》/usr/local/heartbeat/etc/ha.d/authkeys
该文件表示发送心跳时 机器用于验证的key的hash算法 双方必须配置成一致的密码
- auth 2 表示使用id为2的验证 下边需要定义一个2的验证算法
- #1 crc
- 2 sha1 HISHA1 #口令(HISHA1)随便给 主从配置相同即可
》/usr/local/heartbeat/etc/ha.d/haresources
该文件表示资源的管理 如果是主机 当主机启动后 自动加载该文件中配置的所有启动资源 资源脚本默认在 haresources同级目录下的resource.d目录下
可以自定义脚本 比如 我的主机上安装了一个tomcat(//root/Java/tomcat7)端口80
在resource.d目录下新建一个 tomcat文件 vi tomcat 内容为启动tomcat
- /root/java/tomcat7/bin/startup.sh
haresources 配置调用该tomcat脚本 配置如下
- ha IPaddr::192.168.58.88/24/eno16777736 tomcat
- 一般该资源文件的配置格式为
- 主机名或者ip 资源1 资源2 。。。。
- ha IPaddr::192.168.58.88/24/eno16777736 tomcat
- 表示 ha当前主机名
- IPaddr::192.168.58.88/24/eno16777736 表示一个创建vip的脚本资源 resource.d下确实存在 IPaddr的脚本 参数表示eno16777736 网卡下新建vip为
- 192.168.58.88
- tomcat 自然表示调用我们自定义的脚本资源
以上配置都是配置的58.135 主备中的主机 暂时不配置 140从机 尝试启动
service heartbeat start
service heartbeat status (本人也是报一堆错通过 /var/log/ha-debug分析错误才出现以下成功结构)
- heartbeat OK [pid 10793 et al] is running on ha [ha]...
more /var/log/ha-debug 分析看其中Error的部分来分析错误
最后 通过 ip addr eno16777736 是否多出一个ip是 58.88 刚开始启动一般需要初始化一段时间vip才出来 因为initdead的默认配置
centos7源代码编译安装heartbeat相关推荐
- Centos7.6 编译安装heartbeat,及遇到的问题。
1.heartbeat 3.0版不同与以前的版本,是由三个不同的项目组成,(下载地址 http://www.linux-ha.org/wiki/Downloads)Heartbeat,glue, ag ...
- centos7上源码编译安装Heartbeat
最近有遇到改造一款第三方软件安装包,安装路径统一到/opt/路径下.原来是直接使用yum安装的,本文则介绍如何采用源码编译方式在centos7上安装Heartbeat. 一.认识什么是Heartb ...
- CentOS7下编译安装libmodbus库
CentOS7下编译安装libmodbus库 下载libdmodbus源代码 编译安装lidmodbus 测试 参考资料 下载libdmodbus源代码 libmodbus官网下载页面如下图所示: 可 ...
- Linux源代码编译安装详解
使用源代码编译安装软件有以下优点,获取软件的最新版及时修复bug,软件功能可按需选择或定制,有更多软件可供选择,源码包适用于各种平台. 工具/原料 一台装有Linux操作系统的电脑 接入互联网络并能正 ...
- python3源代码_Python3源代码编译安装
Python3源代码编译安装 安装必要工具 yum-utils ,它的功能是管理repository及扩展包的工具 (主要是针对repository) $ sudo yum install yum-u ...
- python源码编译安装 gb18030_源代码编译安装Python3.5.2
由于没有找到Python3.5的rpm安装包,因此进行源代码编译安装 1.下载Python3.5.2 [root@seastar ~]# cd /usr/local/src [root@seastar ...
- mysql5.5.8编译安装_MySQL5.5.8源代码编译安装
/*安装CMake*//*进入CMake源代码所在目录*/cd #/*解压CMake源代码*/tar zxf cmake-2.8.3.tar.gz /*进入CMake源代码目录*/cd cmak 首页 ...
- php-7.2.13的安装,Centos7.2编译安装php-7.0.13
Centos7.2编译安装php-7.0.13 1- 安装依赖 yum install wget autoconf libjpeg libjpeg-devel libpng libpng-devel ...
- 从源代码编译安装 Mono 2.4 和 MonoDevelop 2.0
虽然现在几乎所有的Linux发行版都预置了Mono软件,但是大多数都比较旧,因此要体验最新版本的Mono,还是要用源代码自己进行编译安装的. 先说几句废话,Mono 2.4 提供了.Net 3.5 的 ...
最新文章
- 汉得宣布开源:基于容器的企业级应用 PaaS 平台
- 区块链技术没那么复杂,别被大佬们忽悠晕了
- Linux 播号上网
- 【ETL】ETL讲解(很详细!!!)
- 在html语言中frame,html Frame、Iframe、Frameset 的区别
- string型字符串
- php 邮件发送是html 没样式_使用python发送邮件
- JavaBeginnersTutorial 中文系列教程·翻译完成
- m3u8和HLS下载和分析工具
- 分享一个OFD批量打印工具
- 使用wps的邮件合并和文档附件制作以照片形式的准考证
- Word2010专项试题(1)
- 阿里巴巴20周年直击,马云:阿里巴巴从来没有害怕过什么!
- 解决CSDN导入md文档时图片显示不出来,出现[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jiakLQhy-1628602853830)提示
- mysql的设置参数中max_allowed_packet
- [PowerQuery] PowerQuery各个组件功能
- linux环境搭建篇-redis设置密码
- phpredis与predis的区别
- diff 比较两个文件夹下各个文件的内容(差别)
- 高清播放知识之 480P、720P、1080P
热门文章
- OSChinaiOS客户端源码剖析001(架构篇)
- F2FS源码分析-1.3 [F2FS 元数据布局部分] Checkpoint结构
- Qt编写可视化大屏电子看板系统8-调整间距
- Qt编写可视化大屏电子看板系统15-曲线面积图
- Uestc_suibian 暑假集训总结
- LLC谐振电路(二) 同步整流技术
- 婚宴座位图html5,大型婚宴 婚礼座位安排(图)
- 真c++创建B树(非c with class)
- ARM基础教程 | ARM、Cortex-M与ARMv8-M什么关系?
- 计算机的网线连接路由器的什么接口,网线插路由器哪个口