微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用于蓝/绿部署的零停机 nginx 动态重新加载

如何解决用于蓝/绿部署的零停机 nginx 动态重新加载

在蓝绿部署管道的上下文中,当前使用以下 Nginx-template.conf 模板文件

http {
    server {
        listen 8080;

        location / {
            proxy_pass http://0.0.0.0:{{ api_port }};
        }
    }
}

在部署新版本的 API 时,通过用新的端口值替换 Nginx.conf生成新的 {{ api_port }}。端口值在 60006001 之间交替。

6000  ---->  (deploy) 6001  ---->  (deploy) 6000  ---->  (deploy) 6001  ---->  ...

生成新的 Nginx.conf 文件后,旧的 Nginx 进程将停止并启动一个新进程:

sudo Nginx -s quit -c Nginx-old.conf
sudo Nginx -c Nginx-new.conf

这很有效,但需要半秒的停机时间,在此期间无法处理新请求。

为了消除停机时间,我尝试reload Nginx

sudo Nginx -s reload -c Nginx-new.conf

但是由于某种原因,这不适用于新配置,并且 Nginx 仍然使用旧配置运行,就好像没有执行 reload 一样。

  • 有没有办法在不停机的情况下重新加载 Nginx 并考虑到新配置?
  • 或者,是否有可能通过不同的方法达到预期的结果?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。