Use ou não use virtualização para o servidor Web Linux?

5

Eu mantenho os servidores para um grande projeto web (java + postgres + algumas ferramentas em volta) que atualmente está hospedado em três máquinas:

  1. Máquina: Mailserver (postfix), Ad-Server (lighttpd + php + openx)
  2. Máquina: Tomcat + Servlet
  3. Máquina: PostgreSQL-Server, conteúdo estático (via lighttpd)

Todas as máquinas rodam Debian Stable e estão conectadas via VPN (openvpn). Como o hardware é muito antigo (AMD Athlon 3000+ e 2GB de RAM em cada), é hora de mudar.

Estes servidores agora devem ser substituídos por uma grande máquina (16GB Ram, grande CPU da Intel suportando VT, 5 IP's).

A questão agora é: devo ainda separar as diferentes tarefas usando máquinas virtuais ou devo simplesmente colocar tudo na máquina como de costume? Onde estão os prós e contras?

Pensei no seguinte:

Virtualização Pró:

  • Segurança: Como as vm's estão separadas, você não pode pegar a máquina inteira (esperançosamente)

Con Virtualização:

  • Desempenho: há uma perda de desempenho
  • Trabalho: Todo trabalho de manutenção tem que ser feito várias vezes para cada vm
  • Comunicação: A comunicação das diferentes VMs (Servlet do Banco de Dados) fica mais complicada.
  • Limites de memória rígidos: preciso atribuir recursos estáticos (como memória) a cada máquina. Isso pode ser um problema se o meu servidor-db precisar de mais memória RAM por 30 segundos (do que foi atribuído) e que haveria mais memória RAM disponível em outras máquinas. Sem virtualização, isso não seria um problema.

Obrigado por qualquer sugestão.

    
por theomega 19.10.2009 / 22:01

5 respostas

1

Perda de desempenho - Sim, tecnicamente existe um. É algo que você ou seus usuários notarão? A menos que seja uma carga de trabalho high-end louca, ou você provisione VMs em excesso (ou esteja tentando espremer 5 VMs com uma alocação de RAM "normal" em um servidor antigo existente, duvido seriamente dela. Lembre-se de verificar sua RAM uso - se você está dividindo tudo, você não precisa, digamos, de 512megs para um servidor NTP que padroniza para o nível de execução 3. (Dividir off JUST um servidor NTP é excessivo, era meramente um exemplo.)

Trabalho - isso é verdade. Se for apenas de, digamos, um a três servidores, provavelmente não é grande coisa - faça a sua alteração, copie / cole seus comandos de uma sessão de terminal para outra. Passado isso, porém, você quer algum tipo de ferramenta de gerenciamento, atualmente estou olhando para Puppet .

* Limites de memória - depende da virt. solução que você usa. Alguns ambientes, como o ESX / vSphere, permitem que você aloque mais RAM às VMs do que as disponíveis fisicamente. Se você pagar pelo recurso, o ESX permite configurar pools de recursos e ajustará recursos automaticamente conforme necessário, com a capacidade de definir prioridades. Como tudo, você tem que saber como funciona e as compensações em um ambiente particular.

    
por 27.08.2010 / 22:04
4

A virtualização é boa, como muitas pessoas mencionaram, pelo fato de você poder facilmente fazer / restaurar um instantâneo.

Eu gostaria de abordar algumas coisas. Alguém mencionou a necessidade de manter várias máquinas versus uma. É possível reduzir bastante essa manutenção através de net boot dos vm's e montar as partições de todo o software a partir de um ponto central. Dessa forma, as atualizações / instalações de software migram automaticamente para as outras máquinas, eliminando a maior parte do tempo de manutenção adicional.

Há também uma terceira opção: as cadeias do FreeBSD. - Isso permite criar ambientes separados sem a sobrecarga da virtualização. - A separação é muito maior do que o chroot comum do GNU / Linux (tudo, até mesmo a camada de rede, é separado no nível do kernel) - cada cadeia pode ter seu próprio IP, e estes não são virtualizados, apenas ambientes isolados no kernel + sistema de arquivo. link

Eu não descartaria o ganho de segurança como profissional. É verdade que é possível sair de máquinas virtuais sob certas condições (bugs no software vm - embora estes sejam corrigidos; mantenha-se atualizado, como com qualquer outra coisa) - Segurança é sobre camadas, não uma camada é à prova de falhas. Enquanto a simplicidade tende a beneficiar a segurança, há algumas coisas que apenas lhe trazem muitos benefícios e, como mencionei, as coisas podem ser simplificadas pela montagem do sistema básico a partir de um local central (pode ser uma montagem somente leitura) -

Aqui está um exemplo do mundo real:

Digamos que um aplicativo php possua uma vulnerabilidade de injeção de mysql, um invasor pode explorar isso para gravar arquivos em seu servidor. (por exemplo: através da sintaxe INTO OUTFILE sql) - Uma abordagem comum é escrever um arquivo php contendo mais código de exploração, violando ainda mais o servidor; afinal de contas, um script php é quase equivalente a uma conta shell executando como o usuário que está executando (o usuário executando o processo apache) - A partir daí, um invasor é apenas um exploit local, longe do acesso root completo. Se o mysql estiver em um ambiente isolado, digamos, uma máquina virtual, um bsd jail ou um ambiente chroot, o invasor poderá gravar seu código php em um arquivo, mas ele nunca poderá executar o arquivo visitando um arquivo. url, já que o serviço mysql não teria acesso a nenhum arquivo hospedado pelo apache.

    
por 20.10.2009 / 03:27
3

Eu preferiria a virtualização porque

a.) Você pode fazer backups do servidor de uma forma muito fácil

b.) Você pode criar uma segunda instância de um servidor em execução para testar algo sem tocar no servidor de produção

c.) Você pode lidar perfeitamente com os recursos para dar a um servidor mais prioridade que os outros.

felicidades

arrancado

    
por 20.10.2009 / 01:56
3

virtualização é o caminho.

Dessa forma, você pode facilmente fazer backup / restauração ou até mesmo mover seu vm de um servidor para outro com o mínimo de tempo de inatividade.

com bom hardware, software e boa configuração, a perda de desempenho é mínima. basta usar o ssh para toda a comunicação e usar IPs locais separados que sejam inacessíveis da Internet. simples e seguro.

a longo prazo, você descobrirá que a manutenção é realmente mais fácil. openvz até deixa você facilmente tirar um instantâneo de qualquer vm em execução.

e escala! é muito mais fácil adicionar mais vm do que adicionar mais hardware.

também, qualquer um crash / down vm não afetará outros vm.

    
por 20.10.2009 / 02:37
0

Essa parte de segurança é bastante relativa, já que você terá que proteger três ambientes em vez de apenas um, e a separação sozinha não oferecerá muita segurança.

Você está certo de que há uma perda de desempenho, sem mencionar o fato de que qualquer bug no seu software de virtualização pode travar a máquina inteira.

    
por 19.10.2009 / 22:25