架构详解
- 平滑升级
- 源码编译
- 进行平滑升级
- 平滑回退
- 总结
- 平滑升级的作用
- 平滑回退的作用
- 技术总结
版本:nginx1.12 nginx1.14
下载:https://nginx.org/download/nginx-1.12.2.tar.gz
https://nginx.org/download/nginx-1.14.2.tar.gz
解析: 掌握了1.12与1.14平滑升级 ,其他版本操作都一样
平滑升级
编译安装nginx1.12
1. 获取源码包:wget https://nginx.org/download/nginx-1.12.2.tar.gz 2. 解压缩指定目录:tar -xvzf nginx-1.12.2.tar.gz -C /usr/local/src/ 3. 进入nginx目录:cd /usr/local/src/nginx-1.12.2/ 4. 配置编译安装:./configure --user=nginx --group=nginx --prefix=/usr/local/nginx12 --with-http_stub_status_module --with-http_ssl_module && make && make install
编译安装nginx1.14
1. 获取源码包:wget https://nginx.org/download/nginx-1.14.2.tar.gz 2. 解压缩指定目录:tar -xvzf nginx-1.14.2.tar.gz -C /usr/local/src/ 3. 进入nginx目录:cd /usr/local/src/nginx-1.14.2/ 4. 配置编译安装:./configure --user=nginx --group=nginx --prefix=/usr/local/nginx14 --with-http_stub_status_module --with-http_ssl_module && make && make install
进行平滑升级
- kill -USR2 旧版本的主进程号 (让旧版本的worker进程不再接受请求)
- kill -WINCH 旧版本的主进程号 (关闭旧版本的worker进程)
1. ps aux|grep ngin[x] #查看nginx的主进程号和工作进程号 2. mv /usr/local/nginx12/sbin/nginx{,.bak} #重命名nginx12的执行程序 3. cp /usr/local/nginx14/sbin/nginx /usr/local/nginx12/sbin/nginx #复制nginx14的执行程序给nginx12 4. /usr/local/nginx12/sbin/nginx -V #查看版本信息 nginx version: nginx/1.14.2 5. 查看进程号:ps aux|grep ngin[x] root 17266 0.0 0.0 45948 1124 ? Ss 01:11 0:00 nginx: master 6. 给主进程发送User2信号:kill -USR2 旧进程号(17266) 相对应 ls nginx12/logs/nginx.pid.oldbin #pid文件被重命名 7. 发送WINCH信号: kill -WINCH 旧进程号(17266) 8. 重启nginx: pkill nignx /usr/local/nginx12/sbin/nginx 9. 访问网站查看版本号:curl -i http://IP HTTP/1.1 200 OK Server: nginx/1.14.2
回退版本
Kill –HUP 旧的主进程号:Nginx将在不重载配置文件的情况下启动它的工作进程;
Kill –QUIT 新的主进程号:从容关闭其他工作进程(woker process);
Kill –TERM 新的主进程号:强制退出;
1. 先查看进程:ps aux|grep nginx root 17266(旧) 0.0 0.0 46092 1904 ? Ss 00:47 0:00 nginx: root 17279(新) 0.0 0.0 45956 3248 ? S 00:53 0:00 nginx: nginx 17280 0.0 0.0 46404 1872 ? S 00:53 0:00 nginx:.. 2. 开启旧进程:kill -HUP 17266 3. 关闭新进程:kill -QUIT 17279 4. 查看进程:ps aux|grep ngin[x] 5. 恢复原来的执行文件:rm -rf nginx12/sbin/nginx mv nginx12/sbin/nginx.bak nginx12/sbin/nginx 6. 重启nginx: pkill nginx /usr/local/nginx12/sbin/nginx 7. 访问网站查看版本号:curl -i http://IP HTTP/1.1 200 OK Server: nginx/1.12.2
总结
平滑升级
作用:为nginx添加新的模块优化,版本性能、稳定性
平滑升级也可以说是"热升级" => 在不停止对User的服务进行升级版本,继续对外服务,不受影响。 原理: 1. 在不停掉旧版本程序的运行进程的情况下,启动新版本的进程。 2. 旧版本的进程负责处理之间没有处理完成的请求,但不接受任何请求 3. 由新版本的进程接受用户的请求 4. 当旧程序处理完之前的请求后,关闭所有连接、停止服务。
平滑回退
作用:将新版本回滚至旧版本,主要是新本的稳定性与漏洞,在有些场景对版本的要求很高
1. 将旧版本的进程重新拉起来 2. 再将新版本的进程停止掉
技术总结
-----------平滑升级----------- 1. 先重命名旧版本的二进制.bak结尾的文件后,在将新版本的二进制执行文件复制到旧版本中。 2. 给旧版本的进程发送USR2指令,让其不在接受请求后 3. 再给旧版本的进程发送WINCH指令,让其停止服务,关闭 4. 使得新版本来接受用户的请求 -----------平滑回退----------- 1. 使用HUP指令将旧版本的进程拉起来 2. 使用QUIT指令将新版本的进程关闭 3. 在将旧版本的二进制文件替换回来 4. 使得旧版本重新对外提供服务