【发布时间】: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> 有效)。我显然不希望这些虚拟机(VM1、worker-1、...、worker-N)暴露在互联网上。
谢谢!
【问题讨论】:
标签: google-cloud-platform cloud google-compute-engine