Reputation: 614
If this question seems basic to more IT-oriented folks, then I apologize in advance. I'm not sure it falls under the ServerFault domain, but correct me if I'm wrong...
This question concerns some backend operations of a web application, hosted in a cloud environment (Google). I'm trying to assess options for coordinating our various virtual machines. I'll describe what we currently have, and those "in the know" can maybe suggest a better way (I hope!).
In our application there are a number of different analyses that can be run, each of which has different hardware requirements. They are typically very large, and we do NOT want these to be run on the application server (referred to as app_server
below).
To that end, when we start one of these analyses, app_server
will start a new VM (call this VM1
). For some of these analyses, we only need VM1
; it performs the analysis and sends a HTTP POST request back to app_server
to let it know the work is complete.
For other analyses, VM1
will in turn will launch a number of worker machines (worker-1
,...,worker-N
), which run very similar tasks in parallel. Once the task on a single worker (e.g. worker-K
) is complete, it should communicate back to VM1
: "hey, this is worker-K and I am done!". Once all the workers (worker-1
,...,worker-N
) are complete, VM1
does some merging operations, and finally communicates back to app_server
.
My question is:
Aside from starting a web server on VM1
which listens for POST requests from the workers (worker-1
,..), what are the potential mechanisms for having those workers communicate back to VM1
? Are there non-webserver ways to listen for HTTP POST requests and do something with the request?
I should note that all of my VMs are operating within the same region/zone on GCE, so they are able to communicate via internal IPs without any special firewall rules, etc. (e.g. running $ ping <other VM's IP addr>
works). I obviously do not want any of these VMs (VM1
, worker-1
, ..., worker-N
) to be exposed to the internet.
Thanks!
Upvotes: 0
Views: 60
Reputation: 4062
Sounds like the right use-case for Cloud Pub/Sub. https://cloud.google.com/pubsub
In your case workers would be publishing events to the queue and VM1 would be subscribing to them.
Hard to tell from your high - level overview if it can be a match, but take a look at Cloud Composer too https://cloud.google.com/composer/
Upvotes: 1