服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - Nginx - centos环境下nginx高可用集群的搭建指南

centos环境下nginx高可用集群的搭建指南

2022-07-20 13:46程可爱 Nginx

为了防止Nginx单点故障造成服务器瘫痪,本文介绍了Nginx实现高可用集群构建,下面这篇文章主要给大家介绍了关于centos环境下nginx高可用集群的搭建指南,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

1.概述

nginx单机部署时,一旦宕机就会导致整个服务的不可用,导致雪崩式效应。集群式部署是解决单点式雪崩效应的有效方案,本文将在centos环境下,结合Keepalived搭建高可用的nginx集群。

2.CentOS中nginx集群搭建

2.1 集群架构图

centos环境下nginx高可用集群的搭建指南

当客户端请求服务器时,若利用nginx作为代理,则会首先访问nginx服务器,再通过nginx服务器转发到对应的服务器上。上述架构图的原理是:nginx-01和nginx-02是两台nginx服务器,其中nginx-01作为主服务器,通过keepalived与nginx-02形成一个小集群,同时还可以与nginx-03、nginx-04…nginx-n等多台服务器构成集群。当nginx-01因为某些原因宕机而停止服务时,其它nginx服务器会选举一个进行替代,使整个服务保持正常的运行。

2.2 Keepalived

Keepalived是一款基于vrrp协议的高可用集群软件,通过虚拟IP(VIP)对外提供服务,能够实时监控集群中服务器的运行状态并自动进行故障隔离,这些服务器都启动着相同的服务,当主服务器发生故障时,会自动将虚拟IP漂移到备份服务器,从而实现业务高可用。

2.3 集群搭建准备

1.需要两台nginx服务器

2.需要keepalived

3.需要虚拟ip

2.4 集群搭建

2.4.1 安装keepalived

分别在了两台虚拟机上,利用yum指令安装keepalived,指令如下:

?
1
yum install keepalived

可以利用下述指令确认是否安装成功,成功的话则会显示版本号,具体如下:

?
1
rpm -q -a keepalived

centos环境下nginx高可用集群的搭建指南

若非特别指定安装目录,则在centos的安装路径如下:

?
1
/etc/keepalived

2.4.2 配置keepalived.conf

