heatbeat高可用

heatbeat高可用

Heartbeat与Keepalived的区别

Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP);
Heartbeat是基于主机或网络的服务的高可用方式;
keepalived的目的是模拟路由器的双机
heartbeat的目的是用户service的双机
lvs的高可用建议用keepavlived
业务的高可用建议heartbeat

 

两款高可用开源方案:Keepalived和Heartbeat。两者都很流行,但差异还是很大的,现将试用过程中的感受以及相关知识点简单总结一下,供大家选择方案的时候参考。

1)Keepalived使用更简单:从安装、配置、使用、维护等角度上对比,Keepalived都比Heartbeat要简单得多,尤其是Heartbeat
2.1.4后拆分成3个子项目,安装、配置、使用都比较复杂,尤其是出问题的时候,都不知道具体是哪个子系统出问题了;而Keepalived只有1个安装文件、1个配置文件,配置文件也简单很多;

2)Heartbeat功能更强大:Heartbeat虽然复杂,但功能更强大,配套工具更全,适合做大型集群管理,而Keepalived主要用于集群倒换,基本没有管理功能;

3)协议不同:Keepalived使用VRRP协议进行通信和选举,Heartbeat使用心跳进行通信和选举;Heartbeat除了走网络外,还可以通过串口通信,貌似更可靠;

4)使用方式基本类似:如果要基于两者设计高可用方案,最终都要根据业务需要写自定义的脚本,Keepalived的脚本没有任何约束,随便怎么写都可以;Heartbeat的脚本有约束,即要支持service
start/stop/restart这种方式,而且Heartbeart提供了很多默认脚本,简单的绑定ip,启动apache等操作都已经有了;

 

使用建议:优先使用Keepalived,当Keepalived不够用的时候才选择Heartbeat

一、环境说明

主机:centos 7.4(由于7的时候已经不支持yum安装了,所以用到编译安装)

机器:二台

192.168.182.195 Heartbeat1

192.168.182.220 Heartbeat2

vip一个

二、前提条件准备

在每个节点上做以下配置:

  1. 域名解析 (所有机器)

[root@master ~]# vim /etc/hosts
192.168.182.148  heartbeat1
192.168.182.195  heartbeat2
  1. 关闭firewalld

[root@master ~]#systemctl stop firewalld
  1. 关闭selinux

[root@master ~]#setenforce 0
  1. 同步时间

我选择的是admin上:
[root@master ~]# yum install -y ntp
[root@master ~]# vim /etc/ntp.conf  #有4行server的位置,把那4行server行注释掉,填写以下两行
server 127.127.1.0 # local clock
fudge  127.127.1.0 stratum 10

在这里插入图片描述

[root@admin ~]# systemctl start ntpd
[root@admin ~]# systemctl status ntpd
其他所有节点:
# yum install ntpdate  -y
# ntpdate  时间服务器ip
  1. 配置主机名

192.168.182.148	master

192.168.182.195	backup
  1. 配置主机间ssh互信,免密钥认证

[root@master ~]# ssh-keygen

[root@master ~]# ssh-copy-id 192.168.182.195

三、开始安装(没有特殊说明,操作步骤二台都需要)

  1. 安装需要的基础包

[root@master ~]# yum -y install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-devel bzip2 bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel asciidoc
  1. 创建用户和组

创建好所需组和所有者,在编译cluster-glue会设置一些文件的属组和属主分别为haclient、hacluster,因此名称必须为这两个。

[root@master ~]# groupadd haclient
[root@master ~]# useradd -g haclient hacluster
  1. 下载软件包:Reusable-Cluster-Components-glue(简称glue)、resource-agents、heartbeat

下载链接:(不能用私聊我)
https://pan.baidu.com/s/1fSMixlvBy_FJRrvChAlbkw
提取码:k1tj

  1. 安装glue

[root@master ~]# tar xf glue.tar.bz2 -C /usr/local/
[root@master ~]# mv Reusable-Cluster-Components-glue--0a7add1d9996/  glue
[root@master ~]# cd /usr/local/glue/
[root@master glue]# ./autogen.sh 
[root@master glue]# ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
[root@master glue]# make && make  install
  1. 安装resource-agents

