大略的讲,高可用(热备)便是一种利用故障点转移的办法来保障业务连续性。其业务的规复不是在原做事器,而是在备用做事器。热备不具有修复故障做事器的功能,而只是将故障隔离。
热备份指的是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.99server2:
主机名:heartbeat02操作系统:CentOS7.8 64位IP地址:192.168.0.100虚拟VIP:
VIP:192.168.0.972.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的高可用集群安装完成。