• Nginx版本平滑升级方案


    背景:由于负载均衡测试服务器中nginx版本过低,存在安全漏洞,查询相关修复漏洞资料,需要采取nginx版本升级形式对漏洞进行修复。

    Nginx平滑升级方案

    1、案例采用版本介绍

    旧版本 nginx-1.12.2.tar.gz
    新版本 nginx-1.20.1.tar.gz

    2、nginx-1.12.2版本为当前运行版本


    设置端口8080和对主页index.html进行修改,后续进行平滑升级后,依然可以对其访问。

    3、解压新版本 nginx-1.20.1.tar.gz

    编译安装至旧版本nginx-1.12.2目录下,运行原有nginx.conf配置文件,执行如下:
    ./configure --prefix=/usr/local/nginx-1.12.2  --conf-path=/usr/local/nginx-1.12.2/nginx.conf --pid-path=/usr/local/nginx-1.12.2/nginx.pid --user=ngadm --group=ngadm --with-http_stub_status_module --without-http_rewrite_module 
    
    make && make install
    

    4、完成后1.20.1版本会自动在原sbin目录下生产新的nginx二进制文件,旧的nginx会自动被替换成nginx.old

    5、平滑升级

    Nginx对进程的控制能力非常强大,可以通过信号指令控制进程。常用的信号有:
    • -QUIT,表处理完当前请求后,关闭进程。
    • -HUP,表示重新加载配置,也就是关闭原有的进程,并开启新的工作进程。此操作不会中断用户的访问请求,因此可以通过此信号平滑的重启Nginx。
    • -USR2,用于平滑升级可执行程序。
    • -WINCH,从容关闭工作进程。
    根据nginx进程控制信号,执行如下:
    kill -USR2 38323(旧进程PID为38323)
    ps -ef |grep nginx 
    

    切换为新的master进程,关闭旧的work进程,注意此时旧的master进程依然存在,执行如下:
    kill –WINCH 38323 (旧进程PID为38323)
    ps -ef |grep nginx
    

    检查此时版本
    sbin/nginx -v
    

    已平滑升级成功。
    注意:此时新版本nginx的masterPID为41063,同时也存在旧版本的master进程(旧进程PID为38323),若无需再回退时操作,可执行旧进程退出操作,执行如下:
    kill –QUIT 38323 
    



    回退步骤

    关于回退操作分为两类:

    1、事前对旧版本nginx进行备份,若出现问题,直接将旧版本重新拷贝会/usr/local目录下,重启nginx旧版本操作,执行如下:

    killall nginx
    cp nginx-1.12.2.bak nginx-1.12.2
    /usr/local/nginx-1.12.2/sbin/nginx –c /usr/local/nginx-1.12.2/nginx.conf
    
    检查nginx状态
    ps –ef |grep nginx
    

    2、在新版本nginx的master进程和旧版本的master进程同时存在时,执行如下:

    切换回旧版本的master进程
    kill -HUP 旧masterPID
    

    关闭新版本nginx的master进程,并将原sbin目录下的nginx.old(旧版本nginx二进制文件)重新改回nginx,以便管理nginx。
    kill -WINCH 新masterPID
    kill -QUIT 新masterPID
    cp /usr/local/nginx-1.12.2/sbin/nginx.old /usr/local/nginx-1.12.2/sbin/nginx
    

    再次确认此时nginx版本已退回原版本
    sbin/nginx -v
    

  • 相关阅读:
    2019-1-7 水晶报表
    2018-12-25工作记录 空白行===水晶报表
    2018-7-26-随笔-泛型
    2018-7-20-随笔-转换
    2018-7-18-随笔-接口
    2018-7-17-随笔-params和ref、out用法、事件访问器
    VPS安装metasploit-framework
    Mimiktaz抓取本机密码
    msfvenom生成各类Payload命令
    docker容器开启ssh远程登录
  • 原文地址:https://www.cnblogs.com/liuxc83/p/15241954.html
Copyright © 2020-2023  润新知