[root@master ~]# tar xf resource-agents-3.9.6.tar.gz -C /usr/local/
[root@master local]# cd resource-agents-3.9.6/
[root@master resource-agents-3.9.6]# ./autogen.sh 
[root@master resource-agents-3.9.6]# ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
[root@master resource-agents-3.9.6]# make && make install
[root@master resource-agents-3.9.6]# echo $?
0
  1. 安装HeartBeat

[root@master ~]# tar xf Heartbeat-3-0.tar.bz2 -C /usr/local
[root@master ~]# cd /usr/local/
[root@master local]# cd Heartbeat-3-0-958e11be8686/
[root@backup Heartbeat-3-0-958e11be8686]# ./bootstrap 
[root@master Heartbeat-3-0-958e11be8686]# ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
[root@master Heartbeat-3-0-958e11be8686]# make
[root@master Heartbeat-3-0-958e11be8686]#echo $?
0

在这里插入图片描述

[root@master Heartbeat-3-0-958e11be8686]# make install
[root@master Heartbeat-3-0-958e11be8686]#echo $?
0

在这里插入图片描述

注意

在安装heartbeat的时候出现如下错误:

【configure时错误:】
configure: error: in `/usr/local/Heartbeat-3-0-958e11be8686':
configure: error: Core development headers were not found

解决方法:
[root@master Heartbeat-3-0-958e11be8686]# export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"

【make时错误:】
/usr/local/heartbeat/include/heartbeat/glue_config.h:105:1: error: "HA_HBCONF_DIR" redefined
In file included from ../include/lha_internal.h:38,
                from strlcpy.c:1:
../include/config.h:390:1: error: this is the location of the previous definition
gmake[1]: *** [strlcpy.lo] Error 1
gmake[1]: Leaving directory `/root/Heartbeat-3-0-958e11be8686/replace'
make: *** [all-recursive] Error 1

解决方法1:
删除/usr/local/heartbeat/include/heartbeat/glue_config.h 中的第105行
#define HA_HBCONF_DIR "/etc/ha.d/"
sed -i '105d' /usr/local/heartbeat/include/heartbeat/glue_config.h

解决方法2:configure上加上忽略错误选项
./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient LIBS=/lib64/libuuid.so.1 --enable-fatal-warnings=no
  1. 配置网卡支持插件文件

[root@master ~]# mkdir -pv /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/
mkdir: created directory ‘/usr/local/heartbeat/usr’
mkdir: created directory ‘/usr/local/heartbeat/usr/lib’
mkdir: created directory ‘/usr/local/heartbeat/usr/lib/ocf’
mkdir: created directory ‘/usr/local/heartbeat/usr/lib/ocf/lib’
mkdir: created directory ‘/usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/’

[root@master ~]# cp /usr/lib/ocf/lib/heartbeat/ocf-* /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/

