google-cloud-platform - 启动脚本不运行 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 文件被创建,这意味着脚本已被执行,但网络服务器和调度程序没有。
有什么明显的原因吗?
解决方案
我尝试使用文档在 GCP VM 上复制 Airflow 网络服务器启动脚本。
在 GCP VM 上运行 Airflow 网络服务器启动脚本的步骤:
创建一个服务帐户。以 BigQuery 作业用户角色和 Dataflow 角色以 Dataflow Worker 角色授予对 BigQuery 的最低访问权限。单击添加密钥/创建新密钥/完成。这将下载一个 JSON 文件。
创建一个 Compute Engine 实例。选择创建的服务帐户。
安装气流库。使用 miniconda 创建虚拟环境。
初始化您的元数据数据库并使用以下命令注册至少一个管理员用户:
airflow db init airflow users create -r Admin -u username -p mypassword -e example@mail.com -f yourname -l lastname
将 8080 端口的 IP 列入白名单。创建防火墙规则并在 GCP 虚拟机实例上添加防火墙规则。现在转到终端并使用命令 气流 webserver -p 8080启动 Web 服务器。
打开另一个终端并启动调度程序。
export AIRFLOW_HOME=/home/acachuan/airflow-medium cd airflow-medium conda activate airflow-medium airflow db init airflow scheduler
我们希望我们的 Airflow 在 Compute Engine 启动后立即启动。所以我们可以创建一个 Cloud Storage 存储桶,然后创建一个脚本,上传文件并将其作为备份。
现在将 Linux 启动脚本从 Cloud Storage 传递到 VM。请参阅将存储在 Cloud Storage 中的启动脚本传递给现有 VM。您还可以将启动脚本传递给现有 VM。
注意: PermissionDenied desc = 调用者没有权限意味着您没有足够的权限,您需要向您的项目、文件夹或组织管理员请求访问权限。取决于您尝试导出的资产。要访问由 root 用户创建的文件,您需要读取、写入或执行权限。请参阅文件权限。
推荐阅读
- mysql - 用于选择 xml 字符串的 MySql-Extract 值
- javascript - 按日期从 Mongo 文档中的数组中提取
- silverstripe - silverstripe ss 文件中的国际化
- angular - firebase:在 GitLab Runner 中找不到命令
- r - 如何从R中的向量中提取第一个和最后一个非空值?
- openam - 多个 SSO 服务器时,OpenAM OAuth 令牌问题不会失效
- reactjs - 将可重用组件的更改传递到另一个可重用组件中
- spring-boot - 用于单元测试的嵌入式 ActiveMQ 在测试结束时抛出 JMSException
- azure - 错误 - java.lang.NoClassDefFoundError: com/microsoft/sqlserver/jdbc/ISQLServerBulkData
- django - 为什么要使用 Django REST 框架 ModelSerializer。创建和 ModelSerializer.validate 不能正常工作?