首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

nginx平滑升级

一、nginx平滑升级概述  随着网站并发访问量越来越高,nginx web 服务器也越来越流行,nginx 版本换代越来越频繁,1.16.2版本的nginx更新了许多新功能,生产环境中版本升级必然的,...但是线上业务不能停,此时nginx升级就是运维的重要工作了。...二、nginx平滑升级原理 多进程模式下的请求分配方式     Nginx默认工作在多进程模式下,即主进程(master process)启动后完成配置加载和端口绑定等动作,fork出指定数量的工作进程...重新打开日志文件 三、nginx平滑升级实战 1.查看旧版nginx的编译参数  [root@localhost ~]# /usr/local/nginx/sbin/nginx -V nginx version.../nginx -v nginx version: nginx/1.12.2 从上面的结果发现,已经平滑的回滚的上一个版本,接下来测试是否能正常访问: 声明:我的博客即将同步至腾讯云+社区,邀请大家一同入驻

1.4K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Nginx平滑升级

    升级前到生产环境服务器查看当前版本的编译参数,然后采用相同编译参数进行源码编译测试,检查是否能够正常编译,若无法正常编译可考虑更换目标版本 平滑升级方法 非集群机器平滑升级 1....解压目标版本软件包,进入当前目标版本的源码目录,使用上一步获取的编译参数,包括prefix参数必须相同(平滑升级需要),配置并编译完成后,不需要执行make install tar -zxf /path...下面开始进入平滑升级阶段,通过nginx内置的USR2信号机制,开启两个版本的进程 kill -USR2 11830 # 11830是上图中的原版本nginx主进程 ?...此时访问nginx服务,检查服务是否正常服务,请求响应、各模块功能、日志等,如果没有问题则可以杀掉原版本nginx主进程,完成平滑升级 kill 11830 10....如果存在问题,则可以立刻通过nginx HUP信号回复原版本nginx进程,再停掉目标版本进程,使用备份恢复原版本nginx程序文件 kill -HUP 11830 && kill 5788 集群机器升级

    1.3K30

    Nginx平滑升级源码分析

    一、平滑升级步骤 1、重命名之前的sbin/nginx文件,将新的nginx文件放到sbin/目录下 #mv ./sbin/nginx ./sbin/nginx.old #cp ~/nginx ..../sbin/ 2、向正在运行的nginx发送USR2信号启动新的nginx,这个时候新老nginx都会接收请求,看那一个进程能抢到锁,抢到锁的worker进程可以accpet新请求 #kill -USR2... `cat nginx.pid` 3、观察新的nginx运行无误后,向旧nginx发信号 停止旧nginx的运行 #kill -QUIT `cat nginx.pid.oldbin` 二、源码分析 1...,nginx启动时 设置信号监听函数,监听信号 src/core/nginx.c   ?...651行 ngx_execute 启动新的bin文件 由于nginx老master进程fork出的新nginxmaster进程,他们可以监听同一个端口,所以新nginx和老nginx可以同时监听端口,

    1.2K70

    Nginx重装与平滑升级

    1、为什么要重装与升级 软件升级和提高安全性 ?...3、Nginx平滑升级 问题:什么是平滑升级?答:所谓的平滑升级就是在不停止业务的前提下,实现对Nginx软件版本的 升级。...) QUIT (优雅退出,执行完当前的请求后退出) HUP (重新加载配置文件,用新的配置文件启动新worker进程,并优雅 的关闭旧的worker进程) USR1 (重新打开日志文件) USR2 (平滑升级...nginx二进制文件 拉起一个新的主进程 旧主进程 不停止) WINCH (优雅的关闭worker进程) Nginx平滑升级 就是在不停止Nginx现有业务的前提下,实现Nginx版本的升级。...- worker进程 就是在不停止Nginx现有业务的前提下,实现Nginx版本的升级

    2K20

    nginx平滑升级方法:

    最简单的nginx平滑升级方法: 1 找到nginx的执行文件的路径 # ps auxf|grep nginx  记下nginx的master进程 pid(我这里是2752 ) 2 查看当前nginx...4 移走原先的nginx二进制文件 # mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx_old 5 替换新编译的 文件到nginx的...sbin目录下 # cp objs/nginx /usr/local/nginx/sbin/ 6 执行升级命令(在解压出的新版本的nginx源文件目录下执行) # make upgrade /usr/local.../logs/nginx.pid.oldbin` 7 检查升级是否完成 # ps aux|grep nginx 可以看到nginx的master进程 pid变了。...# /usr/local/nginx/sbin/nginx -V 也可以看到nginx的版本升级完成了 # ps aux|grep nginx还可以看到老的nginx进程在逐步shutdown。

    1.3K30

    nginx编译安装后对nginx进行平滑升级

    前言 nginx编译安装后用了一段时间后发现当前版本太老或需要新的功能时就需对当前nginx版本进行版本升级,但又不能影响正常的使用,所以这时就需到对nginx平滑升级,更新到最新版本了。...本文演示的是nginx-1.6.0升级nginx-1.14.0的过程,其他版本也适用。...# 将新编译的二进制文件拷贝到现有nginx目录下 cp -r /server/tools/nginx-1.14.0/objs/nginx /usr/local/nginx/sbin/nginx 平滑升级...test is successful # 给nginx的master进程发送升级信号 kill -USR2 `cat /usr/local/nginx-1.6.0/logs/nginx.pid` #向老...nginx进程发送一个信号:WINCH 让其优雅关闭所有的worker进程 kill -WINCH `cat /usr/local/nginx-1.6.0/logs/nginx.pid` 此时所有的请求都会平滑过渡到新的

    1.6K00

    nginx平滑升级编译headers-more模块

    nginx平滑升级编译headers-more模块 不想暴露某些服务器信息的时候,需要自定义response头信息,可以去修改nginx的源码,或者编译的时候,加上headers-more这个模块....原来编译时没有编译进headers-more这个模块现在试试平滑升级重新编译进来。...--add-module=/usr/local/src/agentzh-headers-more-nginx-module-7bba2a1 注意--prefix=/usr/local/nginx 要求是升级前的目录.../nginx-0.7.66/objs/nginx /usr/local/nginx/sbin/ 检查配置文件/usr/local/nginx/sbin/nginx -t 输出如下表示为正常。...kill -TERM 新的主进程号 强制退出 如果升级成功,希望保留新的服务器时,可以发送QUIT信号给旧的主进程号,使其退出只留下新的服务器运行。 至此,升级完成。

    90010

    Nginx vs Envoy vs Mosn 平滑升级原理解析

    平滑升级的本质就是 listener fd 的迁移,虽然 Nginx、Envoy、Mosn 都提供了平滑升级支持,但是鉴于它们进程模型的差异,反映在实现上还是有些区别的。...这里来探讨下它们其中的区别,并着重介绍 Nginx 的实现。 Nginx 相信有很多人认为 Nginx 的 reload 操作就能完成平滑升级,其实这是个典型的理解错误。...实际上 reload 操作仅仅是平滑重启,并没有真正的升级新的二进制文件,也就是说其运行的依然是老的二进制文件。 Nginx 自身也并没有提供平滑升级的命令选项,其只能靠手动触发信号来完成。...Nginx平滑升级是通过 fork + execve 这种经典的处理方式来实现的。...Mosn 的难度最高,算得上是真正的无损升级,而 Nginx 和 Envoy 对于老的连接,仅仅是实现 graceful shutdown,严格来说是有损的。

    3K41
    领券