4

Я пишу распределенное исследовательское приложение с Akka, используя простую топологию мастера и нескольких рабочих, с целью развертывания во внутренний кластер узлов или внутри корпоративного облака. (Когда Akka 2.1 становится доступным Я изучу используя поддержку кластеризации)Краткосрочное развертывание Akka на нескольких узлах

Мой вопрос: Что это самый простой/лучший способ развернуть свой код (в виде папки, содержащей микроядра Akka) на каждый узел, запустите его, позвольте ему это сделать, затем снести и повторить по мере необходимости?

  • Каталог микроядра и исполняемый файл идентичны для каждого рабочего узла и всего лишь несколько МБ. Config содержит IP-адрес ведущего устройства, к которому они будут подключаться.
  • Я намерен вручную запустить мастер.
  • Устойчивость не вызывает беспокойства, поскольку это не критически важное для бизнеса приложение, а частный вопрос о проблеме .
  • Никакие важные данные не хранятся локально для рабочих.
  • После завершения приложения я могу захотеть повторно развернуть другое приложение, не разрывая узлы (например, уточнив кодовую базу).

Обновление: Найдено, что Кондор узлы для поддержки рабочих мест, работающих в режиме цельной машины. Это должно поддерживать работу микроядра в качестве работы, и просто нужно убедиться, что рабочие закончат, когда это будет сделано.

Обновление 2: Возможно, кто-то упомянул, что Zookeeper хорошо подходит для этого. По достоинству оценит вклад любого, у кого есть опыт.

ответ

2

Вот некоторые идеи. У меня нет опыта работы с Akka, но я знаю о grid-вычислениях и развертывании.

  1. использовать существующий инструмент сетки, такие как http://www.gridgain.com (которые имеют версию GPL). Также я слышал о том, как люди строят сетку с http://www.hazelcast.com/

  2. Используйте облако в коробке, например, Airframe, http://www.pistoncloud.com/press-releases/piston-cloud-launches-free-openstack-distribution/. Я уверен, что должны быть другие.

  3. Самолет поставляется с облачным литейным цехом, я считаю, но вы могли бы использовать его напрямую: https://micro.cloudfoundry.com/ Но не знаете, как эта версия масштабируется.

  4. Сверните свою собственную систему, установите ее в один образ VM, затем клонируйте ее на другие узлы.

Когда дело доходит до рулона, вы можете сделать это следующим образом, что очень похоже на то, что я уже разработал и хорошо работает.

  • Создайте приложение, используя maven, используя библиотеки, которые вам нравятся.

  • Push встроенные двоичные файлы в Sonatype Nexus.

  • Создайте пользовательскую пусковую установку, в которой заданы координаты maven модуля. Моя laucher сначала проверяет местное maven-репо для банок, если их не существует, тогда он загружает их из связи. Затем он создает путь класса всех банок в дереве транзитивных зависимостей. Затем он создает новый загрузчик классов с новым классом классов и запускает основной класс через загрузчик классов.

  • Напишите службу с использованием java-service-wrappe или аналогичной, чтобы при запуске проверял, какую версию кода запускать, читая некоторые координаты maven и имя основного класса из config. Config может быть файлом на сетевом диске, предварительно настроенном URL или даже zookeeper. Затем он передает это в программу запуска, которая загружает и запускает код.

  • Установите эту услугу на многие машины вручную или с помощью клонирования vm.

  • прибыль!

Я не упоминаю Akka специально, так как большая часть вашей проблемы, похоже, заключается в том, как получить код, запущенный на многоуровневых узлах.

Пользовательский маршрут работал хорошо для меня, но тогда у меня есть только несколько серверов, которые используют это, и все мои правильные грид-вычисления выполняются в синапсе данных. Но я действительно задаюсь вопросом, должен ли я начать снова, если один из этих open-source PaaS будет хорошо подходить.

+0

Спасибо за щедрость. Что вы сделали в итоге? –

Смежные вопросы