Как выполнять удаленные вызовы с сервера A на B для создания виртуального машин

Это мой первый вопрос о сбое сервера, поэтому я надеюсь, что все делаю правильно, поскольку обычно использую Stackoverflow: -)

У меня есть два сервера Ubuntu 14.04 LTS, сервер A и B.

Сервер A запускает веб-сервер, на котором работает мой клиентский портал и где клиенты могут заказывать виртуальные машины.

Сервер B - это гипервизор с KVM, на котором создаются образы и в конечном итоге виртуальные машины.


Недавно я создал сценарий bash на сервере A, который:

  • получает информацию из таблицы mysql с виртуальными машинами, которые еще нужно создать, и просматривает их в цикле;
  • проверяет свободное дисковое пространство на сервере B и, если места достаточно,
  • создает образы с программой fallocate на сервере B ;
  • создает виртуальную машину с vert-install на сервере B с использованием ранее созданного образа.

Все эти команды выполняются с использованием SSH. Это означает, что для каждой виртуальной машины мне нужно выполнить 3 команды SSH. Более того, если у гипервизора недостаточно места на диске для создания образов.


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

Каждый раз, когда клиент нажимает кнопку «Заказать виртуальную машину», выполняется telnet-вызов гипервизора + порт, и демон, прослушивающий этот порт, запускает сценарий, например:

  • Порт 7000: создать образ
  • Порт 7001: создайте виртуальную машину

Проблема, однако, в том, что я не разбираюсь в подобных вещах. Например:

  • На каком языке мне написать демон? PHP - мой основной язык, но, поскольку это «умирающий язык», он может не подходить для написания демонов.
  • Как этот демон может прослушивать несколько портов и принимать правильные меры в зависимости от того, на какой порт что-то входит?
  • Является ли telnet правильным протоколом для такого рода процессов? Демон будет прослушивать только частные адреса в нашей сети, это означает, что безопасность здесь не проблема. Есть ли другие технологии, которые подходят лучше?

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

1
задан 5 February 2016 в 15:37
1 ответ

Не изобретайте велосипед. Просто используйте libvirt и языковые привязки по вашему выбору.

0
ответ дан 4 December 2019 в 06:38

Теги

Похожие вопросы