一 前期准备

1.1 依赖准备

编译安装需要依赖的包,如gcc等:
yum -y install gcc gcc-c++ make glibc kernel-devel kernel-headers autoconf automake libtool glib2-devel libxml2 libxml2-devel libxslt-devel libtool-ltdl-devel wget asciidoc libuuid-devel bzip2 bzip2-devel e2fsprogs-devel net-snmp

1.2 环境准备

防火墙及SELinux关闭;
时钟同步,ntp配置;
相关主机名配置,如下所示:
节点/主机名
业务IP
心跳IP
master1.yewu.com
192.168.88.100
192.168.77.100
master2.yewu.com
192.168.88.101
192.168.77.101
vip
192.168.88.88
 # hostnamectl set-hostname  master1.yewu.com
# hostnamectl set-hostname master2.yewu.com #分别配置主机名
# /etc/hosts
127.0.0.1 localhost.localdomain localhost
#public ip #业务host解析
192.168.88.100 master1.yewu.com master1
192.168.88.101 master2.yewu.com master2 #private ip #Heartbeat心跳解析
192.168.77.100 master1-private.ha.com master1-private
192.168.77.101 master2-private.ha.com master2-private
 
提示:内网环境为了方便解析,在所有节点分别对业务和用于检测心跳的地址添加解析。
 [root@master1 ~]# ifconfig |grep eth[0-9] -A1		#确认相应IP地址
