Várias vCPUs ou várias VMs idênticas, o que é melhor?

7

Estou procurando atualizar um dos nossos servidores, um servidor de oito núcleos executando o VMware Server 2. As VMs que ele executa são na maioria servidores da Web, de arquivos e de e-mail; especificamente, ele executa três servidores da Web, dois servidores de e-mail / arquivos e alguns servidores Jabber / XMPP.

Quando configuramos essa máquina originalmente, os dois servidores da Web foram configurados com duas vCPUs. Tivemos alguns problemas de desempenho muito sérios . Na época, estávamos executando apenas 3 VMs com um total de 5 vCPUs. Também estávamos executando o VMware Server 1 e um RAID1 . Nós agora atualizamos para um RAID10 e eu nunca consideraria nada menos! : -)

O novo servidor terá o VMware ESXi nele em vez do VMware Server. Estamos olhando para outra máquina de 8 núcleos com processadores mais rápidos ou um servidor de 16 ou 32 núcleos. Quero ter certeza de evitar os problemas que tivemos antes.

Como tive esses problemas com várias vCPUs antes, meu plano era substituir a VM do servidor Web principal por várias VMs de servidor da Web idênticas (2 a 4), cada uma com uma única vCPU, veiculando conteúdo de um compartilhamento NFS e colocá-las em uma configuração com balanceamento de carga. Então, eu basicamente estaria substituindo uma VM com pelo menos 4: 2 VMs de servidor web, uma VM de servidor de arquivos e uma VM de balanceamento de carga. Meu plano aqui é duplo: Primeiro, posso evitar vários iscos de vCPU que vi antes e, em segundo lugar, posso gerar novas VMs de servidor da Web para lidar com o aumento de carga.

Note que eu entendo que não estou recebendo todos os benefícios do balanceamento de carga porque ainda tenho um ponto único de falha .

Este é um bom plano ou é desnecessário? O VMware ESXi pode lidar com várias vCPUs melhor do que o VMware Server 1 há mais de três anos? Qual será o melhor desempenho, uma única grande VM de servidor web com 2 - 4 vCPUs ou 4 VMs com uma única vCPU? configuração com balanceamento de carga?

    
por Josh 01.03.2011 / 23:13

2 respostas

7

O VMware ESXi pode lidar com várias vCPUs melhor do que o VMware Server 1 há mais de três anos?

Sim, elas são linhas de produtos totalmente separadas, e o ESXi pode lidar com várias vCPUs muito bem. Estou executando um farm de vmware de 5 nós agora com uma mistura de máquinas em cada caixa, cada uma com 1, 2 e, em alguns casos, 4 processadores conforme necessário e funciona muito bem.

Qual deles terá melhor desempenho, uma única VM grande de servidor da web com 2 a 4 vCPUs ou 4 VMs com uma única vCPU, em uma configuração com balanceamento de carga?

Isso é menos uma pergunta do VMWare e mais uma pergunta de teste de aplicativo / website. O VMWare (ou qualquer outra máquina virtual bare metal moderna) pode fazer qualquer um - pode haver um custo para ter várias vCPUs anexadas a um convidado, mas isso pode ser compensado pelos custos de recursos de ter vários convidados em execução e por problemas de desempenho (ou melhorias, para essa matéria) sua aplicação web pode perceber de uma abordagem mais distribuída.

Na última edição, é realmente uma questão de testes e preferências arquiteturais, e não o único caminho verdadeiro, mas meu sentimento geral é que se você pode distribuir o aplicativo em mais de uma máquina virtual facilmente, é melhor construir alguns máquinas virtuais menores do que uma grande. Oferece mais flexibilidade e ajuda no desempenho a longo prazo, já que você pode mudar as coisas se for necessário. Em outras palavras, escalando para fora em vez de para cima

Com máquinas físicas, acho que pensamos em escalar para cima, colocando o máximo possível em uma "instância" do SO para tirar o máximo proveito do custo da licença e do hardware, mas com máquinas virtuais essas equações mudam um pouco - se você puder obter mais de uma instância de sistema operacional virtual pelo preço de uma licença, isso poderá mudar a forma como a infraestrutura do servidor foi projetada.

editar

link é um artigo que Iain mencionou ao discutir essa questão no chat que explica em detalhes por que é importante pensar na alocação de vCPU ao criar suas VMs.

    
por 01.03.2011 / 23:19
4

Eu posso abordar essa questão de várias maneiras, mas vou começar com a escala horizontal vs. vertical.

Escala horizontal

Pros

  • Can scale very large
  • Can scale across hosts (ie a vmware cluster)
  • Fault tolerant
  • Low/No downtime during maintenance

Cons

  • More overhead from VM OSes and Load Balancers
  • More maintenance/management (eg patching, SSL certs)
  • More website version management across web servers
  • Additional testing and development may be required for web site behind load balancer
  • Licensing?

Escala Vertical

Pros

  • Scales easier (just add another vCPU or two, or more memory)
  • Only one web server to manage, license, etc.

Cons

  • Downtime during maintenance/upgrades
  • Scaling too big can cause performance issues in a VM.
  • Doesn't truly scale.

Então, ambos têm seus bens e defeitos, e eu sou um grande fã de escalonamento horizontal, mas aqui está o que eu recomendo para você:

  1. Escale verticalmente até certo ponto (chego a esse ponto em um minuto).
  2. Faça sua lição de casa sobre o que vai custar tempo e dinheiro para seguir horizontalmente.
  3. Reserve bastante tempo para testar sua solução de dimensionamento horizontal.
  4. Quando você chegar ao ponto de escalar horizontalmente, poderá reduzir o seu servidor dimensionado verticalmente, criar alguns clones, lançá-los atrás do balanceador de carga já configurado e assisti-lo ao rock and roll.

Ok, então, qual é esse certo ponto de escala vertical?

Depende do seu hardware.

A VMware fez muito para agendamento de vCPU desde o ESX 2.x, e há mais espaço para crescer verticalmente. Quanto depende realmente das CPUs que você recebe.

O dimensionamento de VMs para desempenho nos dias de hoje requer compreensão do NUMA (acesso à memória não uniforme . Basicamente, você não usa Não quero que uma VM seja maior do que seu nó NUMA de CPUs. Aqui estão alguns links para ajudá-lo nessa área:

link

link

link

Acho que vou resumir dizendo que a CPU nunca foi um grande problema para mim, a menos que você esteja substituindo a CPU no seu host. Em vez disso, a memória é normalmente o culpado. Balão / troca de memória é um problema de desempenho perceptível muito .

Boa sorte!

    
por 02.03.2011 / 04:17