一。安装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

配置完成列表显示默认的安装位置

[html] view plaincopy
  1. cluster-glue configuration:
  2. Version                  = 1.0.12 (Build: 0a7add1d9996b6d869d441da6c82fb7b8abcef4f)
  3. Features                 =
  4. Prefix                   = /usr/local/heartbeat
  5. Executables              = /usr/local/heartbeat/sbin
  6. Man pages                = /usr/local/heartbeat/share/man
  7. Libraries                = /usr/local/heartbeat/lib
  8. Header files             = /usr/local/heartbeat/include
  9. Arch-independent files   = /usr/local/heartbeat/share
  10. Documentation            = /usr/local/heartbeat/share/doc/cluster-glue
  11. State information        = /usr/local/heartbeat/var
  12. System configuration     = /usr/local/heartbeat/etc
  13. Use system LTDL          = yes
  14. HA group name            = haclient
  15. 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文件

配置完成列表显示默认的配置信息

[html] view plaincopy
  1. resource-agents configuration:
  2. Version                  = UNKNOWN
  3. Build Version            = 02beac55c1da0ad99a5a19bd3b2333bcff7e916c
  4. Features                 =
  5. Prefix                   = /usr/local/heartbeat
  6. Executables              = /usr/local/heartbeat/sbin
  7. Man pages                = /usr/local/heartbeat/share/man
  8. Libraries                = /usr/local/heartbeat/lib
  9. Header files             = /usr/local/heartbeat/include
  10. Arch-independent files   = /usr/local/heartbeat/share
  11. Documentation            = /usr/local/heartbeat/share/doc/resource-agents
  12. State information        = /usr/local/heartbeat/var
  13. System configuration     = /usr/local/heartbeat/etc
  14. HA_BIN directory prefix  = /usr/local/heartbeat/libexec
  15. RA state files           = /usr/local/heartbeat/var/run/resource-agents
  16. AIS Plugins              =
  17. 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

配置信息如下

[html] view plaincopy
  1. heartbeat configuration:
  2. Version                  = "3.0.6"
  3. Executables              = "/usr/local/heartbeat/sbin"
  4. Man pages                = "/usr/local/heartbeat/share/man"
  5. Libraries                = "/usr/local/heartbeat/lib64"
  6. Header files             = "/usr/local/heartbeat/include"
  7. Arch-independent files   = "/usr/local/heartbeat/share"
  8. Documentation files      = "/usr/local/heartbeat/share/doc/heartbeat"
  9. State information        = "/usr/local/heartbeat/var"
  10. System configuration     = "/usr/local/heartbeat/etc"
  11. Init (rc) scripts        = "/etc/rc.d/init.d"
  12. Init (rc) defaults       = "/etc/sysconfig"
  13. Use system LTDL          = "yes"
  14. HA group name            = "haclient"
  15. HA group id              = "65"
  16. HA user name             = "hacluster"
  17. HA user user id          = "17"
  18. Build dopd plugin        = "yes"
  19. Enable times kludge      = "yes"
  20. 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 "
  21. 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"
  22. Libraries                = "-lbz2 -lz -lc -luuid -lrt -ldl  -lltdl"
  23. RPATH enabled            = ""
  24. 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》配置文件理解和主备转移配置

》》配置用户组

从安装配置日志中可以看出

[html] view plaincopy
  1. HA group name            = haclient
  2. HA user name             = hacluster

在启动时 必定要使用到该组合该用户所以先给予创建

[html] view plaincopy
  1. groupadd haclient
  2. useradd hacluster -g haclient -G haclient,root
  3. chmod g+rwx /  和属组相同组(root和haclient都是root组)的用户都具有读写和执行的权限

》》配置hostname

[html] view plaincopy
  1. 分别58.135(主机名ha)和58.140(主机名ha1)执行
  2. hostname 自己的ip 来设置主机名
  3. 修改 /etc/hosts文件
  4. 192.168.58.135 ha
  5. 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

该配置文件用于配置 心跳的核心配置

