• 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

    自用博文.不限传播.欢迎留言.共同进步.
  • 相关阅读:
    Python语法入门之基本数据类型
    ASCII,GBK,和Unicode的UTF-8,UTF-16,UTF-32阐述
    为什么计算机只认识0和1?
    Intel万兆网卡82599linux驱动安装
    Django自定义分页器
    Django图片防盗链
    Django配置用户上传文件夹和暴露后端文件夹资源
    Django之TruncMonth截取日期作为新的虚拟字段使用
    第十一篇:auth模块
    第十篇:跨站请求伪造csrf
  • 原文地址:https://www.cnblogs.com/mingetty/p/8548778.html
Copyright © 2020-2023  润新知