ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Ningx平滑升级和回滚案例

2021-06-12 10:57:56  阅读:246  来源: 互联网

标签:回滚 -- 平滑 Ningx apps nginx 1.20 root Centos8


实验环境

在8系统里已经安装了 nginx 1.18.0版本的nginx
平滑升级

[root@Centos8 ~]#tar xf nginx-1.20.1.tar.gz                            #下载后直接上传最新稳定版 进行解压         
[root@Centos8 ~]#cd nginx-1.20.1                                       #切换到最新版本目录下
[root@Centos8 nginx-1.20.1]#/apps/nginx/sbin/nginx -V                  #查看当前使用的版本及编译选项。结果如下:          
nginx version: nginx/1.18.0
built by gcc 8.4.1 20200928 (Red Hat 8.4.1-1) (GCC) 
built with OpenSSL 1.1.1g FIPS  21 Apr 2020
TLS SNI support enabled
configure arguments: --prefix=/apps/nginx --user=nginx --group=nginx --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module           
 #configure arguments后面是以前编译时的参数。现在编译使用一样的参数

#开始编译新版本

[root@Centos8 nginx-1.20.1]#./configure --prefix=/apps/nginx \         #开始编译新版本
> --user=nginx \
> --group=nginx \
> --with-http_ssl_module \
> --with-http_v2_module \
> --with-http_realip_module \
> --with-http_stub_status_module \
> --with-http_gzip_static_module \
> --with-pcre \
> --with-stream \
> --with-stream_ssl_module \
> --with-stream_realip_module                                           #按回车         

[root@Centos8 nginx-1.20.1]#make                                        #只要make无需要make install
[root@Centos8 nginx-1.20.1]#objs/nginx -v
nginx version: nginx/1.20.1

#查看两个版本

[root@Centos8 nginx-1.20.1]#ll objs/nginx /apps/nginx/sbin/nginx        
-rwxr-xr-x 1 nginx nginx 7595800 Jun 12 10:18 /apps/nginx/sbin/nginx
-rwxr-xr-x 1 root  root  7727952 Jun 12 10:33 objs/nginx

#把之前的旧版的nginx命令备份

[root@Centos8 nginx-1.20.1]#mv /apps/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.old  

#把新版本的nginx命令复制过去

[root@Centos8 nginx-1.20.1]#cp ./objs/nginx /apps/nginx/sbin/               

#检测一下有没有问题

[root@Centos8 nginx-1.20.1]#/apps/nginx/sbin/nginx -t
nginx: the configuration file /apps/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /apps/nginx/conf/nginx.conf test is successful

#USR2 平滑升级可执行程序,将存储有旧版本主进程PID的文件重命名为nginx.pid.oldbin,并启动新的
nginx
#此时两个master的进程都在运行,只是旧的master不在监听,由新的master监听80
#此时Nginx开启一个新的master进程,这个master进程会生成新的worker进程,这就是升级后的Nginx进
程,此时老的进程不会自动退出,但是当接收到新的请求不作处理而是交给新的进程处理。

#可以看到两个master,新的master是旧版master的子进程,并生成新版的worker进程

[root@Centos8 nginx-1.20.1]#kill -USR2 `cat /apps/nginx/run/nginx.pid`
[root@Centos8 nginx-1.20.1]#ps auxf|grep nginx
root       14235  0.0  0.0  12132  1100 pts/0    S+   10:39   0:00  |           \_ grep --color=auto nginx
root        9010  0.0  0.1  42440  2760 ?        Ss   10:20   0:00 nginx: master process /apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
nginx       9011  0.0  0.2  77096  5064 ?        S    10:20   0:00  \_ nginx: worker process
root       14231  0.0  0.3  42444  6112 ?        S    10:39   0:00  \_ nginx: master process /apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
nginx      14232  0.0  0.2  77180  4672 ?        S    10:39   0:00      \_ nginx: worker process
[root@Centos8 nginx-1.20.1]#lsof -i :80
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
nginx    9010  root    8u  IPv4  40011      0t0  TCP *:http (LISTEN)
nginx    9011 nginx    8u  IPv4  40011      0t0  TCP *:http (LISTEN)
nginx   14231  root    8u  IPv4  40011      0t0  TCP *:http (LISTEN)
nginx   14232 nginx    8u  IPv4  40011      0t0  TCP *:http (LISTEN)

**#先关闭旧nginx的worker进程,而不关闭nginx主进程方便回滚

#向原Nginx主进程发送WINCH信号,它会逐步关闭旗下的工作进程(主进程不退出),这时所有请求都会由新
版Nginx处理**

[root@Centos8 nginx-1.20.1]#kill -WINCH `cat /apps/nginx/run/nginx.pid.oldbin`

#如果旧版worker进程有用户的请求,会一直等待处理完后才会关闭

[root@Centos8 nginx-1.20.1]#ps auxf|grep nginx

root       14548  0.0  0.0  12132  1056 pts/0    S+   10:44   0:00  |           \_ grep --color=auto nginx
root        9010  0.0  0.1  42440  2760 ?        Ss   10:20   0:00 nginx: master process /apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
root       14231  0.0  0.3  42444  6112 ?        S    10:39   0:00  \_ nginx: master process /apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
nginx      14232  0.0  0.2  77180  4672 ?        S    10:39   0:00      \_ nginx: worker process
[root@centos8 nginx-1.20.1]#pstree -p|grep nginx
|-nginx(8814)---nginx(12014)-+-nginx(12015)
|                            `-nginx(12016)

#经过一段时间测试,新版本服务没问题,最后退出老的maste

#查看版本是不是已经是新版

[root@centos8 nginx-1.20.1]#nginx -v
nginx version: nginx/1.20.1
[root@centos8 nginx-1.20.1]#curl -I 127.0.0.1
HTTP/1.1 200 OK
Server: nginx/1.20.1
Date: Mon, 07 Jun 2021 09:48:48 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Mon, 07 Jun 2021 08:28:12 GMT
Connection: keep-alive
ETag: "60bdd89c-264"
Accept-Ranges: bytes

**#回滚

#如果升级的版本发现问题需要回滚,可以重新拉起旧版本的worker**

[root@centos8 nginx-1.20.1]#kill -HUP `cat /apps/nginx/run/nginx.pid.oldbin`
[root@centos8 nginx-1.20.1]#pstree -p |grep nginx
|-nginx(8814)-+-nginx(12014)-+-nginx(12015)
| | `-nginx(12016)
| |-nginx(12090)
| `-nginx(12091)

#最后关闭新版的master

[root@centos8 nginx-1.20.1]#kill -QUIT `cat /apps/nginx/run/nginx.pid`

在这里插入图片描述

标签:回滚,--,平滑,Ningx,apps,nginx,1.20,root,Centos8
来源: https://blog.csdn.net/Lcongming/article/details/117840513

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有