[html] view plaincopy
  1. #表示调试的日志文件 一般测试建议开启 因为一旦启动服务报错 就可以根据日志定位错误
  2. debugfile /var/log/ha-debug
  3. #表示系统的的日志文件
  4. logfile /var/log/ha-log
  5. #表示使用系统日志
  6. logfacility     local0
  7. #主备之间的心跳间隔时间单位:s
  8. #keepalive 2
  9. #表示如果连接对方 30s 还无法连接 表示节点死亡 需要考虑vip转移
  10. #deadtime 30
  11. #表示10s时间未收到心跳时发出警告日志
  12. #warntime 10
  13. #有时机器启动后需要一段时间网卡才能正常工作 需要预留一定的时间后 再开始判断心跳
  14. 检测
  15. #initdead 120
  16. #多播的udp端口
  17. udpport 694
  18. #串行端口的波特率
  19. #baud   19200
  20. #串口的接口名
  21. #serial /dev/ttyS0      # Linux
  22. #serial /dev/cuaa0      # FreeBSD
  23. #serial /dev/cuad0      # FreeBSD 6.x
  24. #serial /dev/cua/a      # Solaris
  25. #传播心跳的广播播网卡信息
  26. #bcast  eth0            # Linux
  27. #bcast  eth1 eth2       # Linux
  28. #bcast  le0             # Solaris
  29. #bcast  le1 le2         # Solaris
  30. #多播传送心跳的网卡 多播组 端口 跃点数 是否回环内传送
  31. #mcast eth0 225.0.0.1 694 1 0
  32. #设置单播心跳 设置对方的ip地址 这里 58.135和 58.136需要分别设置对方的心跳ip  150.128和150.129
  33. ucast eno33554984 192.168.150.128
  34. #表示 如果主机停止后 从机接管  设置为 on 当主机从新启动后 主机立即接管vip  off 从机不会释放vip给主机
  35. auto_failback on
  36. #配置主从的节点信息
  37. node    ha
  38. node    ha1
  39. #############################################
  40. #使用ping模式 有时当主机挂掉或者heartbeat挂掉后vip才会转移  有时出现某个进程挂掉 切换需要使用脚本
  41. #ping模式用于测试 如果网卡ping不同 某个主机 就认为当前断网 需要转移vip
  42. #respawn root     /usr/local/heartbeat/libexec/heartbeat/ipfail 表示当ping不通时 自动调用 ipfail这个脚本
  43. #apiauth ipfail gid=haclient uid=hacluster 表示有权限操作ipfail脚本的组和用户
  44. ############################################
  45. ping 192.168.150.1
  46. #ping组的所有主机
  47. #ping_group group1 10.10.10.254 10.10.10.253
  48. #respawn userid /path/name/to/run
  49. respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail
  50. apiauth ipfail gid=haclient uid=hacluster

这里注意一点 一般启动时会报错因为 ping和ucast这些配置都需要插件支持 需要将lib64下面的插件软连接到lib目录 才不会抛出异常

[html] view plaincopy
  1. ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/
  2. ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/

》/usr/local/heartbeat/etc/ha.d/authkeys

该文件表示发送心跳时 机器用于验证的key的hash算法 双方必须配置成一致的密码

[html] view plaincopy
  1. auth 2  表示使用id为2的验证 下边需要定义一个2的验证算法
  2. #1 crc
  3. 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

[html] view plaincopy
  1. /root/java/tomcat7/bin/startup.sh

haresources 配置调用该tomcat脚本 配置如下

[html] view plaincopy
  1. ha IPaddr::192.168.58.88/24/eno16777736 tomcat
  2. 一般该资源文件的配置格式为
  3. 主机名或者ip  资源1 资源2 。。。。
  4. ha IPaddr::192.168.58.88/24/eno16777736 tomcat
  5. 表示 ha当前主机名
  6. IPaddr::192.168.58.88/24/eno16777736 表示一个创建vip的脚本资源 resource.d下确实存在 IPaddr的脚本  参数表示eno16777736 网卡下新建vip为
  7. 192.168.58.88
  8. tomcat 自然表示调用我们自定义的脚本资源

以上配置都是配置的58.135 主备中的主机 暂时不配置 140从机 尝试启动

service heartbeat start

service heartbeat status (本人也是报一堆错通过 /var/log/ha-debug分析错误才出现以下成功结构)

