nginx平滑重启和平滑升级的方法是什么(nginx,开发技术)

时间:2024-05-07 10:33:47 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

    nginx平滑重启

    如果修改了nginx的配置文件(nginx.conf),想要重启nginx,可以发送系统信号给Nginx的master进程来进行。

    平滑重启主要流程

    • 向master进程发送HUB信号(reload命令)

    nginx-sreloadkill-sgighupNginx主进程号
    • master进程检查配置语法是否正确

      • 如果配置文件或者语法错误会出现下图代码

    nginx平滑重启和平滑升级的方法是什么

    • master打开监听端口

    • master进程使用新的配置文件启动新的worker子进程

    • master进程向老的worker子进程发送quit信号

    • 旧的worker子进程关闭监听,处理完当前连接后关闭进程

    图解

    nginx平滑重启和平滑升级的方法是什么

    当nginx接收到系统的SIGHUP信号,nginx会尝试解析配置文件(如果指定了配置文件,就使用指定的配置文件,否则就使用默认的),如果解析配置文件成功,(成功表示配置文件没有错误),就会应用新的配置文件。之后nginx启动新的worker子进程,然后等待旧的worker子进程完成所属任务后,关闭旧的worker子进程。如果遇到旧的worker子进程正在进行任务,那么旧的子进程继续为当前连接的客户提供服务,当所有的客户端服务完成后,旧的worker子进程被关闭。

    如果新的配置文件应用失败,那么nginx将继续使用旧的配置文件运行。

    nginx平滑升级

    当需要将正在运行的nginx升级、添加/删除服务器模块时,可以在不中断服务的情况下使用新版本、重编译的nginx可执行程序替换旧版本的可执行程序

    平滑升级主要流程

    • 将旧的nginx配置文件替换为新的nginx配置文件(如果基础目录结构需要特殊操作)

    使用新的可执行程序替换旧的可执行程序,替换之前最好备份一下旧的配置文件

    • 向master进程发送USER2信号

    kill-sSIGUSER2nginx进程号

    nginx平滑重启和平滑升级的方法是什么

    • master进程修改pid文件,加后缀.oldbin执行新的配置文件

    旧版本nginx 的master进程将nginx.pid重命名为nginx.oldbin

    nginx平滑重启和平滑升级的方法是什么

    • master进程使用新的nginx配置文件启动新的master进程

    执行新的配置文件,依次启动新的master进程和对应的worker子进程,此时新的nginx进程和旧的nginx进程同时运行,共同处理输入的请求

    • 验证新功能是否满足功能预期,如果满足就向旧的master进程发送WINCH信号,旧的worker子进程退出

    运行一段时间后,确保新配置文件生效,然后使用SIGWINCH向旧的master进程发送信号,逐步停止旧worker子进程

    kill-sSIGWINCH旧nginx进程号kill-sSIGQUIT旧nginx进程号
    • 这是决定使用新版本还是旧版本,如果使用新版本则继续发送SIGWINCH信号到旧的master中,如果需要回滚,则发送一下命令

    #nginx将不在重载配置文件的情况下启动他的worker子进程kill-sSIGHUP旧的master号#nginx关闭新配置文件的worker子进程kill-sSIGQUIT新的master号#nginx强制退出新的master主进程kill-sSIGTERM新的master号

    新的master退出后,旧的master会议chu会移除.oldbin后缀的.pid文件,这样,回滚就完成了,如果尝试升级成功后,而且也希望保留新的服务器时,可以发送quit信号给旧的master,使其退出而只留下新的服务器运行

     </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
    本文:nginx平滑重启和平滑升级的方法是什么的详细内容,希望对您有所帮助,信息来源于网络。
    上一篇:移动应用开发工具CrossApp Style怎么用下一篇:

    7 人围观 / 0 条评论 ↓快速评论↓

    (必须)

    (必须,保密)

    阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18