天天看点

小白入门必知必会-Nginx+Heartbeat双机热备安装

作者:霸都运维

一 基础介绍

1.1 概念

简单的讲,高可用(热备)就是一种利用故障点转移的方式来保障业务连续性。其业务的恢复不是在原服务器,而是在备用服务器。热备不具有修复故障服务器的功能,而只是将故障隔离。

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

1.2 Heartbeat原理

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

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

小白入门必知必会-Nginx+Heartbeat双机热备安装

编译

./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
小白入门必知必会-Nginx+Heartbeat双机热备安装

安装

make && make install
小白入门必知必会-Nginx+Heartbeat双机热备安装

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

小白入门必知必会-Nginx+Heartbeat双机热备安装

编译

./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'
小白入门必知必会-Nginx+Heartbeat双机热备安装

安装

make && make install
小白入门必知必会-Nginx+Heartbeat双机热备安装

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

小白入门必知必会-Nginx+Heartbeat双机热备安装

设置环境变量

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'
小白入门必知必会-Nginx+Heartbeat双机热备安装

安装

make && make install
小白入门必知必会-Nginx+Heartbeat双机热备安装

拷贝配置文件

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/
小白入门必知必会-Nginx+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/

小白入门必知必会-Nginx+Heartbeat双机热备安装

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

cat /usr/local/heartbeat/etc/ha.d/ha.cf |grep ^[^#]
小白入门必知必会-Nginx+Heartbeat双机热备安装

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

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

小白入门必知必会-Nginx+Heartbeat双机热备安装

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

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

小白入门必知必会-Nginx+Heartbeat双机热备安装

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

小白入门必知必会-Nginx+Heartbeat双机热备安装

注:

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

3.8 启动heartbeat服务

先启动heartbeat01,再启动heartbeat02

service heartbeat start

查看日志

tailf /var/log/ha-log

小白入门必知必会-Nginx+Heartbeat双机热备安装

3.9 测试

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

小白入门必知必会-Nginx+Heartbeat双机热备安装

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

此时访问,发现是heartbeat01提供服务,如下图所示

http://192.168.0.97

小白入门必知必会-Nginx+Heartbeat双机热备安装

现将heartbeat01上的heartbeat服务停止

service heartbeat stop

此时ifconfig发现VIP已漂移至heartbeat02上

小白入门必知必会-Nginx+Heartbeat双机热备安装

再访问,发现是heartbeat02提供服务,如下图所示

http://192.168.0.97

小白入门必知必会-Nginx+Heartbeat双机热备安装

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

继续阅读