nginx热升级SOP(MT)

nginx热升级SOP(MT)

1.备份老的二进制文件
# mv /usr/sbin/nginx /usr/sbin/nginx.old
# yum -y install tengine
2.给老nginx master进程发送USR2及WINCH信号
# kill -USR2 `cat /var/run/nginx.pid`
# kill -WINCH `cat /var/run/nginx.pid.oldbin`
发送USR2 信号后,nginx会启动一组新的master及worker进程,此时,新老worker都会接收处理请求
发送WINCH信号,通知nginx优雅关闭旧worker进程,此时旧worker不再接收新的请求
3.观察新的nginx处理请求的状态,例如error log 或者有没有进程产生coredump等。此时ngx_lua提供的shared_dict在切换过程中会被重置,数据会丢失,这部分请注意,可能会产生报警,
目前线上的stat模块依赖这部分内存,请提前做好周知
4.若新nginx没有问题:
# kill -QUIT `cat /var/run/nginx.pid.oldbin`
若需要回滚:
# kill -HUP `cat /var/run/nginx.pid.oldbin`
# kill -QUIT `cat /var/run/nginx.pid`
或者(会丢弃正在被处理的请求):
# kill -TERM `cat /var/run/nginx.pid`
注意,若使用下一种方法(不推荐),请在确保nginx配置文件及ngx_lua代码在升级过程中未改变,否则,可能导致某些init_by_lua阶段的代码不生效,worker及master加载的lua代码不同,所以请在回滚完后reload一遍nginx!!!
恢复二进制文件
# mv /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.new
# mv /usr/local/nginx/sbin/nginx.old /usr/local/nginx/sbin/nginx

 

posted @ 2018-03-12 13:22  mingetty  阅读(141)  评论(0编辑  收藏  举报