Nginx搭建高可用的实现

 更新时间:2024年08月31日 09:49:40   作者:柚子饼干  
高可用HA是分布式系统架构设计中必须考虑的因素之一,本文主要介绍了Nginx搭建高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1、高可用概念

一台nginx宕机了,还可以切换到另一台nginx上继续工作,让用户继续访问后台服务器

2、准备工作

  • (1)需要两台 nginx 服务器
  • (2)需要 keepalived
  • (3)需要虚拟 ip

 3、高可用准备工作

(1)需要两台服务器 192.168.17.129 和 192.168.17.131

(2)在两台服务器安装 nginx

​ 这里如果不想再去安装一遍 Nginx ,可以直接克隆 CentOs 。

(3)在两台服务器安装 keepalived

使用命令安装:yum install keepalived –y

安装之后,在 /etc 里面生成目录 keepalived,有文件 keepalived.conf

4、完成高可用配置(主从配置) 

(1)主机 Nginx 修改/etc/keepalived/keepalivec.conf 配置文件

! Configuration File for keepalived

global_defs {

    notification_email {

        acassen@firewall.loc

        failover@firewall.loc

        sysadmin@firewall.loc
     }

        notification_email_from Alexandre.Cassen@firewall.loc

        smtp_server 192.168.17.129

        smtp_connect_timeout 30

        router_id LVS_DEVEL # 主机名字
}


vrrp_script chk_http_port {
        script "/usr/local/src/nginx_check.sh"
        interval 2 #(检测脚本执行的间隔)
        weight 2 # 权重
   }
        vrrp_instance VI_1 {
        state MASTER # 备份服务器上将 MASTER 改为 BACKUP
        interface ens33 # 网卡
        virtual_router_id 51  # 主、备机的 virtual_router_id 必须相同
        priority 100  # 主、备机取不同的优先级,主机值较大,备份机值较小
        advert_int 1
        authentication {
                auth_type PASS
                auth_pass 1111
        }

        virtual_ipaddress {
             192.168.77.50 # VRRP H 虚拟地址
        }

}

(2)主机 /usr/local/src添加检测脚本:nginx_check.sh

#!/bin/bash
A=`ps -C nginx –no-header | wc -l`
if [ $A -eq 0 ];then
        /usr/local/nginx/sbin/nginx
        sleep 2
        if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
            killall keepalived
        fi
fi

(3) 从机 Nginx修改/etc/keepalived/keepalivec.conf 配置文件

! Configuration File for keepalived

global_defs {

    notification_email {

        acassen@firewall.loc

        failover@firewall.loc

        sysadmin@firewall.loc 

     }

        notification_email_from Alexandre.Cassen@firewall.loc

        smtp_server 192.168.17.129

        smtp_connect_timeout 30

        router_id LVS_DEVEL 
}


vrrp_script chk_http_port {
        script "/usr/local/src/nginx_check.sh"
        interval 2
        weight 2
   }
        vrrp_instance VI_1 {
        state BACKUP # 修改为从机 BACKUP
        interface ens33 # 修改为从机 ip
        virtual_router_id 51
        priority 90 # 优先级比主机低
        advert_int 1
        authentication {
            auth_type PASS
            auth_pass 1111
        }

        virtual_ipaddress {
            192.168.77.50
        }

}

 (4)从机 /usr/local/src添加检测脚本:nginx_check.sh

#!/bin/bash
A=`ps -C nginx –no-header | wc -l`
if [ $A -eq 0 ];then
        /usr/local/nginx/sbin/nginx
        sleep 2
        if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
            killall keepalived
        fi
fi

(5)、启动 Nginx

分别启动主从 Nginx ,切换到/usr/local/nginx/sbin/,执行./nginx

(6)、主从都启动 keepalived

CentoS6启动命令

service keepalived start

Centos7启动命令

systemctl start keepalived.service

(7)、主从都测试 keepalived 是否启动成功 

ps -ef | grep keepalived

5、最终测试 

此时便可以通过虚拟 ip 地址访问到 Nginx 。

 6、将从机nginx和keepalived停掉,继续访问虚拟ip,依旧可以方位到nginx,高可用至此完成。

到此这篇关于Nginx搭建高可用的实现的文章就介绍到这了,更多相关Nginx搭建高可用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解nginx前端根据$remote_addr分发方法

    详解nginx前端根据$remote_addr分发方法

    这篇文章主要介绍了详解nginx前端根据$remote_addr分发方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • nginx地址重定向的方法

    nginx地址重定向的方法

    这篇文章主要介绍了nginx地址重定向的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Nginx 设置域名转发到指定端口的实现方法

    Nginx 设置域名转发到指定端口的实现方法

    这篇文章主要介绍了Nginx 设置域名转发到指定端口的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Nginx制作下载站点的方法步骤

    Nginx制作下载站点的方法步骤

    本文主要介绍了Nginx制作下载站点的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-10-10
  • Nginx配置防盗链保护静态资源的详细教程

    Nginx配置防盗链保护静态资源的详细教程

    防盗链是一种通过检查 HTTP 请求头中的 Referer 字段来限制资源访问的技术,常用于保护图片、视频等静态资源不被其他网站直接引用,以下是Nginx防盗链的原理、配置步骤以及测试方法,帮助你快速配置和验证防盗链功能,需要的朋友可以参考下
    2025-02-02
  • 安装Windows版nginx及部署前端代码并解决刷新出现404问题

    安装Windows版nginx及部署前端代码并解决刷新出现404问题

    这篇文章主要给大家介绍了关于安装Windows版nginx及部署前端代码解决刷新出现404问题的相关资料,使用nginx部署前端项目是一篇非常详细的教程,旨在帮助初学者使用Nginx来部署前端项目,需要的朋友可以参考下
    2023-12-12
  • nginx实现动静分离的方法示例

    nginx实现动静分离的方法示例

    Nginx的静态处理能力很强,但是动态处理能力不足,因此,在企业中常用动静分离技术,本文就详细的介绍一下如何使用,感兴趣的可以了解一下
    2021-11-11
  • Nginx proxy_set_header参数设置

    Nginx proxy_set_header参数设置

    本文主要介绍了Nginx proxy_set_header参数设置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • Linux系统下nginx日志每天定时切割的脚本写法

    Linux系统下nginx日志每天定时切割的脚本写法

    本篇文章给大家分享使用Linux系统自带的命令logrotate对Nginx日志进行切割的方法,对nginx日志切割脚本感兴趣的朋友一起学习吧
    2016-11-11
  • nginx location中uri的截取的实现方法

    nginx location中uri的截取的实现方法

    这篇文章主要介绍了nginx location中uri的截取的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04

最新评论