Como tornar a imagem do KVM na AMI do EC2

2

Nós temos poucos servidores baremetal (com debian os), onde rodamos múltiplas máquinas (100 +) KVM - principalmente debian e centos. Essas máquinas estão no LVM ou no sistema de arquivos distribuídos (moosefs & glusterfs)

É possível criar algum ambiente para automatizar a criação de máquinas, onde podemos especificar:

  • nome do host
  • tamanho do disco
  • outros (cpu, rede, ram) são opcionais

Agora, estamos criando novas máquinas a cada vez, à mão, e é chato, porque temos que fazer novas instalações todas as vezes. Gostaríamos de fazer algo semelhante ao Amazon Machine Images

Instalei proxmox por um segundo, mas não vi funcionalidade semelhante à AMI. Mas talvez eu esteja errado ...

    
por Marcin Jasion 07.09.2016 / 21:00

2 respostas

1

Meus processos padrão (manualmente)

  1. Eu crio uma imagem de base.
    • Da perspectiva da máquina host é apenas um arquivo .img ou .qcow2.
  2. Eu começo a duplicar a imagem de base
  3. Depois, altero o tamanho da imagem, se necessário
    • Para .qcow2, uso o utilitário qemu-img convert.
    • Para .img eu uso dd para acrescentar mais zeros no final da imagem.
  4. Em seguida, vou para a interface virt-manager e cria uma nova máquina virtual "usando a imagem existente". Nisso eu defini quanto processamento e memória eu preciso.
  5. inicializo a imagem da máquina e depois
    • eu mudo o endereço IP
    • eu mudo o nome do host
    • eu removo as chaves sshd para forçar o sshd a gerar novas
    • Eu redimensiono a partição / para usar o disco inteiro (isso é desnecessário se a imagem do convidado usar btrfs)

Tudo isso pode ser automatizado por um script de shell simples. A chave é aprender como usar o utilitário virsh para a criação do vms, certifique-se de que suas interfaces de rede sejam pontes, use o btrfs como sistema de arquivos guest. Então você pode duplicar a imagem, montar a imagem, alterar as configurações da imagem montada, desmontar a imagem, adicionar a vm com virsh e executar.

Eu ainda não fiz isso porque gerencio algumas VMs ... na verdade, uso o KVM para particionar um hardware enorme em dois ou três muito grandes. Eu sou um pouco autista nessa parte. Eu prefiro fazer meus próprios scripts para ter um alto grau de controle nesses aspectos.

Mais automatizado e fácil de usar

O que você está procurando é chamado openstack , que, como eu entendi, é muito amigável e pode usar o KVM, o VirtualBox, o LXD, o Xen, o VMWare como hypervisors. Uma interface para ligar todos eles.

Eu sei que existe. Parece bom. Servidor Ubuntu tem isso. Redhat também. Mas eu nunca toquei em um, porque virt-manager é o suficiente para mim.

Instantâneos

A mesma coisa que Iain sugeriu que fosse feita pelo ZFS, pode ser feita com o KVM padrão. O QCow2 suporta instantâneos. Isso significa que, para clusters, você pode criar uma imagem de base, criar a captura instantânea, montar a captura instantânea, alterar as configurações (IP, nome do host), desmontar e iniciar. A melhor parte é que apenas os setores alterados serão gravados no instantâneo.

Notas

Minha experiência é com 160 processadores lógicos / 2048 hosts de virtualização GiB divididos em até 10 máquinas virtuais. Todos esses são servidores linux (apache / php / postgres / java). Não tenho experiência alguma em centenas de pequenas máquinas virtuais em um grande hardware.

A propósito. Estou migrando do Debian e RedHat para o Ubuntu. A maior parte do que tenho está rodando no Ubuntu Server há anos. Os Legacy Debians vão morrer este ano. O legado RedHat no próximo ano. Não há muita diferença entre o Debian e o Ubuntu da perspectiva do servidor, eu escolho o Ubuntu porque coisas novas são empacotadas primeiro no Ubuntu.

ZFS

Eu testei o ZFS no linux alguns anos atrás e não percebi que era bom o suficiente para rodar servidores sérios nele. Eu escolho esperar pelo BTRFS e não tenho nada a reclamar. Eu estou usando em alguns dos meus servidores e minhas estações de trabalho. Vou mover meus servidores maiores para o início do ano que vem para melhorar meu backup.

Conclusão

Se a sua configuração for padronizada, talvez valha a pena reservar um tempo e criar seus próprios scripts, pois ele será muito automatizado. No entanto, se você precisar de vários tipos de appliances e lidar com diferentes necessidades do cliente, considere a possibilidade de aprender uma solução como o openstack.

    
por 07.09.2016 / 22:34
0

Eu criei uma imagem de base e tirei uma foto instantânea do ZFS. Em seguida, uso um clone do ZFS do instantâneo para cada VM. Eu também peguei um script para fazer isso e mudei vários parâmetros para a compilação do sistema, mude o hostname etc.

Leva apenas alguns segundos para ter uma VM funcionando.

    
por 07.09.2016 / 21:19