Afunilamento de largura de banda na VMWare ESX Virtual Machine

1

Eu tenho 2 servidores virtuais apache com balanceamento de carga que lidam com algumas milhares de solicitações por minuto, e estou tentando diagnosticar o gargalo que está diminuindo a velocidade deles.

Meus servidores da Web têm um NIC virtual neles e seus hosts VMWare possuem NICs de 7 gigabits em cada um deles. Todos esses NICs físicos são alimentados em portas de comutação de 100Mb / s.

No começo eu pensei que os hosts VMWare agregariam toda a largura de banda disponível para eles, e distribuiria para as máquinas virtuais de acordo com a demanda. No entanto, estou me perguntando agora se estou errado sobre isso.

A maneira como meu colega de trabalho explicou para mim, se eu tiver apenas uma NIC virtual em uma VM, ela se ligará a uma única NIC física, em vez de agregar a largura de banda de todas elas. então, na minha situação, isso é limitado pela largura de banda da porta do switch para 100 Mb / s. está correto?

Além disso, duas conexões de 100Mb / s (uma em cada servidor) seriam um gargalo em um site que está lidando apenas com 1000-2000 solicitações por minuto?

    
por Brent 30.01.2010 / 05:53

1 resposta

3

No que diz respeito à formação de equipes da NIC, seu colega de trabalho está mais ou menos correto.

Por padrão, o agrupamento de NICs no ESX mapeia cada NIC virtual em suas VMs para um uplink único (as NICs físicas) no vSwitch ao qual ele está conectado. As políticas de carga específicas do NIC são:

  • ID da porta: todo o tráfego de cada A NIC Virtual é mapeada para um uplink com base no número da porta.
  • Origem Mac hash: todo o tráfego de cada NIC virtual é mapeada para uma uplink baseado em um hash do Virtual Endereço MAC da NIC
  • IP hash: um hash da origem e endereços IP de destino para tráfego baseado em ip é usado para selecionar o uplink.

Destes três, somente o hashing de IP lhe dará qualquer efeito de agregação. O ESX só pode controlar a seleção do caminho de tráfego de saída, de modo que, para obter uma distribuição adequada do tráfego de entrada e de saída, seus comutadores físicos também devem ser configurados adequadamente para a agregação de portas (Etherchannel \ LACP).

Há um artigo da VMware KB muito útil aqui sobre como configurar vários comutadores (Cisco \ HP) para que o tráfego de entrada (onde o comutador decide a seleção do caminho) e o de saída (onde o ESX lida com a seleção do caminho) sejam distribuídos.

Observe que nenhuma dessas políticas resultará em tráfego distribuído em mais de um uplink para tráfego entre um único endereço IP de origem e um único destino; eles somente fornecem agregação quando há um intervalo de endereços IP envolvidos.

Para responder à sua segunda pergunta - isso depende de quantos dados cada solicitação envolve. Uma única conexão 100Megabit pode passar de 8000 pacotes / segundo, possivelmente mais se o tamanho da carga for muito menor que 1500 bytes. No entanto (simplificando as coisas massivamente e ignorando as despesas gerais) se uma solicitação típica envolver 30k de dados, por exemplo, cada uma precisará de 20 pacotes para concluir, de modo que a NIC possa, teoricamente, lidar com 250 solicitações / seg. Se as suas solicitações envolverem 1 Meg de tráfego, em média, o número máximo de solicitações é de 7/8 por segundo e, em condições normais, eu diria que você estaria bem se obtivesse números reais que eram > 50% dessas taxas.

Isso é apenas para ter uma ideia aproximada se o link puder transportar a largura de banda de dados brutos. Para se aproximar do que um link específico pode manipular, você também precisa considerar todos os handshaking envolvidos, latência de ponta a ponta entre o cliente e o servidor, quantas conexões simultâneas sua arquitetura pode manter em vôo e muito mais.

    
por 30.01.2010 / 06:58