使用 Nginx 实现平滑升级

简介: 使用 Nginx 实现平滑升级

使用 Nginx 实现平滑升级



一、使用 Nginx 实现平滑升级


1.主进程支持的信号

2.配置 Nginx 平滑升级


一、使用 Nginx 实现平滑升级



实现原理:


  1. 在旧进程运行时,启动新的进程;
  2. 旧进程处理没有完成的请求,但不再接收新的处理请求,而是由新进程负责接收请求并进行处理;
  3. 最后通过关闭旧进程的 PID,使新的进程完全兼容。


1.主进程支持的信号


image.png


2.配置 Nginx 平滑升级


1)准备软件包并查看旧版安装选项


[root@localhost ~]# wget http://www.nginx.org/download/nginx-1.18.0.tar.gz
[root@localhost ~]# ls
anaconda-ks.cfg  nginx-1.12.0.tar.gz  nginx-1.18.0.tar.gz
[root@localhost ~]# nginx -V
nginx version: nginx/1.12.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) 
configure arguments: --prefix=/usr/local/nginx/ --user=nginx --group=nginx


image.png


2)安装新版本(需要注意新版本是否需要安装依赖包)


[root@localhost ~]# tar zxf nginx-1.18.0.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/nginx-1.18.0/
[root@localhost nginx-1.18.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make


image.png


3)备份原来的二进制文件


[root@localhost nginx-1.18.0]# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx-$(date +%F)
[root@localhost nginx-1.18.0]# cp objs/nginx /usr/local/nginx/sbin/
[root@localhost nginx-1.18.0]# /usr/local/nginx/sbin/nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@localhost nginx-1.18.0]# cd
[root@localhost ~]# /usr/local/nginx/sbin/nginx -V


image.png


4)使用信号实现热升级


[root@localhost ~]# ps aux | grep nginx | grep -v grep
[root@localhost ~]# kill -USR2 Nginx主进程 (master)


  • 向主进程发送 USR2 信号,Nginx 会启动一个新版本的 Master 进程和工作进程,和旧版本一起处理请求。


image.png


[root@localhost ~]# kill -WINCH $(cat /usr/local/nginx/logs/nginx.pid.oldbin)     # 关闭老版本的 Worker 进程
[root@localhost ~]# kill -QUIT $(cat /usr/local/nginx/logs/nginx.pid.oldbin)      # 关闭老版本的 Master 进程
[root@localhost ~]# ps aux | grep nginx | grep -v grep
[root@localhost ~]# /usr/local/nginx/sbin/nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) 
configure arguments: --prefix=/usr/local/nginx/ --user=nginx --group=nginx


image.png

相关文章
9kr
|
应用服务中间件 网络安全 nginx
通过宝塔Nginx反代HomeAssistant并添加SSL实现隐藏端口号与域名访问
HomeAssistant默认使用8123端口,带端口访问既不美观也不方便。 通过宝塔Nginx默认反代配置会出现各种意外错误,本文将通过修改HomeAssistant与反代配置解决该问题。
9kr
3923 1
通过宝塔Nginx反代HomeAssistant并添加SSL实现隐藏端口号与域名访问
|
5月前
|
负载均衡 网络协议 应用服务中间件
Nginx配置以及热升级
Nginx配置以及热升级
84 7
|
7月前
|
应用服务中间件 网络安全 nginx
nginx 常用命令 |升级到1.20.1版本 | 如何更换 Nginx SSL 证书
nginx 常用命令 |升级到1.20.1版本 | 如何更换 Nginx SSL 证书
505 0
|
7月前
|
缓存 应用服务中间件 网络安全
nginx服务升级配置
nginx服务升级配置
|
应用服务中间件 nginx
Nginx的安装与平滑升级(详)
Nginx的安装与平滑升级(详)
163 0
|
域名解析 负载均衡 JavaScript
升级 HTTP 至 HTTPS:使用 Nginx 反向代理
升级 HTTP 至 HTTPS:使用 Nginx 反向代理
343 0
|
Kubernetes 应用服务中间件 nginx
基于 Kubernetes 进行 Nginx 的升级与回滚
Hello folks,今天我们介绍一下如何在 Kubernetes 集群环境中进行服务组件的升级与回滚,此处,我们以 Nginx 组件为例,基于 K3d 所搭建的环境进行。
178 0
|
应用服务中间件 nginx
Nginx专题:Nginx软件升级
Nginx专题:Nginx软件升级
143 0
|
应用服务中间件 Linux nginx
openssl版本升级后,Nginx用的还是旧版的openssl
openssl版本升级后,Nginx用的还是旧版的openssl
803 0
|
缓存 负载均衡 算法
Nginx实现负载均衡(整合SpringBoot小demo)
Nginx实现负载均衡(整合SpringBoot小demo)
380 4
Nginx实现负载均衡(整合SpringBoot小demo)