Linux Nginx服务器 平滑升级和回退
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Linux Nginx服务器 平滑升级和回退,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2710字,纯文字阅读大概需要4分钟。
内容图文
![Linux Nginx服务器 平滑升级和回退](/upload/InfoBanner/zyjiaocheng/941/5e8618a740e549e4b480dddca46b0e54.jpg)
一、热部署相关概念
1.1 nginx服务的进程
nginx是多进程结构,多进程结构设计是为了保证nginx的高可用高可靠,包含:
- master进程:也是父进程,负责worker进程的管理。
- worker进程:也是子进程,worker进程一般配置成与服务器的CPU核数相同,worker进程用来处理具体的请求的。
- cache进程:也是子进程,包括cache manager和cache loader进程,主要是反向代理时做缓存使用。
1.2 nginx可进行热部署的原理
热部署,就是配置文件nginx.conf修改后,不需要stop Nginx,不需要中断请求,就能让配置文件生效,即在线升级,即不打断用户的请求下更新版本。 通过上文我们已经知道worker进程负责处理具体的请求,那么如果想达到热部署的效果,Nginx可以修改配置文件nginx.conf后,重新生成新的worker进程,当然会以新的配置进行处理请求,而且新的请求必须都交给新的worker进程,至于老的worker进程,等把那些以前的请求处理完毕后,kill掉即可。然后使用新的配置创建新的 worker,所以可以做到在线更新版本,新版本和旧版本的进程可以同时存在,不影响客户的访问。
二、热部署之平滑升级及回滚
实验环境 :搭建成功版本为1.15.9的nginx服务器<上一篇>
1、添加上版本注释 vim src/core/nginx.h
2、 回到编译之前的环境
1)删除之前安装的nginx目录:rm -fr /usr/local/nginx
- 删除之前,先关闭nginx服务。
2)回到编译目录:make clean
3)查看当前nginx的进程 ps aux | grep nginx
4)再次编译:
./configure --prefix=/usr/local/nginx --with-file-aio
5)安装:make && make install
6)开启nginx:/usr/local/nginx/sbin/nginx
7)查看nginx的进程:ps aux|grep nginx
8)查看nginx的版本号:/usr/local/nginx/sbin/nginx -v
2.1 nginx平滑升级
1) 首先解压:tar zxf nginx-1.17.4.tar.gz
2)在 nginx-1.17.4目录下编译,./configure --prefix=/usr/local/nginx --with-file-aio
3)make
- 注意:更新的时候不能make install,否则会将nginx服务之前配置全部还原
4)在nginx/nginx-1.17.4/objs/
目录下,执行make后才产生的二进制文件nginx 。此时,执行命令./nginx -V
查看nginx版本。发现版本为nginx/1.17.4 ,但是生效的版本还是nginx/1.15.9
- make后objs/下出现了二进制执行文件nginx,make install 实际上就是将二进制执行文件和一些配置文件复制到/usr/local/nginx目录下
5)ps -ef | grep nginx
可以看到原来的2个进程
6)kill -USR2 原master进程的pid 让旧版本的worker进程不再接受请求,ps -ef | grep nginx
可以看到4个进程
7)kill -WINCH 原来master进程的pid ,关闭原来进程的子进程,master不结束,防止更新失败。ps -ef | grep nginx
可以看到3个进程,此时新版本已经可以用了
8)/usr/local/nginx/sbin/nginx -V 可以看到版本已经更新了
此时,版本升级已经完成l。
2.2 nginx版本更新失败之后的回滚
假如我们刚才更新失败,要回到原来nginx/1.15.9的版本
1)还原nginx脚本
2)kill -HUP 旧版本的master进程PID,重新唤起旧版本的master进程,让其接收请求
3)
kill -USR2 27129,让新版本的master进程不接收请求
kill -WINCH 27129,关闭新版本的worker进程
4)查看nginx版本 :/usr/local/nginx/sbin/nginx -v
5)再次编译,且make
就回滚了。
实际在企业当中,如果更新失败立马就要回滚,并且更新的时候只能进行一次,失败立马回滚
内容总结
以上是互联网集市为您收集整理的Linux Nginx服务器 平滑升级和回退全部内容,希望文章能够帮你解决Linux Nginx服务器 平滑升级和回退所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。