Existe uma vantagem para balanceamento de carga usando várias VMs no mesmo hardware?

5

Alguns colegas estão sugerindo um esquema de balanceamento de carga da Web com vários servidores da Web (IIS7) em diferentes máquinas virtuais, todas em execução no mesmo hardware.

Esta é uma configuração realmente vantajosa? Todas as máquinas são de 64 bits, portanto, o endereçamento de memória não deve ser um problema.

    
por srmark 13.04.2012 / 17:59

4 respostas

8

A maneira que eu vejo é isto: Com a virtualização, você protege alguns dos recursos de processamento. Você separa em unidades discretas os servidores web; você pode atualizar um servidor enquanto tem outro para assumir, e pode redirecionar as solicitações se houver um problema.

Você pode tirar um instantâneo das VMs para reverter os problemas de produção.

É mais fácil migrar as VMs para um hardware separado quando / se você as obtiver, então, em vez de migrar configurações bare-metal (configurar um novo servidor da Web), basta mover a VM para uma nova máquina ou definir em um cluster "adequado", suas VMs estarão em uma boa posição para entrar na produção, em vez de reconfigurar a partir do zero.

Você pode configurar VSwitches separados para as NICs para controlar o fluxo de tráfego, se necessário.

Acredito que ele oferece mais flexibilidade e opções para ter várias máquinas no host da VM que gerenciam seu website.

Por outro lado, se você tiver apenas um host, poderá ter problemas com o ponto de falha. Se você tiver pelo menos duas NICs, isso ajuda a mitigá-la (você pode dedicar a NIC a uma determinada VM, dependendo das suas necessidades e configuração, por exemplo) e, dependendo da configuração do seu host, alguns problemas serão mais pronunciados. Por exemplo, se o volume do seu disco não for ideal, você sofrerá um desempenho reduzido por causa da contenção de E / S e, obviamente, seu processador terá que dividir recursos entre as VMs.

Realmente, a força para mim na virtualização é o gerenciamento e o caminho de migração mais fáceis no futuro. Eu acho muito mais fácil abstrair o hardware da máquina, então quando algo melhor / maior / mais rápido é comprado, você pode migrar sua configuração de trabalho estabelecida para aquele hardware com menos tempo de inatividade e problemas de configuração. Ou você pode equilibrar as máquinas entre os hosts. E no nosso caso, se tivermos um problema, ainda há uma possibilidade, se tivermos que fazer isso executar os servidores como VMs nas estações de trabalho até que as peças de reparo sejam enviadas para nossos servidores host usando o hipervisor no uma configuração temporária, sem que os usuários percebam realmente a diferença.

E o snapshot (em nosso caso de uso) foi ótimo para garantir que as atualizações não transformem nossos sistemas em pesos de papel na reinicialização. Instantâneo, atualizar (ou alterar a configuração), reiniciar, testar e excluir o snap se tudo correr bem.

Então, faz sentido? Se o seu site for muito trafegado, talvez não, porque você terá uma contenção de E / S. Se o seu site for menos carregado e você achar que receberá outro host no futuro, eu o consideraria muito bem. Eu acho que a abstração da virtualização ajuda a tornar mais fácil adicionar máquinas e alterar a configuração ao longo do tempo, mas se você está sofrendo por desempenho, a sobrecarga que a virtualização gera pode doer um pouco.

    
por 13.04.2012 / 18:15
3

Você terá mais sobrecarga do que a execução de apenas uma instância. O único benefício será que, se uma VM cair, você terá outra pronta para agir como um failover. Sua confiabilidade seria melhor se você tivesse mais hardware, é claro.

Uma possível vantagem disso é que, mais tarde, você poderá mover as VMs para outro hardware e inscrever mais recursos, mas poderá obter o mesmo benefício adicionando mais servidores ao balanceamento de carga à medida que for adicionando capacidade.

    
por 13.04.2012 / 18:04
2

Eu digo que sim, pois isso também lhe dará a capacidade de desativar uma das VMs para fazer alguma manutenção, enquanto a outra está ativa e exibindo um conteúdo para os usuários finais.

    
por 13.04.2012 / 20:12
1

Não é tão simples de responder ... Ele depende de milhares de coisas; -)

Deixar todos os afunilamentos de E / S (mems compartilhados, disco, rede, cpu) diminuírem para a última parte:

Para o seu Apache, pode ser mais eficiente executar "5 instâncias em 100 conexões" do que "1 instância em 500 conexões" Mas isso também pode ser arquivado apenas começando vários apaches, ou pode ser melhor resolvido resolvendo o apache lá, coloque um nginx na frente (muito melhor conexão de polling, ainda tem o apache atrás de rodar seu app); - ...

Além disso: Ter "um servidor virtual" no hostnode faz clonagem, backups & failover mais simples, claro.

Vários virtuais fazendo a mesma coisa provavelmente não trazem benefícios (ou benefícios que você pode arquivar melhor de outras maneiras)

Uma exceção é a tolerância a falhas, por isso, ter duas máquinas virtuais no mesmo hardware pode ajudar contra o SoftwareFails (segfault em apenas um apache), mas isso precisaria de uma configuração decente.

-

Geral:

'vitalização' SIM! backups, clones, em movimento

'executando a mesma imagem várias vezes no mesmo hardware' NO (sim também há casos em que isso poderia fazer sentido)

Desempenho: há coisas melhores a fazer

FaultTolerance: softwareFails apenas, nada que não possa ser feito meu monint

    
por 13.04.2012 / 18:21