欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 新车 > nginx高可用集群搭建

nginx高可用集群搭建

2025/5/12 15:24:46 来源:https://blog.csdn.net/maodou95838/article/details/144871206  浏览:    关键词:nginx高可用集群搭建

本文介绍nginx高可用集群的搭建。利用keepalived实时检查nginx进程是否存活、keepalived的虚拟ip技术,达到故障转移的目的。终端用户通过访问虚拟ip,感知不到实际发生的故障。架构图如下:
在这里插入图片描述

0、环境

  • Ubuntu:22.04.2 lts
  • nginx: 1.18.0
  • keepalived:2.2.4
  • 虚拟机:vmware

1、规划

分别新建两个虚拟机,虚拟机的ip和端口规划如下:

序号ipport虚拟ip默认
A192.169.99.10080192.168.99.180
B1921.68.99.12080192.168.99.180

注意:虚拟ip就是我们后期统一的访问地址。

2、结点A安装nginx

sudo apt install nginx

等待安装完成,再启动:

sudo systemctl start nginx

虚拟机验证是否安装成功:

curl http://localhost/

宿主机浏览器验证,http://192.168.99.100/,效果如下:
在这里插入图片描述

宿主机如果访问成功,说明虚拟机1上的nginx搭建成功。

2.1、修改nginx首页

为了便于测试,我们修改一下首页。打开nginx.conf(位于/etc/nginx),找到server 80的配置段,如果找不到80的配置段,仔细看看include配置。通过一系列的跟踪,我这里nginx首页的位置在: /var/www/html/index.nginx-debian.html
打开这个文件,最后加一句,能让我们看出区别就行。
在这里插入图片描述

3、结点B安装nginx

结点B安装nginx和A相同,此处不在赘述。记得安装完成后,通过宿主机浏览器访问一下对应的地址,有成功提示,则说明安装成功。

4、结点A安装keepalived

sudo apt install keepalived

等待安装完成。

4.1、配置

cd /etc/keepalived
# 看一下有没有keepalived.conf文件,没有就新建。sudo vim keepalived.conf 

keepalived.conf文件配置如下:

# Configuration File for keepalived
global_defs {router_id keepalived_01  # 名字自己起
}vrrp_script chk_nginx {# 具体的脚本,后面有具体内容,功能就是检查nginx进程是否存在,不存在就启动script "/etc/keepalived/nginx_check.sh"interval 2 # 2s执行一次 weight -20 # 失败一次 则优先级 -20
}vrrp_instance VI_1 {state MASTER     # 主机interface ens33  # 网卡名字,不知道就ifconfig看一下virtual_router_id 41  # 保证唯一,并且与备机一致priority 100advert_int 1authentication {auth_type PASS   # 验证类型, 与备机一致auth_pass 1234   # 密码, 与备机一致}virtual_ipaddress {192.168.99.180   # 虚拟地址,主、备机入口,必须一致}# 指定脚本track_script {chk_nginx}

nginx_check.sh的脚本代码:

#!/bin/bash
status=$(ps -C nginx --no-heading|wc -l)
if [ "${status}" = "0" ]; then# 尝试启动一次systemctl start nginx# 再次检查ngixn 进程status2=$(ps -C nginx --no-heading|wc -l)if [ "${status2}" = "0"  ]; then# 关闭 keepalived systemctl stop keepalivedfi
fi

4.2、启动keepalived

sudo systemctl start keepalived

5、结点B安装keepalived

结点B和A安装和配置完全一样,此处不再赘述。

6、测试

访问虚拟ip,http://localhost:80/, 效果如下:
在这里插入图片描述
关闭A机的nginx,刷新浏览器,发现效果如上图。原因是,我们的脚本里检查nginx进程是否存在,不存在就重启。我们直接关闭A主机,再次刷新浏览器,效果如下:
在这里插入图片描述
达到了我们故障转移的目的。
OK,就这样了,有问题给我留言,我们共同进步。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词