Linux版本中Nginx平滑升级与回退

目录
  • 一、平滑升级概述
    • 1.平滑升级的定义
    • 2.平滑升级的思路
    • (1)关于版本和备份
    • (2)向旧的Nginx的master进程发送USR2信号
    • (3)向旧的master进程发送winch信号,旧的worker子进程退出
    • (4)向旧master进程发送quit信号,旧的master进程就退出
    • 3.平滑升级的信号
    • 4.平滑升级示意图
  • 二、Nginx平滑升级
    • 1.安装依赖
    • 2.编译并安装nginx
    • 3.备份旧的Nginx二进制
    • 4.向旧的master发送USR2信号
    • 5.向旧master发送winch信号
    • 6.向旧master发送QUIT信号
  • 三、Nginx平滑回退
    • 1.思路
    • 2.替换nginx二进制文件
    • 3.向旧的master发送USR2信号
    • 4.向旧的master发送WINCH信号
    • 5.向旧的master发送QUIT信号

一、平滑升级概述

1.平滑升级的定义

在进行服务版本升级的时候,对于用户访问体验无感知,不会造成服务中断。

2.平滑升级的思路

(1)关于版本和备份

下载新版本nginx了解原旧版nginx编译参数将旧nginx二进制文件进行备份,然后替换成新的nginx二进制文件

(2)向旧的Nginx的master进程发送USR2信号

将旧的master进程的pid文件添加后缀.oldbin,master进程会用新nginx二进制文件启动新的master进程

(3)向旧的master进程发送winch信号,旧的worker子进程退出

(4)向旧master进程发送quit信号,旧的master进程就退出

3.平滑升级的信号


信号


含义


QUIT


关闭


HUP


重启


USR1


重新打开日志文件,repon


USR2


平滑升级可执行的二进制程序


WINCH


平滑关闭worker进程

4.平滑升级示意图

二、Nginx平滑升级

1.安装依赖

yum install gcc redhat-rpm-config \ libxslt-devel gd-devel perl-ExtUtils-Embed \ geoip-devel gperftools-devel pcre-devel openssl-devel -y

2.编译并安装nginx

root@web ~] wgethttp://nginx.org/download/nginx-1.16.1.tar.gz

[root@web ~] tar xf nginx-1.16.1.tar.gz

[root@web ~] cd nginx-1.16.1/

[root@web ~] ./configure --

[root@web ~] make

3.备份旧的Nginx二进制

[root@web nginx-1.16.1] mv /usr/sbin/nginx/usr/sbin/nginx.old
[root@web nginx-1.16.1] cp objs/nginx/usr/sbin/nginx

4.向旧的master发送USR2信号

[root@web nginx-1.16.1] ps -ef |grep nginx
[root@web nginx-1.16.1] kill -USR2 20848
[root@web nginx-1.16.1] cat /var/run/nginx.pid.oldbin 20848
[root@web nginx-1.16.1] ps -ef |grep nginx

5.向旧master发送winch信号

[root@web nginx-1.16.1]# kill -WINCH 20848
[root@web nginx-1.16.1]# ps -ef |grep nginx

6.向旧master发送QUIT信号

[root@web nginx-1.16.1] kill -QUIT 20848
[root@web nginx-1.16.1] ps -ef |grep nginx

三、Nginx平滑回退

1.思路

替换nginx二进制文件,向旧的master发送USR2信号,向旧的master发送WINCH,向旧的master发送QUIT

2.替换nginx二进制文件

[root@web ~] mv /usr/sbin/nginx/usr/sbin/nginx-1.16
[root@web ~] mv /usr/sbin/nginx.old/usr/sbin/nginx

3.向旧的master发送USR2信号

[root@web ~] ps -ef |grep nginx
[root@web ~] kill -USR2 24971
[root@web ~] ps -ef |grep nginx

4.向旧的master发送WINCH信号

[root@web ~] kill -WINCH 24971
[root@web ~] ps -ef |grep nginx

5.向旧的master发送QUIT信号

[root@web ~] kill -QUIT 24971
[root@web ~] ps -ef |grep nginx

