前言:
此时兄弟们对“cluster集群nginx”大约比较着重,看官们都需要了解一些“cluster集群nginx”的相关内容。那么小编在网络上网罗了一些有关“cluster集群nginx””的相关知识,希望大家能喜欢,我们一起来了解一下吧!一 基础介绍
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 官网下载地址
下面使用 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
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
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
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提供服务,如下图所示
现将heartbeat01上的heartbeat服务停止
service heartbeat stop
此时ifconfig发现VIP已漂移至heartbeat02上
再访问,发现是heartbeat02提供服务,如下图所示
至此,基于Nginx+Heartbeat的高可用集群安装完成。
标签: #cluster集群nginx #centos串口驱动开发 #一般使用几台nginx #linuxhosts文件nginx #heartbeatnginx