Home Technical Articles Impacto do Adaptive Load Balancing na produção
Applications

Impacto do Adaptive Load Balancing na produção

About The Author

Outline

Na nossa CDN, desenvolvemos continuamente formas novas e inovadoras de ajudar a nossa infraestrutura a manter um elevado desempenho e resiliência durante aumentos repentinos de carga. Isso geralmente envolve explorar otimizações em técnicas existentes que usamos. Além disso, validar novas abordagens é uma parte importante deste processo, pois garante que novas mudanças tenham os impactos positivos esperados nos ambientes de produção.

Quando o conteúdo se torna popular, replicamo-lo em vários servidores num centro de dados/Ponto de presença (Pop). Isto permite-nos equilibrar melhor a carga e lidar com tais picos, reduzindo o risco de sobrecarregar os servidores. Este mecanismo de replicação é chamado de ‘Hot Filing’, e o conteúdo popular é chamado de ‘hot file’. Recentemente, desenvolvemos uma otimização de equilíbrio de carga adaptável (ALB) que melhora o nosso arquivo a quente tradicional, tornando-o mais resistente aos picos de tráfego. Em particular, decide dinamicamente a quantidade de replicação necessária medindo a carga do servidor em vez de depender de limites estáticos. Isso distribui de forma mais uniforme a carga em todos os servidores em um pop, aumentando a capacidade geral de processamento de pedidos de qualquer pop e, portanto, a CDN. O nosso artigo anterior sobre Avaliação de um Sistema de Balanceamento de Carga Adaptável descreve a mecânica desta otimização.

Neste post, validamos o impactos positivo desta otimização na produção. Começamos por definir as métricas que usamos para medir o impactos. Em seguida, mostramos o impactos da otimização em cada uma dessas métricas através de exemplos. Finalmente, mostramos o impactos agregado da otimização em todos os POPs onde isso foi implementado. Em resumo, descobrimos que o tempo total dos servidores viu uma carga excessiva para além de um limite pré-definido reduzido em pelo menos 70%, enquanto quase todos os POPs viram uma melhoria nesta métrica. Esta otimização está agora globalmente ativada para todo o tráfego de clientes.

Definir as métricas

Para avaliar o impactos desta nova otimização na produção, definimos e monitoramos três métricas:

  1. Distorção do servidor: Esta é a proporção da carga de um servidor em relação à carga média em todos os servidores no pop.
  2. Número de ficheiros quentes: Este é o número de ficheiros replicados pelo mecanismo de ficheiros a quente a qualquer momento. Espera-se que o Adaptive Load Balancing aumente o número de arquivos quentes, já que o hot filling é o mecanismo subjacente para a sua distribuição de carga.
  3. Tempo que os servidores passam sobre a distorção alvo: Esta métrica avalia a eficácia do Adaptive Load Balancing. Quando definimos o nosso limite de assimetria alvo para um valor específico, queremos ver que a assimetria da maioria dos servidores é geralmente menor do que esse valor.

Impacto da otimização nas métricas monitorizadas

ALCANÇAR A DISTORÇÃO ALVO

A figura abaixo mostra dois instantâneos da distribuição de carga dos servidores num pop. À esquerda (sem Adaptive Load Balancing), vemos uma série de servidores que excedem o alvo de assimetria (caixa vermelha) com a sua carga acima de 1,8 vezes a mediana do pop. À direita (com Adaptive Load Balancing), vemos um maior equilíbrio entre servidores, sem servidores que exibem uma carga superior a 1,8 vezes a mediana.

Alteração na distribuição de carga com o Adaptive Load Balancing. Notamos uma redução nos servidores sobrecarregados.

NÚMERO DE ARQUIVOS QUENTES E DISTRIBUIÇÃO DE CARGA
Em seguida, examinamos como o número de arquivos hot foi afetado e as alterações correspondentes à carga em cada servidor. O gráfico abaixo mostra que o número de arquivos quentes aumentou quando o ALB foi ativado em um pop. Este comportamento era esperado uma vez que o mecanismo aumenta seletivamente as hipóteses de os ficheiros serem descarregados de servidores com uma carga mais elevada.

Fundamentalmente, o arquivo a quente e o ALB reduzem a carga em servidores individuais aumentando o número de servidores que prestam serviços a arquivos específicos. Isto aumenta a carga de armazenamento em cada servidor. No entanto, os arquivos adicionais escolhidos para serem replicados a qualquer momento são relativamente baixos em comparação com o total de arquivos servidos a partir do pop, uma vez que são selecionados apenas de servidores externos que exigem descarregamento. Na maioria dos casos, o espaço adicional em cache usado é muito pequeno em comparação com o espaço total em disco. Portanto, o trade-off vale a pena, mas importante para identificar e estar ciente. Na nossa implementação, incluímos verificações de sanidade para validar que o uso da cache não é afetado negativamente por esta otimização.

