一、heartbeat介绍

heartbeat是HA高可用集群的一个重要组件,heartbeat实现了资源转移和心跳信息传递。它的常用组合方式为heartbeat v1,heartbeat v2+crm,heartbeat v3 + pacemaker,目前版本为v3版本。

二、编译前准备

heartbeat官方站点http://hg.linux-ha.org/

  Cluster Glue官方站点https://github.com/ClusterLabs/cluster-glue

  Resource Agents官方站点 https://github.com/ClusterLabs/resource-agents

node1:192.168.0.15

node2:192.168.0.16

配置集群前提:

(1)各节点时间一致,便于心跳信息传递,使用ntp实现

(2)节点间需要通过主机名互相通信,必须解析主机至IP地址

(a)建议名称解析功能使用hosts文件来实现

(b)通信中使用的名字与节点名字必须保持一致 “uname -n” 或hostname展示出的名字保持一致

(3)考虑仲裁设备是否会用到

(4)建立各节点之间的root用户能够给予密钥认证

(5)定义为集群中的资源,不能开机启动

#使用ntpdate命令同步时间,并建立周期性任务
#可使用任意节点服务器作为ntp时间服务器,如各节点可上公网,可直接指定公网ntp服务器 、安装ntp
[root@node2 ~]# yum install -y ntp
[root@node2 ~]# vim /etc/ntp.conf #修改配置文件允许本网段客户端获取地址
将下面的语句
restrict default kod nomodify notrap nopeer noquery
修改为
restrict default nomodify
restrict 192.168.0.0 mask 255.255.255.0 nomodify [root@node2 ~]# service ntpd start
Starting ntpd: [ OK ] 查看同步过程
[root@node2 ~]# ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*202.118.1.81 202.118.1.47 u 92.249 8.602 0.714
202.112.31.197 .INIT. u - 0.000 0.000 0.000 、客户端创建周期任务,每3秒同步时间
[root@node1 ~]# crontab -e
*/ * * * * /usr/sbin/ntpdate 192.168.0.16 &> /dev/null
[root@node1 ~]# service crond start #手动同步成功,因ntp一般为自动,手动前kill掉所有ntp进程即可
[root@node1 ~]# ntpdate 192.168.0.16
Nov :: ntpdate[]: adjust time server 192.168.0.16 offset -0.004440 sec 、时间同步
[root@node2 ~]# date; ssh 192.168.0.15 'date'
Mon Nov :: CST
root@192.168.0.15's password:
Mon Nov :: CST [root@node2 ~]# vim /etc/hosts
192.168.0.15 node1
192.168.0.16 node2 、生成密钥对
[root@node1 ~]# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
a8:ad:2c::::ff:::9d::::ae:da:c9 root@centfils
The key's randomart image is:
+--[ RSA ]----+
| |
| |
| |
| . = |
| * S |
|.. o o |
|+ . . o o o |
|+ ooo*.. + |
| o +*E+ |
+-----------------+ 、把公钥传输至远程服务器对应用户的家目录
[root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.0.16
The authenticity of host '192.168.0.16 (192.168.0.16)' can't be established.
RSA key fingerprint is e5::6c:f7:c0::3d:0b::b6:1e::0d::8b:.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.0.16' (RSA) to the list of known hosts.
root@192.168.0.16's password:
Now try logging into the machine, with "ssh 'root@192.168.0.16'", and check in: .ssh/authorized_keys to make sure we haven't added extra keys that you weren't expecting. 、测试
[root@node2 ~]# date; ssh root@192.168.0.15 'date'
Mon Nov :: CST
Mon Nov :: CST

准备工作

三、编译安装  

 1、安装依赖包(node1和node2同步安装)

[root@node2 ~]# 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

  2、源码编译安装

下载地址http://linux-ha.org/wiki/Download
#下载heartbeat
[root@node2 ~]# wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2
#下载cluster glue
[root@node2 ~]# wget http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2
#下载cluster resource agents 注意:需要翻墙
[root@node1 ~]# wget https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz

  3、创建用户与组

[root@node1 ~]# groupadd haclient
[root@node1 ~]# useradd -g haclient hacluster -M -s /sbin/nologin

 4、编译

cluster glue
[root@node1 ~]# tar xf 0a7add1d9996.tar.bz2
[root@node1 ~]# cd Reusable-Cluster-Components-glue--0a7add1d9996/
[root@node1 Reusable-Cluster-Components-glue--0a7add1d9996]# ./autogen.sh
]# ./configure --prefix=/usr/local/heartbeat --sysconfdir=/etc/heartbeat libdir=/usr/local/heartbeat/lib64 LIBS='/lib64/libuuid.so.1' --with-daemon-user=hacluster --with-daemon-group=haclient
#LIBS如果是32位系统自行更改
]# make && make install resource agents
[root@node1 ~]# tar xf resource-agents-3.9..tar.gz
[root@node1 ~]# cd resource-agents-3.9.
[root@node1 resource-agents-3.9.]# ./autogen.sh
[root@node1 resource-agents-3.9.]# ./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' --with-daemon-user=hacluster --with-daemon-group=haclient
[root@node1 resource-agents-3.9.]# make && make install heartbeat
[root@node1 ~]# tar xf 958e11be8686.tar.bz2
[root@node1 ~]# cd Heartbeat---958e11be8686/
[root@node1 Heartbeat---958e11be8686]# ./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' --with-daemon-user=hacluster --with-daemon-group=haclient #编译报错,路径重复,google后得出删除 glue_config.h 中配置文件路径即可
[root@node1 Heartbeat---958e11be8686]# make && make install
../include/config.h::: error: this is the location of the previous definition
gmake[]: *** [strlcpy.lo] Error
gmake[]: Leaving directory `/root/Heartbeat---958e11be8686/replace'
make: *** [all-recursive] Error [root@node1 Heartbeat---958e11be8686]# vim /usr/local/heartbeat/include/heartbeat/glue_config.h
define HA_HBCONF_DIR "/usr/local/heartbeat/etc/ha.d/"
#删除最后一行即上行内容

  5、复制配置文件至/etc//heartbeat/ha.d中

[root@node1 Heartbeat---958e11be8686]# cp doc/ha.cf /etc/heartbeat/ha.d/
[root@node1 Heartbeat---958e11be8686]# cp doc/haresources /etc/heartbeat/ha.d/
[root@node1 Heartbeat---958e11be8686]# cp doc/authkeys /etc/heartbeat/ha.d/

  6、将heartbeat加入系统服务,并开机启动

[root@node1 ~]# chkconfig --add heartbeat
#之后可以用service来进行start|stop操作了
[root@node1 ~]# chkconfig heartbeat on

7、修改认证文件权限为600,不然heartbeat无法工作

[root@node1 ~]# chmod   /etc/heartbeat/ha.d/authkeys

  8、为resource-agents建立脚本软连接

[root@node1 ~]# ln -s /usr/local/heartbeat/usr/lib/ocf /usr/lib/ocf

四、配置文件

、配置authkeys文件,指明启用何种算法,使用何种密钥,本文件须更改权限为400
auth
# crc
sha1 2SIEok+gXAvB6G4seA8mhw
# md5 Hello! 生成随机字符串作为密钥
[root@node2 ~]# openssl rand -base64
2SIEok+gXAvB6G4seA8mhw== 、配置ha.cf文件,定义高可用集群的基本工作方式 定义日志文件位置(二选一) logfacility为将日志交由syslog管理
logfile /var/log/ha-log
#logfacility local0
多长时间发送一次心跳信息,默认为2秒
#keepalive
多长时间宣布某节点死亡,默认30秒
#deadtime
多长时间警告对方心跳信息延迟了,默认10秒
#warntime
第一次死去时间,避免因网络问题导致宣布死亡
#initdead
使用udp694端口传递心跳,并选择哪种方式传递心跳
#udpport
串行线缆传递心跳
#serial /dev/ttyS0 # Linux
#serial /dev/cuaa0 # FreeBSD
#serial /dev/cuad0 # FreeBSD .x
#serial /dev/cua/a # Solaris
串行线缆的工作频率
#baud
广播传递心跳
#bcast eth0 # Linux
#bcast eth1 eth2 # Linux
#bcast le0 # Solaris
#bcast le1 le2 # Solaris
多播传递心跳,网卡必须支持多播,ifconfig | grep MULTICAST
mcast eth0 225.0.0.1 #端口694,TTL为1,不允许回传为0
#启用网卡支持多播
[root@node1 ha.d]# ip link set eth0 multicast on 单薄传递心跳
#ucast eth0 192.168.1.2
自动故障转回
auto_failback on
指明节点
#node ken3
#node kathy
node node1
node node2
指明网关为ping node设备(仲裁设备)
#ping 10.10.10.254
ping 192.168.0.1
指明一个组为ping node设备(仲裁设备)
#ping_group group1 10.10.10.254 10.10.10.253
指明节点间传送的压缩算法
compression bz2
指明节点间传送数据压缩的最小数据为2KB
compression_threshold 、配置haresources文件,定义集群资源
直接加入资源
node1 192.168.0.17//eth0/192.168.0.255 httpd 、将httpd设置为开机不启动
[root@node1 ha.d]# chkconfig httpd off 、启动服务
[root@node1 ~]# service heartbeat start

以上所有配置均所有节点一致

heartbeat 编译安装配置的更多相关文章

  1. haproxy1.7编译安装配置

    #haproxy1.7编译安装配置#高可用.负载均衡 使用 #haproxy1.7编译安装配置 #centos7 x86_64 #高可用.负载均衡 使用 #下载 #http://www.haproxy ...

  2. azkaban编译安装配置文档

    azkaban编译安装配置文档 参考官方文档: http://azkaban.github.io/azkaban/docs/latest/ azkaban的配置文件说明:http://azkaban. ...

  3. Visual Studio 2015编译安装配置QT5.5.1(含QTWEBKIT)

    尽管QT5.5.1和VisualStudio 2015都已经发布很久了,但是QT项目组视乎不会为QT5.5.1专门发布预编译的QT5.5.1 for windows(2015)版本的,也不会专门发布V ...

  4. blfs(systemd版本)学习笔记-编译安装配置dhcpcd

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! dhcpcd项目地址:http://www.linuxfromscratch.org/blfs/view/stable-syst ...

  5. blfs(systemv版本)学习笔记-编译安装配置dhcpcd

    我的邮箱地址:zytrenren@163.com欢迎大家交流学习纠错! dhcpcd项目地址:http://www.linuxfromscratch.org/blfs/view/8.3/basicne ...

  6. cloudera impala编译 安装 配置 启动

    无论是采用GDB调试impala或者尝试修改impala源码,前提都是需要本地环境编译impala,这篇文章详细的分享一下impala编译方法以及编译过程遇到的棘手的问题: 前言: impala官方的 ...

  7. CentOS 7.4下源码编译安装配置LAMP环境详解

    CentOS 7.4搭建LAMP,LAMP:Linux.Apache.MySQL.PHP. 目录:第一部分 准备工作第二部分 安装Apache服务第三部分 安装MySQL服务第四部分 搭建PHP运行环 ...

  8. Linux下编译安装配置MariaDB数据库

    说明:操作系统:CentOS 6.6  64位MariaDB版本:mariadb-5.5.33aMariaDB数据库存放目录:/data/mysql准备:一.配置防火墙,开启3306端口vi /etc ...

  9. 安装Hadoop系列 — eclipse plugin插件编译安装配置

    [一].环境参数 eclipse-java-kepler-SR2-linux-gtk-x86_64.tar.gz //现在改为eclipse-jee-kepler-SR2-linux-gtk-x86_ ...

随机推荐

  1. Linux压缩解压缩(unzip,tar)

    unzip tar 常用解压缩命令: tar -zxvpf:解压缩 tar -zcvpf: 压缩 # tar [-j|-z] [cv] [-f 建立的檔名] filename... <==打包与 ...

  2. [已解决]centos6.4 php连接mysql和memcache提示权限不允许

    昨天新安装了64位系统,所以就重新安装了一个centos的虚拟机,配置了一个测试环境,刚开始是页面打不开,这个确定是selinux规则没有设置好使用如下命令解决: chcon -R -h -t htt ...

  3. Spark 源码分析 -- Task

    Task是介于DAGScheduler和TaskScheduler中间的接口 在DAGScheduler, 需要把DAG中的每个stage的每个partitions封装成task 最终把taskset ...

  4. d3.js:数据可视化利器之 交互行为:响应DOM事件

    selection.on:事件监听操作符 on()操作符可以添加或移除选择集中每个 DOM元素的事件监听函数: selection.on(type[,listener[,capture]]) 参数ty ...

  5. pandas_datareader.data 和 fix_yahoo_finance 获取金融数据

    参考:https://zhuanlan.zhihu.com/p/35360694 1.获取数据 #定义所需要的数据 gafataDict={"谷歌":"GOOG" ...

  6. &lt;Android 开源库&gt; GreenDAO 使用方法具体解释&lt;译文&gt;

    简单介绍 greenDAO是一个开源的Android ORM,使SQLite数据库的开发再次变得有趣. 它减轻了开发者处理底层的数据库需求,同一时候节省开发时间. SQLite是一个非常不错的关系型数 ...

  7. window下的开发环境:常用软件

    window下的开发环境:常用软件 Visio 2010  - 产品设计 xmind        -产品设计 Axure       -产品设计 Edraw max 7.3(破解版)  -产品设计 ...

  8. 详解Spark sql用户自定义函数:UDF与UDAF

    UDAF = USER DEFINED AGGREGATION FUNCTION Spark sql提供了丰富的内置函数供猿友们使用,辣为何还要用户自定义函数呢?实际的业务场景可能很复杂,内置函数ho ...

  9. R语言之多重共线性的判别以及解决方法

    多重共线性(Multicollinearity)是指线性回归模型中的解释变量之间由于存在精确相关关系或高度相关关系而使模型估计失真或难以估计准确.   1.可以计算X矩阵的秩qr(X)$rank,如果 ...

  10. 【转】Google的2012论文

    转自:http://www.sigvc.org/bbs/thread-1152-1-1.html Google的论文一直是业界的风向标,尤其在机器学习.分布式系统.网络等方面很多创新性的成果都是由他们 ...