【问题标题】:Coordinating master and worker machines协调 master 和 worker 机器
【发布时间】:2018-11-17 15:35:52
【问题描述】:

如果这个问题对于更多面向 IT 的人来说似乎很基本,那么我提前道歉。我不确定它是否属于 ServerFault 域,但如果我错了,请纠正我......

此问题涉及托管在云环境 (Google) 中的 Web 应用程序的一些后端操作。我正在尝试评估协调我们各种虚拟机的选项。我将描述我们目前拥有的东西,那些“知道的”可能会提出更好的方法(我希望!)。

在我们的应用程序中,可以运行许多不同的分析,每种分析都有不同的硬件要求。它们通常非常大,我们不希望它们在应用服务器上运行(以下称为app_server)。

为此,当我们开始其中一项分析时,app_server 将启动一个新 VM(称为 VM1)。对于其中一些分析,我们只需要VM1;它执行分析并将 HTTP POST 请求发送回app_server,让它知道工作已完成。

对于其他分析,VM1 将依次启动许多工作机器 (worker-1,...,worker-N),它们并行运行非常相似的任务。一旦单个worker(例如worker-K)的任务完成,它应该与VM1通信:“嘿,这是worker-K,我完成了!”。一旦所有工作人员(worker-1,...,worker-N)都完成后,VM1 会进行一些合并操作,并最终与app_server 通信。

我的问题是: 除了在VM1 上启动一个Web 服务器来监听来自worker 的POST 请求(worker-1,..),让这些worker 与VM1 通信的潜在机制是什么?是否有非网络服务器方式来监听 HTTP POST 请求并对请求进行处理?

我应该注意,我的所有虚拟机都在 GCE 上的同一区域/区域内运行,因此它们能够通过内部 IP 进行通信,而无需任何特殊的防火墙规则等(例如运行 $ ping <other VM's IP addr> 有效)。我显然不希望这些虚拟机(VM1worker-1、...、worker-N)暴露在互联网上。

谢谢!

【问题讨论】:

    标签: google-cloud-platform cloud google-compute-engine


    【解决方案1】:

    听起来像是 Cloud Pub/Sub 的正确用例。 https://cloud.google.com/pubsub

    在您的情况下,工作人员将向队列发布事件,而 VM1 将订阅它们。

    很难从您的高级概述中判断它是否可以匹配,但也可以看看 Cloud Composer https://cloud.google.com/composer/

    【讨论】:

    • Cloud Pub/Sub 看起来很有前途(并且可能对其他一些任务有用)。谢谢!
    猜你喜欢
    • 2016-05-11
    • 2018-02-14
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 2010-09-12
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多