到此这篇关于Linux版本中Nginx平滑升级与回退的文章就介绍到这了,更多相关Nginx平滑升级内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • nginx编译安装后对nginx进行平滑升级的方法

    nginx编译安装后用了一段时间后发现当前版本有漏洞或需要新的功能时就需要对当前nginx版本进行版本升级,但又不能影响正常的使用,所以这时就需到对nginx的平滑升级,更新到最新版本了. 本文演示的是nginx-1.13.6升级到nginx-1.13.12的过程,其他版本也适用. 一.nginx新版的下载 下载页面:http://nginx.org/en/download.html wget -c http://nginx.org/download/nginx-1.13.12.tar.gz 二

  • 1分钟搞定Nginx版本的平滑升级与回滚的方法

    今天,我们来聊一聊,在企业实际生产环境中经常遇到的一个情况,升级Nginx到新的版本和如何回滚至旧版本. 1.环境介绍 今天准备的两个nginx版本如下: [root@nginx ~]# cd /download/nginx/ [root@nginx nginx]# ll total 1952 -rw-r--r-- 1 root root 981687 Oct 17 2017 nginx-1.12.2.tar.gz -rw-r--r-- 1 root root 1015384 Dec 4 09:

  • Nginx1.8.0版本平滑升级新版本1.9.7

    首先查看现在环境nginx的版本为1.8.0 编译的参数只指定了安装路径: 复制代码 代码如下: [root@localhost sbin]# ./nginx -V nginx version: nginx/1.8.0 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-11) (GCC) configure arguments: --prefix=/usr/local/nginx 平滑升级步骤如下: 下载nginx1.9.7版本,解压并进入解压后的目录 复制代

  • Linux版本中Nginx平滑升级与回退

    目录 一.平滑升级概述 1.平滑升级的定义 2.平滑升级的思路 (1)关于版本和备份 (2)向旧的Nginx的master进程发送USR2信号 (3)向旧的master进程发送winch信号,旧的worker子进程退出 (4)向旧master进程发送quit信号,旧的master进程就退出 3.平滑升级的信号 4.平滑升级示意图 二.Nginx平滑升级 1.安装依赖 2.编译并安装nginx 3.备份旧的Nginx二进制 4.向旧的master发送USR2信号 5.向旧master发送winch

  • nginx平滑重启和平滑升级的图文教程

    目录 nginx平滑重启 平滑重启主要流程 图解 nginx平滑升级 平滑升级主要流程 图解 总结 nginx平滑重启 如果修改了nginx的配置文件(nginx.conf),想要重启nginx,可以发送系统信号给Nginx的master进程来进行. 平滑重启主要流程 向master进程发送HUB信号(reload命令) nginx -s reload kill -s gighup Nginx主进程号 master进程检查配置语法是否正确 如果配置文件或者语法错误会出现下图代码 master打开

  • Nginx平滑升级的详细操作方法

    一.平滑升级概述Nginx方便地帮助我们实现了平滑升级.其原理简单概括,就是:(1)在不停掉老进程的情况下,启动新进程.(2)老进程负责处理仍然没有处理完的请求,但不再接受处理请求.(3)新进程接受新请求.(4)老进程处理完所有请求,关闭所有连接后,停止.这样就很方便地实现了平滑升级.一般有两种情况下需要升级Nginx,一种是确实要升级Nginx的版本,另一种是要为Nginx添加新的模块.二..升级过程具体的操作也很简单,如下: (0)查看当前版本在存放Nginx的可执行文件的目录下输入: 复制

  • nginx平滑升级及nginx配置文件详解

    目录 nginx平滑升级及nginx配置文件 nginx平滑升级并添加新功能 nginx配置文件 nginx.conf配置详解 用于调试.定位问题的配置参数 正常运行必备的配置参数 优化性能的配置参数 网络连接相关的配置参数 fastcgi的相关配置参数 nginx作为web服务器时使用的配置:http{}段的配置参数 http{}段配置指令: nginx平滑升级及nginx配置文件 nginx平滑升级并添加新功能 1.先获取老版本的编译信息 2.获取新版本安装包和功能包 3.配置新版本或功能,

  • 详解nginx平滑升级的过程

    1.开始之前首先查看当前的使用版本以及编译时的参数: [root@www ~]# /usr/local/nginx/sbin/nginx -V nginx version: nginx/1.12.2 built by gcc 4.4.7 20120313 (Red Hat 4.4.7-23) (GCC) built with OpenSSL 1.0.1e-fips 11 Feb 2013 TLS SNI support enabled configure arguments: --user=ww

  • 图文详解Nginx版本平滑升级方案

    目录 背景: 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

  • Nginx生产环境平滑升级的实现

    目录 一.背景 二.升级方案 三.操作流程 一.背景 最近遇到一个比较尴尬而又实际的问题,那就是我们生产环境使用的Nginx是Centos6的老古董.业务需求需要加载Nginx的一个模块来实现,但是版本太老了,需要Nginx1.18之后才能支持,而我们的是Nginx1.12. 那升级Nginx是我们要做的事情.但是在生产环境你要考虑的东西很多,不像测试服,Nginx停掉服务,重新编译新的版本再启动. 我们线上的服务需要不间断地提供服务,否则会对业务产生经济损失. 那有什么方案能平滑升级Nginx

  • 解析Linux系统中JVM内存2GB上限的详解

    我们通常使用的JVM都是32位的(64位的JVM会损失10-20%的性能,通常不建议使用),而32位程序的寻址空间应该是4GB才对,为什么Linux上的JVM内存只能使用2GB呢? 经过和JDK研发组的人员沟通,终于弄清楚了一些相关的原因.这个问题存在于早期的一些Linux版本中,特别是内核2.5以前的版本,2.6以后的版本就基本上没有这个问题了.原来这些Linux版本对进程有个对内存2GB的限制,是一个地址连续的内存块大小的上限,而JVM的堆空间(heap size)需要连续的地址空间,因此,

  • Linux操作系统中安装和试用IE、Office等软件

    听说出了一种新的Linux中文版本,LinXP,可以在Linux下运行IE6.0 及Office 2000,PhotoShop 7等Windows应用软件,太好了,其实用Windows软件大家主要还是因为许多常用的应用软件如IE,Office 等只能在Windows下运行,而Windows经常出现的蓝屏.死机.网络病毒让人叫哭不迭,如果能在Linux下运行这些常用的应用软件,又能享受Linux稳定的内核,强大的网络的安全性,无疑对广大的用户来说又多了一种新的选择.(可以躲过一浪接一浪的网络病毒攻

随机推荐