注意:一般启动时会报错因为 ping和ucast这些配置都需要插件支持 需要将lib64下面的插件软连接到lib目录 才不会报错异常
[root@master ~]# ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* /usr/local/heartbeat/lib/heartbeat/plugins/RAExec/
‘/usr/local/heartbeat/lib/heartbeat/plugins/RAExec/*’ -> ‘/usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/*’

[root@master ~]# ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/
‘/usr/local/heartbeat/lib/heartbeat/plugins/HBauth’ -> ‘/usr/local/heartbeat/lib64/heartbeat/plugins/HBauth’
‘/usr/local/heartbeat/lib/heartbeat/plugins/HBcomm’ -> ‘/usr/local/heartbeat/lib64/heartbeat/plugins/HBcomm’
‘/usr/local/heartbeat/lib/heartbeat/plugins/quorum’ -> ‘/usr/local/heartbeat/lib64/heartbeat/plugins/quorum’
‘/usr/local/heartbeat/lib/heartbeat/plugins/tiebreaker’ -> ‘/usr/local/heartbeat/lib64/heartbeat/plugins/tiebreaker’

在第一台的配置已经全部完成了,第二台也需要同样的操作

四、配置heartbeat

  1. 提供模板配置文件

在启用Heartbeat之前,安装后要配置三个文件(如没有可手动建立):ha.cf、haresources、authkeys。这三个配置文件需要在heartbeat/etc/ha.d目录下面,但是默认是没有这三个文件的,可以到官网上下这三个文件,也可以在源码包里找这三个文件,在源码目录下的DOC子目录里。
拷贝三个模版配置文件到 /usr/local/heartbeat/etc/ha.d 目录下
[root@master ~]# cd /usr/local/heartbeat/share/doc/heartbeat
[root@master heartbeat]# cp {ha.cf,haresources,authkeys} /usr/local/heartbeat/etc/ha.d/

xha.cf         heartbeat参数配置文件       在这里配置一些基本的参数authkey       heartbeat认证文件         高可用服务器对之间根据对端的authkey,对对端的进行认证haresource    heartbeat的资源文件     如配置资源以及一些脚本程序
  1. 配置ha.d配置文件
[root@master ~]# cd /usr/local/heartbeat/etc/ha.d/
[root@master ha.d]# vim ha.cf 
logfile /var/log/ha-log
keepalive 2
deadtime 30 
warntime 10 
initdead 120
udpport 694  
ucast ens33 192.168.182.195
auto_failback on 
node    master
node    backup
backup机器
master机器scp发到backup
修改一下单播的IP就行ucast ens33 maser机器的ip
配置文件详细解释
debugfile /var/log/ha-debug  #表示调试的日志文件 一般测试建议开启
logfile /var/log/ha-log  #表示系统的的日志文件路径
logfacility    local0  #表示使用系统日志与上面只能开启一个
keepalive 2  #主备之间的心跳间隔时间单位:s
deadtime 30  #表示如果连接对方30s还无法连接,表示节点死亡需要考虑vip转移
warntime 10  #表示10s时间未收到心跳时发出警告日志
initdead 120  #有时机器启动后需要一段时间网卡才能正常工作 需要预留一定的时间后,再开始判断心跳检测
udpport 694  #多播的udp端口
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  #多播传送心跳的网卡 多播组 端口 跃点数 是否回环内传送
ucast ens33 192.168.182.195 #设置单播心跳,设置对方的ip地址,此处使用单播
auto_failback on  #heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代从节点,否则不取代从节点。
node    master  #配置主从的节点信息,要与uname -n保持一致
node    backup
#############################################
#使用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.146.2
#ping组的所有主机
ping_group group1 10.10.10.254 10.10.10.253
respawn userid /path/name/to/run
#指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。如果你的系统是64bit,请注意该文件的路径。
#respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail
#apiauth ipfail gid=haclient uid=hacluster
  1. 配置authkeys

[root@master ha.d]# vim authkeys
auth 2
2 md5 UPiwmKChnMwoqL7qi5m6ZKBi9hs

openssl rand -base64 20   #可以使用这条命令生成
#该文件表示发送心跳时 机器用于验证的key的hash算法,节点之间必须配置成一致的密码
backup机器与master机器一样的内容
[root@master ha.d]# vim authkeys
#auth 1   #表示使用id为1的验证 下边需要定义一个1的验证算法
#1 crc		#下面这三个为三种算法
#2 sha1 HI!    
#3 md5 Hello!
  1. 配置haresources配置文件

#该文件表示资源的管理,如果是主机,当主机启动后自动加载该文件中配置的所有启动资源,资源脚本默认在haresources同级目录下的resource.d目录下

vim /usr/local/heartbeat/etc/ha.d/haresources
#指定节点主机名,和VIP地址,以双冒号分隔资源,此处以apache为例进行配置
node1.pjy.com  192.168.146.222 apache::/etc/httpd/conf/httpd.conf
  1. 测试

安装阿帕奇进行测试 
yum -y  install  httpd

修改阿帕奇主页,看效果
[root@master ~ ]# echo "<h1>master</h1>" >>/var/www/html/index.html
[root@backup ~]# echo "<h1>backup</h1>" >>/var/www/html/index.html
启动
systemctl start httpd
  1. 启动

chkconfig --add heartbeat	将heartbeat加入系统服务
chkconfig heartbeat on		开机启动
[root@master ha.d]# systemctl start heartbeat.service
[root@master ha.d]#ip a			#查看一下vip

在这里插入图片描述

  1. 访问

访问主设备
在这里插入图片描述
访问热备机
在这里插入图片描述
访问vip

在这里插入图片描述

五、实现vip的主备节点的转移

[root@master ~ ]# cd  /usr/local/heartbeat/share/heartbeat
[root@master heartbeat]# ./hb_standby

在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值