Número de ficheiros quentes. O número aumenta quando o Adaptive Load Balancing é ativado (marcador vermelho), uma vez que os servidores externos são tentados a ser descarregados.

O segundo gráfico mostra o volume de tráfego entregue por cada servidor durante o mesmo período naquele pop. Observamos que quando o Adaptive Load Balancing foi ativado (linha vermelha tracejada) a carga entre os servidores ficou mais equilibrada. Isso tornou os servidores mais resistentes ao tráfego de entrada e reduziu o risco de sobrecarregar servidores.

Distribuição de carga (Mbps) num pop entre 05/02-05/04. Quando o Adaptive Load Balancing é ativado, a distribuição torna-se mais suave, com mais servidores a fornecer tráfego mais próximo da mediana. Isso ajuda a reduzir o risco de os servidores ficarem sobrecarregados com novos tráfego.

TEMPO GASTO SOBRE A DISTORÇÃO ALVO
Aqui, consideramos uma experiência em que um pop foi definido para manter uma distorção alvo de 1,6x. Na figura abaixo, a linha laranja mostra a distribuição de “skewness do servidor” durante o período do experimento. Comparando esta distribuição com a linha azul, que é a distribuição correspondente para o período de base (sem Adaptive Load Balancing), vimos uma mudança de carga em direção à mediana. Notavelmente, a cauda da distribuição também foi reduzida significativamente, com o percentil 99 caindo de 2,12 para 1,52, abaixo da assimetria alvo.

O Adaptive Load Balancing diminui a carga máxima do servidor e aproxima as cargas do servidor da mediana.

Reduzir essa “cauda” na distribuição é o principal objetivo da otimização, uma vez que os servidores dessa cauda, ou seja, aqueles com maior carga, correm um maior risco de serem sobrecarregados com novos picos de tráfego. Para quantificar ainda mais esta redução, também medimos o número de minutos para os quais qualquer servidor entregou tráfego sobre o alvo durante os períodos de experiência com/sem Adaptive Load Balancing:

O Adaptive Load Balancing reduz o tempo que os servidores gastam entregando uma carga acima de um limite alvo.

Neste caso, observamos uma redução de 88% no tempo gasto sobre a distorção alvo neste pop. Este é um bom indicador de que o Adaptive Load Balancing pode manter a assimetria da distribuição de carga em torno do valor desejado.

Resultados da implementação global

Depois de testar a otimização num punhado de pops selecionados e de ver bons resultados nas métricas medidas, implantámos o sistema em cada pop para quantificar o impactos agregado ao longo do tempo. Como antes, medimos o número de servidores de minutos coletivos em um pop gasto entregando tráfego acima da nossa skewness de alvo especificado (definido como 1.8x carga mediana de servidor em um pop). O gráfico seguinte mostra duas distribuições de minutos que os servidores gastaram acima desse limite para 75 POPs. A linha azul corresponde a 4 dias de dados da linha de base, e a linha laranja corresponde a 4 dias de dados do Adaptive Load Balancing. A mudança geral da distribuição para a esquerda mostra que os servidores nos POPs que executam o Adaptive Load Balancing passaram menos minutos acima do limite.

Agregar minutos gastos pelos servidores entregando carga maior do que o limite especificado (1,8 * mediana) ao longo de 4 dias para todos os POPs. Com o Adaptive Load Balancing, a distribuição é deslocada para a esquerda, mostrando que o mecanismo mantém as cargas do servidor abaixo do desvio alvo da mediana por mais tempo.

Para compreender melhor os impactos nos POPs individuais, também registámos a alteração percentual para esta métrica para cada POP. Os resultados mostraram que metade dos POPs teve uma redução de 70-95% no tempo total dos servidores acima da distorção alvo, e quase todos os POPs viram uma redução no tempo gasto acima do limiar.

Em nosso esforço contínuo para melhorar continuamente o desempenho e a confiabilidade de nossa CDN, recentemente implantamos e avaliamos uma otimização na maneira como equilibramos o tráfego dentro de um pop. Esta otimização identifica servidores carregados acima de um limite especificado em comparação com o resto do pop e descarrega esses servidores, especialmente atenuando o risco de impactos no desempenho em caso de novos picos de tráfego. Os resultados da produção demonstram melhorias significativas que têm sido consistentes com resultados anteriores de simulação em mostrar a eficiência da otimização em manter a distribuição da carga do servidor dentro de uma distorção desejada. Como resultado, agora ativámos esta otimização globalmente para todo o tráfego de clientes.

Um agradecimento especial a Angela Chen por trabalhar na implementação e implementação deste mecanismo. Além disso, graças a Scott Yeager, Derek Shiell, Marcel Flores, Anant Shah e Reed Morrison por ajudarem nas discussões gerais, Colin Rapor ajudarem nas discussões gerais, Richard Rymer e Olexandr Rybak por ajudarem na recolha e visualização de dados.