首页 » Linux » CentOS » nginx通过keepalived实现高可用(主备方式)

nginx通过keepalived实现高可用(主备方式)

 

keepalived可用于多种软件的高可用实现,用来解决单点故障问题,同时在主、备服务器部署相同nginx,通过一个虚拟IP地址(即VIP)对外提供服务,当主服务器的nginx出现故障时,虚拟IP就会自动漂移到备服务器上,整个漂移过程是自动实现的,无需人工干预,从而保障了服务的高可用性。

本文以主备方式,抢占模式(如果使用非抢占模式,仅需将文中两台主机keepalived配置都改为state BACKUP)。

注意:请同步时间,保持时间一致性,自行关闭或配置防火墙和selinux规则

环境准备:

至少两台服务器,3个IP地址,本文操作系统环境为CentOS7.9,keepalived版本1.3.5,nginx版本1.20.2

10.10.10.11 MASTER服务器IP
10.10.10.12 BACKUP服务器IP
10.10.10.10 VIP虚拟IP

访问流程图如下:

1、安装nginx

在两台服务器上同时安装好nginx,我这里通过wlnmp一键包进行安装

2、修改默认index文件

为了访问区分演示,修改index.html文件,其中MASTER服务器index.html修改为10.10.10.11,BACKUP服务器index.html修改为10.10.10.12

3、安装keepalived

分别在两台服务器上安装keepalived,我这里使用wlnmp一键包提供的新版keepalived

如果前面添加这个源了,这里就不用执行了。

4、创建nginx脚本文件

在两台主机上分别创建nginx脚本文件,wlnmp一键包安装的keepalived默认提供了一个脚本,结合实际情况更改

赋予执行权限

注:该脚本判断nginx启动是否正常,如果nginx的进程数为0,表示nginx服务异常,则启动nginx(我这里的nginx启动命令是 /etc/init.d/nginx start),睡眠延迟2秒,防止资源抢占,然后再次判断nginx是否正常,如果还不正常,则停止keepalived,停止后进行IP漂移。

5、MASTER服务器配置

MASTER服务器keepalived配置文件如下

6、BACKUP服务器配置

BACKUP服务器keepalived配置文件如下

7、启动keepalived

两台主机分别启动keepalived,并配置开机自启

8、验证环节开始

8-1、网络验证

拔掉MASTER网线后,访问VIP地址10.10.10.10,此时可看到显示内容变成10.10.10.12即BACKUP主机,IP漂移成功。
重新插回MASTER的网线后,访问VIP地址10.10.10.10,此时看到显示内容变成10.10.10.11,即MASTER主机,当MASTER恢复后,IP自动漂移回来了。

8-2、服务宕机验证

停止MASTER上的nginx服务,访问VIP地址10.10.10.10,此时看到访问显示地址依旧是10.10.10.11即MASTER主机。
当MASTER上的nginx服务停止后,keepalived通过nginx脚本重新启动了nginx服务,VIP没有触发漂移操作。

8-3、服务器重启验证

直接poweroff关闭MASTER机器,主机关闭后,访问VIP地址10.10.10.10,此时看到访问显示地址是10.10.10.12即BACKUP主机,IP漂移成功。

启动关闭的MASTER机器,启动成功后,访问VIP地址10.10.10.10,此时可看到访问显示地址是10.10.10.11即MASTER主机,IP自动漂移回来了。

原文链接:nginx通过keepalived实现高可用(主备方式),转载请注明来源!

2