启动脚本没有 运行 Airflow 网络服务器 VM GCP

Startup script doesn't run Airflow webserver VM GCP

我正在尝试使用启动脚本在启动时自动 运行 VM 中的 airflow 网络服务器和调度程序,只是遵循此处的文档: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 文件已创建,这意味着脚本已执行但网络服务器和调度程序未执行。

有什么明显的原因吗?

我尝试使用 document.

在 GCP VM 上复制 Airflow 网络服务器启动脚本

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

  1. 创建一个服务帐户。以 BigQuery Job User 角色授予对 BigQuery 的最低访问权限,以 Dataflow Worker 角色授予对 Dataflow 的最低访问权限。单击添加 Key/Create 新 key/Done。这将下载一个 JSON 文件。

  2. 创建一个计算引擎实例。 Select 创建的服务帐户。

  3. 安装 Airflow 库。使用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 VM 实例上添加防火墙规则。现在转到终端并使用命令启动 Web 服务器 airflow webserver -p 8080.

  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 bucket,然后创建一个脚本,上传文件作为备份。

  8. 现在将 Linux 启动脚本从 Cloud Storage 传递到 VM。参考 Passing a startup script that is stored in Cloud Storage to an existing VM。您还可以将启动脚本传递给现有 VM。

注意: PermissionDenied desc = The caller does not have permission means you don't have sufficient permissions, you need to request access from your project, folder, or organization admin.取决于您尝试导出的资产。要访问由 root 用户创建的文件,您需要读取、写入或执行权限。参考 File permissions.