协调主机和工作机

时间:2018-06-07 16:20:41

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

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

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

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

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

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

我的问题是: 除了在VM1上启动一个侦听来自工作人员(worker-1,...)的POST请求的Web服务器之外,让这些工作人员与VM1进行通信的潜在机制是什么?是否存在非Web服务器方式来侦听HTTP POST请求并对请求执行某些操作?

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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

在你的情况下,工作人员会将事件发布到队列中,VM1将订阅它们。

很难从您的高级概述中了解它是否匹配,但也要看一下Cloud Composer https://cloud.google.com/composer/