Como fazer chamadas remotas do servidor A para B para criar máquinas virtuais

1

Esta é a minha primeira pergunta no serverfault, então espero estar fazendo isso, já que normalmente estou no Stackoverflow: -)

Eu tenho dois servidores Ubuntu 14.04 LTS, servidor A e B.

O servidor A executa o servidor da web em que meu portal do cliente é executado e onde os clientes podem solicitar máquinas virtuais.

O servidor B é o hypervisor com o KVM, onde as imagens e, por fim, as máquinas virtuais são criadas.

Eu criei recentemente um script bash no servidor A que:

  • obtém informações de uma tabela mysql com máquinas virtuais que ainda precisam ser criadas e as percorre;
  • verifica o espaço livre em disco do servidor B e, se houver espaço suficiente,
  • cria imagens com o programa fallocate no servidor B;
  • cria a máquina virtual com vert-install no servidor B com o uso de uma imagem criada anteriormente.

Todos esses comandos são executados com o uso de SSH. Isso significa que para cada máquina virtual eu preciso fazer 3 comandos SSH. Mais se um hipervisor não tiver espaço em disco suficiente para a criação de imagens.

Esse script funciona bem quando há apenas um cliente solicitando uma máquina virtual e quando há apenas um hipervisor. Ter vários clientes solicitando VMs e tendo vários hipervisores provavelmente quebrará o script. Então pensei na seguinte solução:

Sempre que um cliente clica no botão 'Order VM', uma chamada telnet para um hypervisor + port é feita e um daemon que atende nessa porta executa um script, por exemplo:

  • Porta 7000: crie a imagem
  • Porta 7001: crie a máquina virtual
O problema, no entanto, é a minha falta de conhecimento sobre esse tipo de coisa. Por exemplo:

  • Em que idioma eu escreveria o daemon? PHP é minha língua principal, mas como é 'a língua que morre' pode não ser bom para escrever daemons.
  • Como esse daemon pode ouvir em várias portas e executar a ação correta de acordo com a porta na qual algo entra?
  • O telnet é o protocolo correto a ser usado para esse tipo de processo? O daemon só escutaria em endereços privados em nossa própria rede, o que significa que a segurança não é problema aqui. Existem tecnologias diferentes que se adaptam melhor?

Eu não tentei muito porque não sei por onde começar. Há muito o que pensar, mas eu só preciso de um pequeno empurrão na direção certa para fazer as coisas começarem. Eu não preciso necessariamente de código de exemplo (pode ajudar, claro). Eu posso fornecer o script bash que eu criei, se necessário.

    
por Beeelze 05.02.2016 / 14:37

1 resposta

0

Não reinvente a roda. Basta usar o libvirt e as ligações de idioma de sua escolha.

    
por 08.02.2018 / 20:55