Eu tenho uma aplicação web que requer muitas dependências. Atualmente, estou avaliando o uso de imagens kvm para ajudar nossos usuários a instalar esse aplicativo em seus servidores.
No entanto, temos algumas preocupações com a possibilidade de personalizar essas imagens, principalmente com rede e armazenamento.
Problemas potenciais de rede:
Muitos sites têm várias redes (por exemplo, uma rede para a interface da web pública e uma rede privada para dados) e os convidados virtuais precisam acessá-los em algum momento. Isso deve ser fácil de lidar usando duas (ou mais) interfaces de rede virtual. No entanto:
- alguns sites usam DHCP enquanto outros precisam de IP estático
- Restrições do endereço MAC estão presentes em algumas redes
- Se alterarmos o endereço MAC na linha de comando, o convidado virtual provavelmente atribuirá uma nova interface (ou seja, eth2 / eth3 em vez de eth0 / eth1). Isso acontece com nossos guests debian por causa das regras do udev.
- Quando esse problema de rede ocorre, geralmente, o convidado leva muito tempo no momento da inicialização ao tentar carregar alguns serviços de rede (como o MTA, por exemplo).
Preciso especificar que os hóspedes acessem atualmente as redes por meio de pontes.
Quais técnicas você está empregando para tais problemas? Existe uma maneira de configurar uma vez um convidado virtual e executá-lo em qualquer lugar com configuração mínima?
A libvirt pode fornecer alguma ajuda para esse processo?
Obrigado!
Editar:
Obrigado pelas primeiras respostas. Agora percebo que deveria ser um pouco mais preciso:
Primeiro, nosso aplicativo pode ser instalado em qualquer tipo de máquina virtual (XEN, VMWare, etc) e nós damos a escolha para nossos usuários. Estou apenas me concentrando no KVM porque alguns sites fizeram a solicitação de uma imagem KVM pré-configurada e não estão tão à vontade com as técnicas de virtualização quanto as que atualmente usam o Xen.
Em segundo lugar, o problema que eles podem enfrentar com problemas de rede descritos anteriormente é mais ou menos o mesmo problema que eu enfrento no trabalho: eu costumo criar uma máquina virtual no meu computador desktop antes de mover o arquivo para o nosso cluster para produção. No entanto, o ambiente é bem diferente entre meu computador desktop e o cluster. A versão do Linux é diferente, usamos diferentes redes privadas, etc.
Então, vamos dizer que eu só quero simplificar o processo de mover uma máquina KVM virtual do meu computador para o cluster.
Na verdade, eu estava procurando por uma solução robusta para dar aos convidados virtuais algumas dicas sobre seu ambiente. Por exemplo, adicionando algumas informações em arquivos XML libvirt como os endereços mac para eth0 e eth1 e o IP dessas interfaces, e outras coisas como essa (NFS, etc). Como usamos a ponte de rede, não acho que um servidor DHCP local no host possa ser uma boa solução e resolva apenas uma parte do problema.
Então, o que seria muito legal é uma maneira de comunicar informações de configuração do host para os convidados. Talvez isso já exista ou possa ser implementado de alguma forma.
Portanto, minha pergunta reformulada é: existe uma maneira robusta, padrão, elegante, seja qual for) para transmitir essas informações do host para os convidados (idealmente usando diretamente o libvirt) XML), isso pode ser implementado se ele já não existir ou essa idéia é completamente estúpida (então, por favor, dê argumentos para que essa seja uma idéia estúpida).
Obrigado (novamente)!