【问题标题】:How do I fix 502 Bad Gateway error with GCP and NGINX如何使用 GCP 和 NGINX 修复 502 Bad Gateway 错误
【发布时间】:2021-04-30 08:23:12
【问题描述】:

我正在尝试遵循有关在 GCP vm 实例 (https://towardsdatascience.com/10-minutes-to-building-a-machine-learning-pipeline-with-apache-airflow-53cd09268977) 上创建 Apache Airflow 管道的教程,但是在构建并运行 docker 容器后,尝试使用 Nginx 1.14 时出现“502 Bad Gateway”错误使用以下方式访问网络服务器:

http://<VM external ip>/

我对使用 GCP 很陌生,不知道如何解决这个问题。

一些在线研究建议将 NGINX 配置文件编辑为:

keepalive_timeout 650;
keepalive_requests 10000;

但这并没有改变任何东西。

GCP 实例是 N1-standard-8,带有 Ubuntu 18.04,并启用了云、HTTPS 和 HTTP 访问。

启用的 Nginx 站点是:

server {
    listen 80;

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

【问题讨论】:

    标签: nginx google-cloud-platform google-compute-engine airflow


    【解决方案1】:

    根本原因:
    您遇到的问题与 keepalives 无关,它更简单 - docker 容器退出并且没有运行,因此当 nginx 尝试将您的请求代理到容器中时,它会失败并因此出现错误。所述故障是由于气流与当前版本的 sqlalchemy 不兼容。

    验证:
    运行此命令查看失败容器的日志

    sudo docker logs `sudo docker ps -a -f "ancestor=greenr-airflow" --format '{{.ID}}'`
    

    你会看到容器内的python导入包失败,报如下错误:

    No module named 'sqlalchemy.ext.declarative.clsregistry'
    

    解决方案:

    虽然我严格按照教程进行操作,但我建议不要 使用 sudo 运行命令,您可能希望偏离教程 a 为了不这样做。

    运行前

    sudo docker build -t greenr-airflow:latest .
    

    命令,编辑Dockerfile文件并添加以下两行

    && pip install SQLAlchemy==1.3.23 \
    && pip install Flask-SQLAlchemy==2.4.4 \
    

    在正在安装的软件包列表中的某个位置,我在之后添加了它

    && pip install -U pip setuptools wheel \
    

    在撰写本文时是第 54 行。

    如果您想重复使用相同的实例,请在更改文件后删除并重建图像:

    sudo docker rmi greenr-airflow
    sudo docker build -t greenr-airflow:latest .
    

    【讨论】:

      猜你喜欢
      • 2020-07-31
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-04
      • 2018-05-23
      • 2021-04-07
      相关资源
      最近更新 更多