首页 > 解决方案 > 启动脚本不运行 Airflow 网络服务器 VM GCP

问题描述

我正在尝试在启动时使用启动脚本在 VM 中自动运行气流网络服务器和调度程序,只需遵循此处的文档:https ://cloud.google.com/compute/docs/instances/startup-scripts/linux 。这是我的脚本:

export AIRFLOW_HOME=/home/name/airflow
cd /home/name/airflow
nohup airflow scheduler >> scheduler.log &
nohup airflow webserver -p 8080 >> webserver.log &

.log 文件被创建,这意味着脚本已被执行,但网络服务器和调度程序没有。

有什么明显的原因吗?

标签: google-cloud-platformvirtual-machineairflowairflow-scheduler

解决方案


我尝试使用文档在 GCP VM 上复制 Airflow 网络服务器启动脚本。

在 GCP VM 上运行 Airflow 网络服务器启动脚本的步骤:

  1. 创建一个服务帐户。以 BigQuery 作业用户角色和 Dataflow 角色以 Dataflow Worker 角色授予对 BigQuery 的最低访问权限。单击添加密钥/创建新密钥/完成。这将下载一个 JSON 文件。

  2. 创建一个 Compute Engine 实例。选择创建的服务帐户。

  3. 安装气流库。使用 miniconda 创建虚拟环境。

  4. 初始化您的元数据数据库并使用以下命令注册至少一个管理员用户:

    airflow db init
    
    airflow users create -r Admin -u username -p mypassword -e example@mail.com -f yourname -l lastname
    
  5. 将 8080 端口的 IP 列入白名单。创建防火墙规则并在 GCP 虚拟机实例上添加防火墙规则。现在转到终端并使用命令 气流 webserver -p 8080启动 Web 服务器。

  6. 打开另一个终端并启动调度程序。

    export AIRFLOW_HOME=/home/acachuan/airflow-medium
    cd airflow-medium
    conda activate airflow-medium
    airflow db init
    airflow scheduler
    
  7. 我们希望我们的 Airflow 在 Compute Engine 启动后立即启动。所以我们可以创建一个 Cloud Storage 存储桶,然后创建一个脚本,上传文件并将其作为备份。

  8. 现在将 Linux 启动脚本从 Cloud Storage 传递到 VM。请参阅将存储在 Cloud Storage 中的启动脚本传递给现有 VM。您还可以将启动脚本传递给现有 VM。

注意: PermissionDenied desc = 调用者没有权限意味着您没有足够的权限,您需要向您的项目、文件夹或组织管理员请求访问权限。取决于您尝试导出的资产。要访问由 root 用户创建的文件,您需要读取、写入或执行权限。请参阅文件权限


推荐阅读