配置互免秘钥:(建议项)
 [root@master1 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
[root@master1 ~]# ssh-copy-id -i ./.ssh/id_rsa.pub root@192.168.88.101
[root@master2 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
[root@master2 ~]# ssh-copy-id -i ./.ssh/id_rsa.pub root@192.168.88.100
 

二 正式安装Heartbeat

2.1 下载相应包

所有相关包见:http://linux-ha.org/wiki/Download
 [root@master1 ~]# wget http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2
[root@master1 ~]# wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2
[root@master1 ~]# wget https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz
 
提示:master2节点参考以上操作即可。

2.2 安装cluster-glue

 [root@master1 ~]# groupadd haclient
[root@master1 ~]# useradd -g haclient hacluster
[root@master1 ~]# tar xf 0a7add1d9996.tar.bz2
[root@master1 ~]# mv Reusable-Cluster-Components-glue--0a7add1d9996/ cluster_glue
[root@master1 ~]# cd cluster_glue/
[root@master1 cluster_glue]# ./autogen.sh
[root@master1 cluster_glue]# ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
 
 [root@master1 cluster_glue]# make && make install
提示:heartbeat依赖于cluster-glue,因此必须先安装cluster-glue;master2节点参考以上操作即可。

2.3 安装Resource Agents

 [root@master1 ~]# tar xf v3.9.6.tar.gz
[root@master1 ~]# cd resource-agents-3.9.6/
[root@master1 resource-agents-3.9.6]# ./autogen.sh
[root@master1 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@master1 resource-agents-3.9.6]# make && make install
提示:master2节点参考以上操作即可;
若提示configure: error: C compiler cannot create executables或类似Cluster Glue等so文件未找到,可通过以下方式解决:
 ln -s  /usr/local/heartbeat/lib/* /lib/
ln -s /usr/local/heartbeat/lib/* /lib64/ #将生成的动态库,添加快捷方式到/lib下
 

2.4 安装Heartbeat

 [root@master1 ~]# tar xf 958e11be8686.tar.bz2
[root@master1 ~]# export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
[root@master1 ~]# cd Heartbeat-3-0-958e11be8686/
[root@master1 Heartbeat-3-0-958e11be8686]# ./bootstrap
[root@master1 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@master1 Heartbeat-3-0-958e11be8686]# make && make install
提示:master2节点参考以上操作即可;
若提示configure: error: in `/root/Heartbeat-3-0-958e11be8686',可通过以下方式解决,然后再次configure即可。:
export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"
make
提示:若提示glue_config.h:105:1: error: “HA_HBCONF_DIR” redefined,是由于glue和heartbeat的版本不兼容引起,可通过以下方式解决:
删除或注释掉/usr/local/heartbeat/include/heartbeat/glue_config.h的最后一行
错误2: gmake[1]: *** [strlcpy.lo] Error 1
解决:将 /usr/local/heartbeat/include/heartbeat/glue_config.h的105行 #define  HA_HBCONF_DIR "/usr/local/heartbeat/etc/ha.d" 删除或注释掉

2.5 Heartbeat优化

 [root@master1 ~]# cp /root/Heartbeat-3-0-958e11be8686/doc/{ha.cf,haresources,authkeys} \
/usr/local/heartbeat/etc/ha.d/ #复制相关配置文件
[root@master1 ~]# chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys
[root@master1 ~]# mkdir -pv /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/
[root@master1 ~]# cp /usr/lib/ocf/lib/heartbeat/ocf-* \
/usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/
[root@master1 ~]# ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/* \
/usr/local/heartbeat/lib/heartbeat/plugins/RAExec/
[root@master1 ~]# ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* \
/usr/local/heartbeat/lib/heartbeat/plugins/
[root@master1 ~]# chkconfig --add heartbeat #CentOS7可省略
[root@master1 ~]# systemctl enable heartbeat.service
[root@master1 ~]# systemctl start heartbeat.service
 
提示:master2节点参考以上操作即可。

三 配置Heartbeat

3.1 安装httpd服务

 [root@master1 ~]# yum -y install httpd
[root@master1 ~]# systemctl stop httpd
[root@master1 ~]# systemctl disable httpd #master2也需要安装
[root@master1 ~]# echo "master1.yewu.com" >>/var/www/html/index.html
[root@master2 ~]# echo "master2.yewu.com" >>/var/www/html/index.html
 
提示:关闭httpd启动及自启动,从而使httpd基于Heartbeat资源形式唤醒。

3.2 配置authkeys

 [root@master1 ~]# vi /usr/local/heartbeat/etc/ha.d/authkeys
auth 3
3 md5 Yes!
 

3.3 配置Heartbeat

 [root@master1 ~]# vi /usr/local/heartbeat/etc/ha.d/ha.cf
logfile /var/log/ha-log #记录Heartbeat其他相关日志信息
logfacility local0 #设置heartbeat的日志,这里用的是系统日志
keepalive 2 #设定心跳(监测)时间间隔为2秒
deadtime 15 #宣告死亡时间
warntime 10 #心跳延时时间
initdead 60 #初始化时间
udpport 694 #用于通信的UDP端口
bcast eth1 #接受广播心跳的网卡接口
ucast eth1 192.168.77.101 #置对方机器心跳检测的IP
auto_failback off #关闭自动切回恢复正常的主节点
node master1.yewu.com #集群节点的名称,必须匹配uname -n的结果。
node master2.yewu.com
ping 192.168.88.1
respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail
 
注意: 主机和备机之间进行心跳检测,当备机无法检测到主机的心跳,则开启vip;
如果主机和备机都没有挂掉,由于通信问题导致相互无法连接,则会出现裂脑,即主备都对外声明了vip,导致数据出现故障 ,因此建议主机和备机间应该采用专门只是用于检测心跳的网卡(网络),其他数据(业务)网络应该独立于此心跳网络。

3.4 配置haresources

 [root@master1 ~]# ll /usr/local/heartbeat/etc/ha.d/resource.d/	#查看现有资源类型
[root@master1 ~]# vi /usr/local/heartbeat/etc/ha.d/haresources
master1.yewu.com IPaddr::192.168.88.88/24/eth0 apache
[root@master1 ~]# scp /usr/local/heartbeat/etc/ha.d/{ha.cf,haresources,authkeys} 192.168.88.101:/usr/local/heartbeat/etc/ha.d/ #将所有配置复制至master2节点
[root@master2 ~]# vi /usr/local/heartbeat/etc/ha.d/ha.cf
ucast eth1 192.168.77.100 #置对方机器心跳检测的IP

四 验证Heartbeat

4.1 master1单节点启动验证

 [root@master1 ~]# systemctl start heartbeat.service
[root@master1 ~]# tail -f /var/log/ha-log #验证日志
[root@master1 ~]# ifconfig #查看活的的vip
浏览器访问:http://192.168.88.88/

4.2 master2启动并验证

 [root@master2 ~]# systemctl start heartbeat.service
[root@master1 ~]# tail -f /var/log/ha-log #观察master2节点启动后的master1日志
 
浏览器访问:http://192.168.88.88/
 [root@master1 ~]# shutdownr			#模拟master1节点宕机
[root@master2 ~]# ifconfig #master2节点会自动接管vip
 
浏览器访问:http://192.168.88.88/ #相关vip已经飘移至mster2
提示:由于配置了auto_failback off,在master1节点恢复后资源依旧会保留至master2节点;
对于集群上节点之间的切换实质上是资源的接管,通常包括VIP分配回收,磁盘卸载挂载,以及服务的启停等;
对于备用节点,其相应的共享磁盘状态为不可读写,服务处于停止状态;
Heartbeat现有项目已拆分,建议使用pacemaker+corosync,可参考RH436相关文档。

002.Heartbeat部署及httpd高可用的更多相关文章

  1. Heartbeat实现web服务器高可用

    一.Heartbeat概述: Heartbeat的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报 ...

  2. 配置:heartbeat+nginx+mysqld+drbd高可用笔记(OK)

    参考资料:http://www.centoscn.com/CentosServer/cluster/2015/0605/5604.html   背景需求: 使用heartbeat来做HA高可用,并且把 ...

  3. 使用二进制的方式部署 K8S-1.16 高可用集群

    一.项目介绍 项目致力于让有意向使用原生kubernetes集群的企业或个人,可以方便的.系统的使用二进制的方式手工搭建kubernetes高可用集群.并且让相关的人员可以更好的理解kubernete ...

  4. 用Kolla在阿里云部署10节点高可用OpenStack

    为展现 Kolla 的真正实力,我在阿里云使用 Ansible 自动创建 10 台虚机,部署一套多节点高可用 OpenStack 集群! 前言 上次 Kolla 已经表示了要打 10 个的愿望,这次我 ...

  5. 使用kubeadm部署一套高可用k8s集群

    使用kubeadm部署一套高可用k8s集群 有疑问的地方可以看官方文档 准备环境 我的机器如下, 系统为ubuntu20.04, kubernetes版本1.21.0 hostname IP 硬件配置 ...

  6. Heartbeat实现集群高可用热备

    公司最近需要针对服务器实现热可用热备,这几天也一直在琢磨这个方面的东西,今天做了一些Heartbeat方面的工作,在此记录下来,给需要的人以参考. Heartbeat 项目是 Linux-HA 工程的 ...

  7. MariaDB Galera Cluster 部署 + keepalived实现高可用

    MariaDB Galera Cluster 部署 MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力 ...

  8. kubeadm部署k8s1.9高可用集群--4部署master节点

    部署master节点 kubernetes master 节点包含的组件: kube-apiserver kube-scheduler kube-controller-manager 本文档介绍部署一 ...

  9. 008.Kubernetes二进制部署Nginx实现高可用

    一 Nginx代理实现kube-apiserver高可用 1.1 Nginx实现高可用 基于 nginx 代理的 kube-apiserver 高可用方案. 控制节点的 kube-controller ...

随机推荐

  1. js中,for循环里面放ajax,ajax访问不到变量以及每次循环获取不到数据问题总结

    想在点击"终端控制"的时候能够开启多个窗口对多个终端进行管理: /**提交事件**/ $("#terminalControl").bind("clic ...

  2. 2017-2018-2 20155303『网络对抗技术』Exp8:Web基础

    2017-2018-2 『网络对抗技术』Exp8:Web基础 --------CONTENTS-------- 一.原理与实践说明 1.实践具体要求 2.基础问题回答 二.实践过程记录 1.Web前端 ...

  3. Struts2自定义拦截器处理全局异常

    今天在整理之前的项目的时候想着有的action层没有做异常处理,于是想着自定义拦截器处理一下未拦截的异常. 代码: package cn.xm.exam.action.safeHat; import ...

  4. aircrack-ng笔记

    开启监听: airmon-ng start wlan0 抓包: airodump-ng wlan0mon 查看wifi ^C结束 airodump-ng -c 6 --bssid C8:3A:35:3 ...

  5. python正则表达式一[转]

    原文:http://blog.jobbole.com/74844/ 作为一个概念而言,正则表达式对于Python来说并不是独有的.但是,Python中的正则表达式在实际使用过程中还是有一些细小的差别. ...

  6. MoveIt! 源安装

    rosdep update sudo apt-get update sudo apt-get dist-upgrade sudo apt-get install python-wstool pytho ...

  7. Python爬虫-爬取糗事百科段子

    闲来无事,学学python爬虫. 在正式学爬虫前,简单学习了下HTML和CSS,了解了网页的基本结构后,更加快速入门. 1.获取糗事百科url http://www.qiushibaike.com/h ...

  8. div里 datapicker显示异常的情况之一

    现象:datepicker控价显示一半 因为Div高度太小所以设置一个最小高度min-height这样就可以让时间控价显示完整了.

  9. java并发编程系列七:volatile和sinchronized底层实现原理

    一.线程安全 1.  怎样让多线程下的类安全起来 无状态.加锁.让类不可变.栈封闭.安全的发布对象 2. 死锁 2.1 死锁概念及解决死锁的原则 一定发生在多个线程争夺多个资源里的情况下,发生的原因是 ...

  10. zabbix系列(九)zabbix3.0实现自动触发zabbix-agent端shell脚本任务

    zabbix实现自动触发远程脚本执行命令 Zabbix触发器(trigger)达到阀值后会有动作(action)执行:发送告警信息或执行远程命令 环境 Server:基于centos6.5 final ...