
Olá cowboys e cowgirls,
Se eu tiver uma VM (KVM ou ESXi) servindo conteúdo estático no Apache e um webapp de streaming de vídeo no Tomcat, existe uma lógica em executar várias instâncias na mesma VM no mesmo kit e balanceá-las de carga? Para mim, parece conceitualmente inútil, pois ao receber as mesmas solicitações da Web recebidas, eles simplesmente compartilharão os recursos que, de outra forma, seriam dedicados a uma única instância; no entanto, posso imaginar cenários em que uma capacidade maior possa ser aproveitada usando 2, 3 ou mais VMs idênticas, talvez nos moldes do desempenho de threading no Tomcat ou algo semelhante, no entanto, qualquer motivo que eu pense tende a implicar codificação incorreta e território de solução alternativa, não design de práticas recomendadas. O exemplo de hardware aqui é uma caixa bastante capaz como um HP DL380 com 8 ou 12 núcleos e 64 GB de RAM servindo cerca de 4.000 conexões de mídia simultâneas, de uma forma ou de outra.
Atualização: Em termos de outros benefícios, como redundância e aplicação de patches, esses não são problemas, pois esse cenário provavelmente será replicado em até 100 máquinas físicas, todas com carga balanceada.
Atualização2: Também tenho preocupações sobre a capacidade de balancear a carga de vários serviços idênticos de um LB externo. se você estiver monitorando a latência da conexão do LB, então deve ser o caso de 2 VMs - 1 com 5 conexões, uma com 500devena verdade, parecem estar funcionando de forma idêntica, pois ambos extraem recursos do mesmo pool (sem fixação de CPU da VM, etc.). Martelar uma caixa também paralisaria a outra, silenciosa, tornando a distribuição das conexões realmente anormal e confusa.
Obrigado
Chris
Responder1
A única razão para fazer isso seria se (a) você obtivesse benefícios operacionais em torno de patches e similares, ou (b) pudesse encontrar algum tipo de incapacidade do seu hipervisor de mapear vCPUs para CPUs reais de maneira linear (ou seja, 2 x 4 convidados vCPU obtêm melhor rendimento do que 1 x 8 convidados vCPU). Você só provaria isso através do estresse ou da carga real de produção.
Responder2
Dado que uma máquina virtual só pode ter um número limitado de recursos (4-8 vCPUs dependendo da plataforma), se você deseja que os servidores web possam acessar todos os recursos do hardware host, então sim, você desejará executar vários convidados.
Além disso, se você tiver vários convidados, poderá colocá-los off-line para aplicação de patches sem qualquer interrupção do serviço para os usuários finais.