Координация мастер и рабочих машин - PullRequest
0 голосов
/ 07 июня 2018

Если этот вопрос кажется основным для более ИТ-ориентированных людей, то я заранее извиняюсь.Я не уверен, что он относится к домену ServerFault, но поправьте меня, если я ошибаюсь ...

Этот вопрос касается некоторых серверных операций веб-приложения, размещенного в облачной среде (Google).Я пытаюсь оценить варианты координации наших различных виртуальных машин.Я опишу то, что у нас есть на данный момент, и те, кто «в курсе», могут предложить лучший способ (я надеюсь!).

В нашем приложении существует ряд различных анализов, каждый из которых имеет свои требования к оборудованию.Как правило, они очень большие, и мы НЕ хотим, чтобы они выполнялись на сервере приложений (обозначается app_server ниже).

С этой целью, когда мы запускаем один из этих анализов, app_serverзапустит новую виртуальную машину (назовите это VM1).Для некоторых из этих анализов нам нужен только VM1;он выполняет анализ и отправляет HTTP-запрос POST обратно на app_server, чтобы сообщить, что работа завершена.

Для других анализов VM1, в свою очередь, запустит несколько рабочих машин (worker-1, ..., worker-N), которые параллельно выполняют очень похожие задачи.Когда задание для одного работника (например, worker-K) выполнено, оно должно сообщить VM1: «Эй, это работник-K, и я готов!».Как только все рабочие (worker-1, ..., worker-N) завершены, VM1 выполняет некоторые операции слияния и, наконец, возвращается к app_server.

Мой вопрос: Помимо запуска веб-сервера на VM1, который прослушивает POST-запросы от рабочих (worker-1, ..), каковы потенциальные механизмыэти рабочие общаются с VM1?Существуют ли не-веб-серверы способы прослушивания запросов HTTP POST и что-то с этим делать?

Следует отметить, что все мои виртуальные машины работают в одном регионе / зоне на GCE, поэтому они могут обмениваться данными.через внутренние IP-адреса без каких-либо специальных правил брандмауэра и т. д. (например, работает $ ping <other VM's IP addr> работает).Очевидно, я не хочу, чтобы какая-либо из этих виртуальных машин (VM1, worker-1, ..., worker-N) была открыта для доступа в Интернет.

Спасибо!

1 Ответ

0 голосов
/ 07 июня 2018

Звучит как правильный вариант использования Cloud Pub / Sub.https://cloud.google.com/pubsub

В вашем случае работники будут публиковать события в очереди, а VM1 будет подписываться на них.

Трудно сказать по вашему высокоуровневому обзору, может ли это быть совпадением,но взгляните на Cloud Composer тоже https://cloud.google.com/composer/

...