[html] view plaincopy
  1. 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相关推荐

  1. Centos7.6 编译安装heartbeat,及遇到的问题。

    1.heartbeat 3.0版不同与以前的版本,是由三个不同的项目组成,(下载地址 http://www.linux-ha.org/wiki/Downloads)Heartbeat,glue, ag ...

  2. centos7上源码编译安装Heartbeat

      最近有遇到改造一款第三方软件安装包,安装路径统一到/opt/路径下.原来是直接使用yum安装的,本文则介绍如何采用源码编译方式在centos7上安装Heartbeat. 一.认识什么是Heartb ...

  3. CentOS7下编译安装libmodbus库

    CentOS7下编译安装libmodbus库 下载libdmodbus源代码 编译安装lidmodbus 测试 参考资料 下载libdmodbus源代码 libmodbus官网下载页面如下图所示: 可 ...

  4. Linux源代码编译安装详解

    使用源代码编译安装软件有以下优点,获取软件的最新版及时修复bug,软件功能可按需选择或定制,有更多软件可供选择,源码包适用于各种平台. 工具/原料 一台装有Linux操作系统的电脑 接入互联网络并能正 ...

  5. python3源代码_Python3源代码编译安装

    Python3源代码编译安装 安装必要工具 yum-utils ,它的功能是管理repository及扩展包的工具 (主要是针对repository) $ sudo yum install yum-u ...

  6. python源码编译安装 gb18030_源代码编译安装Python3.5.2

    由于没有找到Python3.5的rpm安装包,因此进行源代码编译安装 1.下载Python3.5.2 [root@seastar ~]# cd /usr/local/src [root@seastar ...

  7. mysql5.5.8编译安装_MySQL5.5.8源代码编译安装

    /*安装CMake*//*进入CMake源代码所在目录*/cd #/*解压CMake源代码*/tar zxf cmake-2.8.3.tar.gz /*进入CMake源代码目录*/cd cmak 首页 ...

  8. 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 ...

  9. 从源代码编译安装 Mono 2.4 和 MonoDevelop 2.0

    虽然现在几乎所有的Linux发行版都预置了Mono软件,但是大多数都比较旧,因此要体验最新版本的Mono,还是要用源代码自己进行编译安装的. 先说几句废话,Mono 2.4 提供了.Net 3.5 的 ...

最新文章

  1. 汉得宣布开源:基于容器的企业级应用 PaaS 平台
  2. 区块链技术没那么复杂,别被大佬们忽悠晕了
  3. Linux 播号上网
  4. 【ETL】ETL讲解(很详细!!!)
  5. 在html语言中frame,html Frame、Iframe、Frameset 的区别
  6. string型字符串
  7. php 邮件发送是html 没样式_使用python发送邮件
  8. JavaBeginnersTutorial 中文系列教程·翻译完成
  9. m3u8和HLS下载和分析工具
  10. 分享一个OFD批量打印工具
  11. 使用wps的邮件合并和文档附件制作以照片形式的准考证
  12. Word2010专项试题(1)
  13. 阿里巴巴20周年直击,马云:阿里巴巴从来没有害怕过什么!
  14. 解决CSDN导入md文档时图片显示不出来,出现[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jiakLQhy-1628602853830)提示
  15. mysql的设置参数中max_allowed_packet
  16. [PowerQuery] PowerQuery各个组件功能
  17. linux环境搭建篇-redis设置密码
  18. phpredis与predis的区别
  19. diff 比较两个文件夹下各个文件的内容(差别)
  20. 高清播放知识之 480P、720P、1080P

热门文章

  1. OSChinaiOS客户端源码剖析001(架构篇)
  2. F2FS源码分析-1.3 [F2FS 元数据布局部分] Checkpoint结构
  3. Qt编写可视化大屏电子看板系统8-调整间距
  4. Qt编写可视化大屏电子看板系统15-曲线面积图
  5. Uestc_suibian 暑假集训总结
  6. LLC谐振电路(二) 同步整流技术
  7. 婚宴座位图html5,大型婚宴 婚礼座位安排(图)
  8. 真c++创建B树(非c with class)
  9. ARM基础教程 | ARM、Cortex-M与ARMv8-M什么关系?
  10. 计算机的网线连接路由器的什么接口,网线插路由器哪个口