大略的讲,高可用(热备)便是一种利用故障点转移的办法来保障业务连续性。
其业务的规复不是在原做事器,而是在备用做事器。
热备不具有修复故障做事器的功能,而只是将故障隔离。

热备份指的是high available即高可用,而备份指的是Backup,即数据备份的一种,这是两种不同的观点,应对的产品也是两种功能上完备不同的产品。
热备份紧张保障业务的连续性,实现的方法是故障点的转移,而备份,紧张目的是(为了防止数据丢失,而做的一份拷贝)以是备份强调的是数据规复,而不是运用的故障转移。

1.2 Heartbeat事理

heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗余链路,它们之间相互发送报文来见告对方自己当前的状态,如果在指定的韶光内未收到对方发送的报文,那么就认为对方失落效,这时需启动资源接管模块来接管运行在对方主机上的资源或者做事。

小白入门必知必会NginxHeartbeat双机热备安装

1.3 运用处景

一台web做事器一天24小时供应做事,难免会存在做事挂掉或做事器宕机的情形,那么用户就访问不了做事了,这肯定是接管不了的。

但如果有2台做事器,server1对外供应web做事,server2作为备用,如果server1挂掉,那么server2急速替代server1去供应做事,这样对用户来说是无感知的。

但是这里有个问题,server1的ip是 192.168.0.99,server2的ip是192.168.0.100,显然向用户供应server1或server2的ip地址是不可行的,由于用户总不能去切换ip来访问。

这时heartbeat或keepalived可以供应一个虚拟VIP:192.168.0.97,用户只须要访问192.168.0.97,当server1供应做事时,VIP 会漂移到server1做事器上,当server2供应做事时,VIP会漂移到server2做事器上,这样就可以让用户通过访问192.168.0.97来获取web做事,纵然server1或server2做事器切换也不影响用户的正常访问。

1.4 官网下载地址

http://www.linux-ha.org/wiki/Download

下面利用 heartbeat 来做 HA 集群,并且把 nginx 做事作为 HA 对应的做事。

二 环境准备

2.1 实验环境准备

server1:

主机名:heartbeat01操作系统:CentOS7.8 64位IP地址:192.168.0.99

server2:

主机名:heartbeat02操作系统:CentOS7.8 64位IP地址:192.168.0.100

虚拟VIP:

VIP:192.168.0.97

2.2 设置主机名

server1设置hostname

hostnamectl set-hostname heartbeat01

退出重新登录

server2设置hostname

hostnamectl set-hostname heartbeat02

退出重新登录

2.3 关闭防火墙和selinux(2台都操作)

关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

关闭selinux:

setenforce 0

sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

2.4 配置hosts文件(2台都操作)

cat >> /etc/hosts <<EOF

192.168.0.97 VIP

192.168.0.99 heartbeat01

192.168.0.100 heartbeat02

EOF

2.5 安装epel扩展源 (2台都操作)

yum install -y epel-release

2.6 安装编译环境(2台都操作)

yum install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-devel bzip2 bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel make wget docbook-dtds docbook-style-xsl libaio-devel asciidoc -y

2.7 创建用户及组(2台都操作)

groupadd haclient

useradd -g haclient hacluster -M -s /sbin/nologin

2.8 安装nginx(2台都操作)

yum install nginx -y

启动nginx

systemctl start nginx

三 Heartbeat安装

Heartbeat3.x分为三部分:glue、agents、heartbeat

3.1 编译安装Cluster Glue(2台都操作)

下载安装包并解压缩

cd /web/

wget http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2

tar xf 0a7add1d9996.tar.bz2

cd Reusable-Cluster-Components-glue--0a7add1d9996/

./autogen.sh

编译

./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'

安装

make && make install

3.2 编译安装Resource Agents(2台都操作)

下载安装包并解压

cd /web

wget https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz

tar xf v3.9.6.tar.gz

cd resource-agents-3.9.6/

./autogen.sh

编译

./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'

安装

make && make install

3.3 编译安装Heartbeat3.0.6(2台都操作)

下载安装包并解压

cd /web

wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2

tar xf 958e11be8686.tar.bz2

cd Heartbeat-3-0-958e11be8686/

./bootstrap

设置环境变量

export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"

编译

./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'

安装

make && make install

拷贝配置文件

cp doc/{ha.cf,haresources,authkeys} /usr/local/heartbeat/etc/ha.d/

设置开机自启动

chkconfig --add heartbeat

chkconfig heartbeat on

授权文件权限

chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys

创建目录

mkdir -pv /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/

拷贝配置文件

cp /usr/lib/ocf/lib/heartbeat/ocf- /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/

设置软链接

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/

3.4 heartbeat01修正配置文件如下图内容

cat /usr/local/heartbeat/etc/ha.d/ha.cf |grep ^[^#]

3.5 heartbeat02修正配置文件如下图内容

cat /usr/local/heartbeat/etc/ha.d/ha.cf |grep ^[^#]

3.6 配置haresources资源文件(2台都操作)

cat /usr/local/heartbeat/etc/ha.d/haresources |grep -v "#"

heartbeat01和heartbeat02这部分应完备相同。

上图阐明:

heartbeat01是HA集群的主节点,IPaddr为heartbeat自带的实行脚本,heartbeat首先将实行/etc/ha.d/resource.d/IPaddr 192.168.0.97/23/ens3 start的操作,即虚拟一个子网掩码为255.255.254.0,IP为192.168.0.97的地址,此IP为heartbeat对外供应做事的网络地址,同时指定此IP利用的网络接口。

3.7 配置authkeys心跳密钥验证文件(2台都操作)

grep -v "#" /usr/local/heartbeat/etc/ha.d/authkeys

注:

auth后填序号,可任意填写,但第二行开头必须为序号名,然后为验证办法,支持三种( crc md5 sha1 )办法验证,末了面是自定义密钥。

3.8 启动heartbeat做事

先启动heartbeat01,再启动heartbeat02

service heartbeat start

查看日志

tailf /var/log/ha-log

3.9 测试

heartbeat01上利用ifconfig命令查看是否有接口 ens3:0

为了区分双机热备效果,我将两台nginx的index.html页面内容稍作修正。

此时访问,创造是heartbeat01供应做事,如下图所示

http://192.168.0.97

现将heartbeat01上的heartbeat做事停滞

service heartbeat stop

此时ifconfig创造VIP已漂移至heartbeat02上

再访问,创造是heartbeat02供应做事,如下图所示

http://192.168.0.97

至此,基于Nginx+Heartbeat的高可用集群安装完成。