Python IPC один ко многим

Я пишу приложение на Python для управления кластером Linux-машин и ищу эффективный способ отправки команд на все хосты.

Общая архитектура приложения:

  • Интерфейс управления
  • Диспетчер команд
  • Узлы

Я начал писать приложение, используя простой скрипт Python на локальных узлах, а затем вызывая его из SSH (таким образом, используя команды оболочки для отправки команд), но я ищу более эффективное и родное решение.

Было бы здорово, если бы я мог удаленно выполнять код Python без использования SSH и передавать (замаринованные) объекты Python.

Учтите, что он должен иметь возможность связываться с несколькими сотнями хостов по сети и поддерживать SSL/TLS.

В качестве эталона рассмотрим архитектуру VmWare vCenter, поскольку моя цель — создать что-то очень похожее, поэтому какой подход/технологию вы бы использовали?


person Martino Dino    schedule 03.03.2012    source источник
comment
Звучит как соль (saltstack.org), я подозреваю, что изучение их кода может быть полезным :)   -  person malangi    schedule 03.03.2012
comment
Вау, быстро просматривая их документы, это кажется решением, проверим и адаптируем образец, чтобы проверить, правильный ли это подход, спасибо за указание   -  person Martino Dino    schedule 03.03.2012
comment
@liwp спасибо за редактирование макета, в следующий раз лучше отформатирую вопросы ;)   -  person Martino Dino    schedule 03.03.2012


Ответы (1)


Как и @malangi, я тоже собирался предложить Соль. Если вы действительно хотите создать собственное решение, а не повторно использовать Salt, вы можете использовать ZeroMQ в качестве коммуникационного бэкенда ( это то, что делает соль). ZeroMQ очень быстр и скрывает от вас все сетевые коммуникации за очень красивым и простым, но мощным API сокетов.

Похоже, что ZeroMQ еще не выполняет соединения SSL/TLS: см. этот вопрос . Но взгляните на эту страницу в ZeroMQ wiki для поиска альтернатив.

person liwp    schedule 03.03.2012
comment
Судя по всему, соль поддерживает шифрование PKI, так что, по крайней мере, для меня это приемлемо. Что касается общей архитектуры, в соли вроде есть все, что мне нужно, в ближайшие дни постараюсь развернуть небольшой виртуальный тестовый кластер и начать тестирование. - person Martino Dino; 03.03.2012
comment
@martino-dino кажется, вы уже нашли свое решение, однако, если вы каким-то образом в конечном итоге создадите свое собственное, вы также можете рассмотреть Versile Python для общения (полное раскрытие: я разработчик Versile). Он обеспечивает связь на уровне объекта, которая может включать прокси-серверы для собственных объектов python. и поддерживает защищенные соединения PKI. - person Versile; 03.03.2012
comment
@Versile Спасибо за ваш ответ, я рассмотрю эту новую структуру, если она подходит для моих нужд, и отчитаюсь. - person Martino Dino; 09.03.2012