由于是主从配置,在主服务器中,找到keepalived.conf的文件,进行替换,该文件存储于/etc/keepalived路径下,找到后替换为如下内容:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
global_defs {
    notification_email {
      acassen@firewall.loc
      failover@firewall.loc
      sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_ server 192.168.200.129
    smtp_connect_timeout 30
    router_id LVS_DEVEL # LVS_DEVEL这字段在/etc/hosts文件中看;通过它访问到主机
}
 
vrrp_script chk_http_ port {
    script "/usr/local/src/nginx_check.sh"
    interval 2   # (检测脚本执行的间隔)2s
    weight 2  #权重,如果这个脚本检测为真,服务器权重+2
}
 
vrrp_instance VI_1 {
    state MASTER   # 备份服务器上将MASTER 改为BACKUP
    interface ens33 #网卡名称,可查看对应服务器的网卡
    virtual_router_id 51 # 主、备机的virtual_router_id必须相同
    priority 100   #主、备机取不同的优先级,主机值较大,备份机值较小
    advert_int 1    #每隔1s发送一次心跳
    authentication {    # 校验方式, 类型是密码,密码1111
        auth type PASS
        auth pass 1111
    }
    virtual_ipaddress { # 虛拟ip
        192.168.200.50 // VRRP H虛拟ip地址
    }
}

备份服务器的keepalived.conf替换为:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
global_defs {
    notification_email {
      acassen@firewall.loc
      failover@firewall.loc
      sysadmin@firewall.loc
    }
    notification_email_from Alexandre.Cassen@firewall.loc
    smtp_ server 192.168.200.129
    smtp_connect_timeout 30
    router_id LVS_DEVEL # LVS_DEVEL这字段在/etc/hosts文件中看;通过它访问到主机
}
 
vrrp_script chk_http_ port {
    script "/usr/local/src/nginx_check.sh"
    interval 2   # (检测脚本执行的间隔)2s
    weight 2  #权重,如果这个脚本检测为真,服务器权重+2
}
 
vrrp_instance VI_1 {
    state MASTER   # 备份服务器上将MASTER 改为BACKUP
    interface ens33 #网卡名称,可查看对应服务器的网卡
    virtual_router_id 51 # 主、备机的virtual_router_id必须相同
    priority 10   #主、备机取不同的优先级,主机值较大,备份机值较小
    advert_int 1    #每隔1s发送一次心跳
    authentication {    # 校验方式, 类型是密码,密码1111
        auth type PASS
        auth pass 1111
    }
    virtual_ipaddress { # 虛拟ip
        192.168.200.50 // VRRP H虛拟ip地址
    }
}

2.4.3 编写nginx监测脚本

文件保存为bash类型,命名为:nginx_check.sh,也可以自定义文件名称,脚本内容如下:

?
1
2
3
4
5
6
7
8
9
#! /bin/bash
A=`ps -C nginx -no-header | wc - 1`
if [ $A -eq 0];then
    /usr/local/nginx/sbin/nginx
    sleep 2
    if [`ps -C nginx --no-header| wc -1` -eq 0 ];then
        killall keepalived
    fi
fi

脚本可根据喜好来自定义文件夹存放,我这里存放于/usr/local/src/nginx_check.sh,注意一点的是,脚本存放的路径必须与keepalived.conf中配置的脚本文件路径一致。脚本路径更改,则keepalived.conf中的路径也要修改。

2.4.4 启动keepalived

分别在两台服务器上执行如下指令:

?
1
systemctl start keepalived.service

查看keepalived进程是否运行,

?
1
ps -ef|grep keepalived

若运行成功,则会出现以下界面:

centos环境下nginx高可用集群的搭建指南

2.4.5 启动nginx

在主服务器和从服务器上,分别利用nginx启动命令启动nginx服务,在nginx安装目录下执行如下指令:

?
1
./nginx

2.4.6 测试

1测试方案如下

(1)关闭主服务器上的nginx

在nginx安装目录下执行如下指令:

?
1
./nginx -s stop

(2)访问虚拟ip

在外部浏览器输入:

192.168.200.50:80

若能正常弹出nginx欢迎页面,则表明集群搭建成功,主服务器nginx宕机后,从服务器会代替服务。

3.小结

1.本文利用两台服务器模拟nginx集群状态,当nginx master宕机后,从服务器会代替服务;

2.模拟集群关键三要素:keepalived、监测脚本、虚拟ip;

3.在某些情况下,需要为脚本添加可执行权限,指令如下:

?
1
chmod +x /usr/local/src/nginx_check.sh #脚本地址根据实际情况而定

4.参考文献

1.https://www.bilibili.com/video/BV1zJ411w7SV?t=85&p=1

2.https://juejin.cn/post/6844903956192182285

3.https://juejin.cn/post/6844903929738854413

4.https://juejin.cn/post/6844903585449246733

总结

到此这篇关于centos环境下nginx高可用集群搭建的文章就介绍到这了,更多相关nginx高可用集群搭建内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/qq_33479841/article/details/110939481

延伸 · 阅读

精彩推荐
  • Nginx详解nginx静态资源服务器简单配置

    详解nginx静态资源服务器简单配置

    这篇文章主要介绍了详解nginx静态资源服务器简单配置,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 ...

    wllllllllllllllll5592019-11-28
  • Nginxnginx上部署react项目的实例方法

    nginx上部署react项目的实例方法

    今天小编就为大家分享一篇关于nginx上部署react项目的实例方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编...

    vVvlife5552020-01-04
  • Nginx全面解析Nginx到底能做什么

    全面解析Nginx到底能做什么

    本文只针对Nginx在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,具体内容详情大家...

    Raye4132019-12-29
  • NginxNginx 为什么是高效服务器,架构设计是怎样的?

    Nginx 为什么是高效服务器,架构设计是怎样的?

    Nginx 是俄罗斯人编写的十分轻量级的 HTTP 服务器,Nginx,它的发音为“engine X”,是一个高性能的 HTTP 和反向代理服务器,同时也是一个 IMAP/POP3/SMTP 代理服务...

    服务器技术网3752020-10-29
  • Nginxnginx中一个请求的count计数跟踪浅析

    nginx中一个请求的count计数跟踪浅析

    这篇文章主要给大家介绍了关于nginx中一个请求的count计数跟踪的相关资料,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价...

    wwyyxx269332022-01-18
  • Nginx深入分析nginx+php-fpm服务HTTP状态码502

    深入分析nginx+php-fpm服务HTTP状态码502

    这篇文章主要介绍了深入分析nginx+php-fpm服务HTTP状态码502,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋...

    leezhxing5562019-09-20
  • Nginxnginx将泛解析的匹配域名绑定到子目录配置方法

    nginx将泛解析的匹配域名绑定到子目录配置方法

    这篇文章主要介绍了nginx将泛解析的匹配域名绑定到子目录配置方法,需要的朋友可以参考下 ...

    zxhpj2462019-10-17
  • Nginx详解Nginx 对访问量的控制

    详解Nginx 对访问量的控制

    本文详解的介绍了 Nginx 的 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模块,对请求访问量进行控制。非常具有实用价值,需要的朋友可以参考下 ...

    路飞君12344562020-01-02