如何经济高效地配置 Google Cloud Composer

How to configure Google Cloud Composer cost-effectively

经过一些研究和测试,我们决定开始使用 Google Cloud Composer。由于我们目前的 DAG 和任务都比较小,不需要服务器持续 运行,我正在研究如何管理成本。

两个问题:

  1. 使用 preemptible 虚拟机的选项似乎符合逻辑。这大大节省了成本,我正在考虑 3 倍 n1-standard-4。我希望每个任务都非常短,所以不要认为这会对我们的工作量产生重大影响。是否可以将 preemptible VM 与 Composer 一起使用?
  2. 按照 中的要求安排转换 Composer 环境 on/off。我无法在文档中找到如何执行此操作,要么关闭整个环境,要么按照答案中的建议关闭工作人员。

有人帮忙吗?

这是一个有趣的问题。

您可能遇到的一个障碍是 Airflow 本身的性质。通常,Airflow 不适合临时使用。相反,我怀疑 Airflow 的绝大部分使用,无论是 Cloud Composer 还是其他,都是持久的。短暂性带来了成本效益,但也给 Airflow 架构带来了风险。例如,如果重新启动 Airflow 资源的调度程序失败会怎样?

回答您的问题:

  1. Composer 不支持抢占。虽然 PVM 有很多很棒的好处,但它们可能会使任务处于非常奇怪的状态,尤其是当您被多次抢占时。
  2. 此过程没有正式文档,因为它通常是非正式的,如果您必须依赖于您的环境,则不推荐使用。不过,基本方法是:
    1. 创建一个非常小的 GCE VM
    2. 设置 Cloud SDK (gcloud) 以连接到您的项目
    3. 创建一个 crontab,在需要时执行全新的 create/delete 环境/或/暂停 Composer 工作池中的 VM

从长远来看,我认为 Composer 会更好地支持临时使用 worker 资源。在短期内,另一种选择是 运行 在小型(大概)GCE VM 上的轻量级 Airflow 环境,然后在需要使用 Airflow 时 suspend/resume 该 VM。您不会以这种方式获得 Composer,但您确实受益于团队改进和扩展核心 Airflow 中的 GCP 支持的工作。