将代码分发到 airflow webserver / scheduler + worker 和 workflow 的最佳方式

Best way to distribute code to airflow webserver / scheduler + workers and workflow

人们发现将代码(dags)分发到 airflow 网络服务器/调度程序 + worker 的最佳方式是什么?我正在尝试 运行 对一大群工人进行芹菜操作,这样任何手动更新都是不切实际的。

我正在 docker 上部署 airflow 并正在使用 s3fs,它不断地崩溃并创建奇怪的 core.### 文件。我正在探索其他解决方案(即 StorageMadeEasy、DropBox、EFS、从 git... 更新的 cron 作业),但在我探索解决方案时希望得到一些反馈。

此外,人们通常如何更新 dag 并分发该代码?如果使用像 s3fs 这样的共享卷,每次更新 dag 时都会重新启动调度程序吗?在 DropBox 之类的地方编辑代码是在自找麻烦吗?非常感谢有关如何更新 dag 和分发代码的任何最佳实践。

我无法真正告诉您 "best" 的做法是什么,但我可以告诉您当我需要将工作负载分配到另一台机器时我做了什么。

我只是在 airflow master 上为 DAGS 和 PLUGINS 文件夹设置了一个 NFS 共享,并将该共享安装到 worker 上。我遇到过一两次问题,NFS 挂载点由于某种原因会中断,但重新挂载后作业继续。

为了将 DAG 和 PLUGIN 代码分发到 Airflow 集群,我只是将其部署到主机(我通过本地计算机上的 bash 脚本执行此操作,该脚本只是从本地 git 分支)和 NFS 处理复制到工作人员。我总是在部署后重新启动一切,我也不会在作业 运行.

时进行部署

更好的部署方式是在 airflow 主服务器上安装 GIT,它从 GIT 存储库(测试或主服务器取决于气流服务器?)签出一个分支,然后将 dags 和插件替换为 git 存储库中的那些。我正在尝试使用 Ansible 进行这样的部署。