Compartilhar via


Perspectiva do Well-Architected Framework sobre o Azure Load Balancer

O processo de balanceamento de carga distribui o tráfego de rede para um grupo de dois ou mais servidores de back-end. O Azure Load Balancer é um serviço nativo do Azure que faz o balanceamento de carga de Camada 4 para Protocolo de Datagrama de Usuário (UDP) e Protocolo de Controle de Transmissão (TCP). O Load Balancer ajuda a fornecer baixa latência e alta disponibilidade para implantações regionais e globais.

Este artigo pressupõe que, como arquiteto, você revisou as opções de balanceamento de carga no Azure e escolheu Load Balancer para sua carga de trabalho. As diretrizes neste artigo fornecem recomendações arquitetônicas que são mapeadas para os princípios dos pilares do Well-Architected Framework.

Importante

Como usar este guia

Cada seção tem uma lista de verificação de design que apresenta áreas arquitetônicas preocupantes, juntamente com estratégias de design localizadas no escopo da tecnologia.

Também estão incluídas recomendações para os recursos de tecnologia que podem ajudar a materializar essas estratégias. As recomendações não representam uma lista completa de todas as configurações disponíveis para o Load Balancer e suas dependências. Em vez disso, eles listam as principais recomendações relacionadas às perspectivas de design. Use as recomendações para criar a prova de conceito ou otimizar os ambientes existentes.

Arquitetura fundamental que demonstra as principais recomendações:
Arquitetura de linha de base das Máquinas Virtuais do Azure.

Escopo de tecnologia

Esta revisão se concentra nas decisões interrelacionadas para os seguintes recursos do Azure:

  • Load Balancer

Essa orientação foca no SKU do Standard Load Balancer. As SKUs básicas do Load Balancer e do Gateway Load Balancer estão fora do escopo deste artigo.

Diagrama que mostra um balanceador de carga direcionando o tráfego.

Observação

Para aplicativos HTTP, considere o Gateway de Aplicativo do Azure ou o Azure Front Door em vez do Load Balancer. Essas alternativas gerenciam o balanceamento de carga e também fornecem recursos como Firewall de Aplicativo Web (WAF) e Segurança da Camada de Transporte (TLS).

Para saber mais, veja:

Confiabilidade

A finalidade do pilar de confiabilidade é fornecer funcionalidade contínua criando resiliência suficiente e a capacidade de se recuperar rapidamente de falhas.

Princípios de design de confiabilidade fornecem uma estratégia de design de alto nível aplicada a componentes individuais, fluxos do sistema e o sistema como um todo.

Lista de verificação de projeto

Comece sua estratégia de design com base na lista de verificação de revisão de design para confiabilidade. Determine sua relevância para seus requisitos de negócios, tendo em mente as camadas e os recursos das VMs (máquinas virtuais). Estenda a estratégia para incluir mais abordagens conforme necessário.

  • Entenda o impacto das garantias apoiadas pela Microsoft. Além de outros componentes em sua arquitetura, considere os SLA (contratos de nível de serviço) na meta de confiabilidade da sua carga de trabalho. Tenha em mente os seguintes pontos importantes:

    • Se o ponto de extremidade com balanceamento de carga não puder se conectar a todos os servidores back-end íntegros por um minuto inteiro, esse minuto será considerado indisponível. No entanto, se pelo menos uma solicitação for bem-sucedida no mesmo minuto, mesmo que outras pessoas falhem, esse minuto não será considerado tempo de inatividade.

    • O tempo de inatividade não inclui minutos causados pelo esgotamento da porta de tradução de endereços de rede de origem (SNAT). Certifique-se de configurar sua carga de trabalho para lidar com o número esperado de conexões e portas abertas adequadamente.

  • Suporte à redundância de zona em sua arquitetura de carga de trabalho. Recomendamos o SKU do Standard Load Balancer. Ele tem recursos de confiabilidade, como suporte à zona de disponibilidade, distribuição de tráfego em várias regiões e a capacidade de lidar com mais instâncias no pool de back-end. Esses recursos ajudam a resistir a falhas em níveis zonais, regionais e de instâncias individuais de VM. Esteja ciente das limitações, como o tamanho máximo do pool de back-end.

    Observação

    No Load Balancer, você gerencia o número de VMs com balanceamento de carga, mas não o número de instâncias do Load Balancer. Você pode configurar uma instância do Load Balancer para ser com redundância de zona ou fixá-la em uma zona se a carga de trabalho precisar agrupar VMs em uma única zona. A configuração zonal ou multizonal do endereço IP front-end determina a redundância do balanceamento de carga.

  • Dê suporte à redundância regional em sua arquitetura de carga de trabalho. Você pode configurar o Load Balancer para ser um balanceador de carga global. Nesta configuração, o Load Balancer possui um endereço IP público anycast estático que transmite para várias regiões. Quando os clientes solicitam esse endereço IP, suas solicitações vão para a instância de servidor mais próxima. O Load Balancer conecta-se a balanceadores de carga regionais para distribuir o tráfego com eficiência.

  • Avalie alterações na pilha de redes para dar suporte ao dimensionamento confiável. Considere expandir o pool de back-end usando regras de escala automática. Esteja ciente do possível esgotamento da porta SNAT para o tráfego de saída. Para resolver esse problema, use o Gateway nat do Azure para facilitar a configuração, mas entenda que ele não tem redundância de zona de disponibilidade. Como alternativa, use o Load Balancer para adição de redundância de zona. Para obter mais informações, confira Conexões de saída.

  • Atenuar possíveis falhas. Faça a análise do modo de falha e identifique mitigações. A tabela a seguir mostra tipos de falhas e como atenuá-las.

    Falha Mitigação
    O tráfego é direcionado para instâncias de aplicativo não íntegras. Monitore a integridade da carga de trabalho da instância. Implemente sondas de integridade HTTP que incluam verificações das dependências das cargas de trabalho.
    O tráfego é roteado para uma região que tem uma interrupção. Implante instâncias extras em outra região. Adicione um balanceador de carga global para redirecionar o tráfego para a nova região.
    A base de usuários do workload foi expandida para dar suporte aos usuários em uma nova região, que apresentam alta latência. O aplicativo agora experimenta um alto número de tempos limite e falhas. Implante instâncias extras em uma nova região e adicione-as na configuração de serviço. Como um balanceador de carga global, o Azure Load Balancer encaminha o tráfego para mais perto dos usuários.
  • Encaminhe o tráfego para instâncias íntegras. Você pode usar HTTP ou TCP para sondas de saúde. Para fornecer respostas de status mais avançadas, considere a criação de um endpoint HTTP para verificações de integridade, mesmo para aplicativos não HTTP. Essa abordagem é especialmente útil para verificar dependências e bancos de dados. Sem verificações HTTP, o balanceador de carga depende de conexões TCP, que podem não refletir com precisão o estado de saúde da VM.

    Você pode configurar a sonda de integridade no Balanceador de Carga. Para obter mais informações, consulte Diretrizes de design sobre investigações de integridade.

Recomendações

Recomendação Benefício
Selecione o SKU do Standard Load Balancer.
Para obter mais informações, consulte a comparação de SKU .
Esse SKU dá suporte a recursos de confiabilidade, como zonas de disponibilidade e balanceamento de carga de várias regiões.
Configure as regras para mapear o endereço IP de front-end para os endereços IP dos servidores de back-end a fim de possibilitar o balanceamento de carga.

O pool de endereços de back-end deve ter pelo menos dois pontos de extremidade para balanceamento de carga para redundância.
As regras são o núcleo do algoritmo de balanceamento de carga. Sem essa configuração, os modos de distribuição são desabilitados.
Configurar investigações da integridade.

- Defina o intervalo de investigação e os valores de limite. Considere a compensação entre a rapidez com que você pode detectar falhas e o número de solicitações para o endpoint.
– Avalie se deseja enviar tráfego para as instâncias quando todas as instâncias tiverem um status não íntegro. É possível usar essa configuração para implementar uma experiência de degradação normal. Para obter mais informações, consulte AllProbedUp.
Somente instâncias de pool de back-end íntegras recebem novas conexões. Essa configuração ajuda a manter alta disponibilidade e confiabilidade, pois encaminha o tráfego para longe de instâncias com falhas.
Configure endereços IP privados e públicos com redundância de zona. O endereço IP determina a redundância de zona do Load Balancer. A redundância de zona ajuda a carga de trabalho a suportar falhas zonais. Quando uma zona falha, os serviços podem fazer failover para uma das zonas restantes.

Segurança

O objetivo do pilar Segurança é fornecer garantias de confidencialidade, integridade e disponibilidade para a carga de trabalho.

Os princípios de design do Security fornecem uma estratégia de design de alto nível para atingir essas metas aplicando abordagens ao design técnico do Load Balancer.

Lista de verificação de projeto

Inicie sua estratégia de design com base na lista de verificação de revisão de design para Segurança e identifique vulnerabilidades e controles para melhorar a postura de segurança. Estenda a estratégia para incluir mais abordagens conforme necessário.

  • Revise as linhas de base de segurança. Para aprimorar a postura de segurança do aplicativo com balanceamento de carga feito pelo Azure Load Balancer, avalie a linha de base de segurança do Azure Load Balancer.

  • Proteja os servidores de back-end. Implante recursos em uma rede virtual que não tenha exposição direta à Internet. Coloque um balanceador de carga na frente da rede virtual. O ideal é que o balanceador de carga tenha recursos de firewall. Para aplicativos HTTP, considere o Gateway de Aplicativo ou o Azure Front Door. Para aplicativos não HTTP, considere o Load Balancer com um endereço IP privado (balanceador de carga interno) e rote o tráfego por meio do Firewall do Azure para obter mais segurança. Para obter mais informações, consulte Balanceador de carga interno.

    Você também pode usar o Load Balancer como um proxy reverso. Nesse caso, o balanceador de carga tem um endereço IP público com SNAT, que expõe recursos enquanto mascara seus endereços IP.

    Observação

    Para filtrar o tráfego para servidores de back-end, use grupos de segurança de rede (NSGs) nas sub-redes que contêm o front-end e o back-end. Não aplique NSGs diretamente ao serviço do Load Balancer. Quando os NSGs impõem regras, eles consideram as portas de origem, as portas de destino e os intervalos de endereços dos computadores de origem e de destino, não o balanceador de carga.

  • Design de conectividade privada. O Load Balancer funciona com o Link Privado do Azure. Se você espalhar recursos de aplicativo entre redes virtuais, poderá conectar recursos em redes virtuais diferentes. Use a interconexão de redes virtuais ou posicione o Link Privado à frente do balanceador de carga interno. A opção Link Privado fornece acesso mais seguro sem a necessidade de um endereço IP público. Também restringe o acesso de redes não pareadas.

    Você pode autorizar links privados usando o controle de acesso baseado em função para restringir o acesso somente às identidades que precisam dele.

  • Proteja seu aplicativo contra ameaças na borda da rede. Para designs que usam o Load Balancer como ponto de entrada, implemente a inspeção de tráfego no nível do ponto de extremidade. Esse design não tem recursos de segurança internos, como um WAF, portanto, você deve adicionar medidas extras para ajudar a proteger aplicativos HTTP. Para saber mais, confira Load balancer público. Além disso, certifique-se de proteger os pontos de extremidade do balanceador de carga contra ataques DDoS (negação de serviço distribuído).

  • Criptografar o tráfego de rede. O Load Balancer funciona na Camada 4 e dá suporte total ao balanceamento de carga de tráfego TCP e UDP. O Load Balancer não dá suporte à SSL (Secure Sockets Layer) e ao encerramento do TLS. Para balanceamento de carga HTTPS na camada de aplicativo, use o Gateway de Aplicativo.

Recomendações

Recomendação Benefício
Configurar o endereço IP de front-end para um endereço IP privado em uma rede virtual. Essa abordagem ajuda a garantir que o endereço IP front-end e a rede virtual permaneçam isolados da exposição direta à Internet. O balanceador de carga interno não pode aceitar o tráfego de entrada da Internet, o que reduz os possíveis vetores de ataque.
Proteger o balanceador de carga público com a Proteção contra DDoS do Azure. Um plano de Proteção contra DDoS fornece proteção avançada, incluindo recursos de detecção que monitoram o ponto de extremidade em busca de ameaças e sinais de abuso.

Otimização de custos

A otimização de custos se concentra na na detecção de padrões de gastos, na priorização de investimentos em áreas críticas e na otimização de outras para atender ao orçamento da organização e, ao mesmo tempo, aos requisitos comerciais.

Os princípios de design da Otimização de Custos fornecem uma estratégia de design de alto nível para atingir essas metas e fazer compensações conforme necessário no design técnico relacionado ao Load Balancer e seu ambiente.

Lista de verificação de projeto

Comece sua estratégia de design com base na lista de verificação de revisão de design para otimização de custos em investimentos. Ajuste o design para alinhar a carga de trabalho ao orçamento alocado. O design deve usar os recursos corretos do Azure, monitorar investimentos e encontrar oportunidades para otimizar ao longo do tempo.

  • Incluir as despesas de balanço de carga em seu modelo de custo. Considere os principais fatores, como a quantidade de dados que o Load Balancer processa e o número de regras de balanceamento de carga de entrada e saída. Para uma estimativa de custo precisa, use logs de tráfego para avaliar as necessidades de tráfego de entrada e saída.

  • Defina controles sobre os gastos. Registre e analise os custos do Load Balancer. Para gerenciar os custos com eficiência, use o Gerenciamento de Custos da Microsoft para criar orçamentos e configurar alertas. Os custos podem se acumular com base na quantidade de dados registrados e na duração do armazenamento, o que afeta a largura de banda e as despesas de armazenamento.

  • Remova recursos não utilizados. Identificar e remover instâncias de balanceador de carga não utilizadas. Analise os logs para avaliar o uso. Exclua instâncias do balanceador de carga que não estão associadas a VMs de back-end. Examine os logs de tráfego para localizar recursos subutilizados.

  • Otimizar os custos de fluxo. Use protocolos eficientes e compactação de dados para reduzir a carga no fluxo de tráfego e minimizar os custos.

    Para otimizar os custos, você pode reduzir o número de regras. Em vez de ter regras que usam endereços IP individuais e portas para cada endpoint, defina uma regra para um intervalo de portas no front-end que se conecta a um pool de back-end.

    Implemente a otimização nos fluxos de back-end. Por exemplo, várias consultas de banco de dados interceptadas por um balanceador de carga podem aumentar os custos por consulta. Para evitar esse custo extra, considere implementar um procedimento armazenado para consolidar a sequência de consultas.

  • Avalie o custo das operações. Considere despesas de recursos e custos operacionais, como manutenção, dimensionamento e conformidade. As regras do balanceador de carga podem afetar significativamente os custos. Reduza o número de regras para otimizar os custos financeiros e de gerenciamento.

Recomendações

Recomendação Benefício
Use a Calculadora de Preços do Azure para estimar os custos. Você pode converter o uso de tráfego previsto em estimativas de custo, o que facilita o planejamento e o orçamento.
Avalie o número de regras e reduza-as, se possível.

Avalie se você pode usar uma regra para resumir um intervalo de portas em vez de definir várias regras para endereços IP individuais.
Por exemplo, é possível usar as regras NAT de entrada para mapear endereços IP e portas para um pool de back-end, e não para VMs individuais.
As regras consolidadas otimizam os custos e simplificam as operações.

Ao escalar para cima ou para baixo, você pode adicionar ou remover endereços IP do pool de back-end sem alterar nenhuma regra.

Excelência operacional

A Excelência Operacional concentra-se principalmente em procedimentos relacionados às práticas de desenvolvimento , observabilidade e gerenciamento de lançamentos.

Os princípios de design da Excelência Operacional fornecem uma estratégia de design de alto nível para atingir essas metas para os requisitos operacionais da carga de trabalho.

Lista de verificação de projeto

Inicie sua estratégia de design com base na lista de verificação de revisão de design para a Excelência Operacional, definindo processos de observabilidade, teste e implantação relacionados ao balanceador de carga.

  • Use a infraestrutura como código. Implante e configure o Load Balancer juntamente com outros componentes de rede, como redes virtuais, emparelhamentos de rede, pontos de extremidade privados e NSGs. Conheça o tipo de recurso Microsoft.Network loadBalancers.

  • Use a implantação em camadas para arquiteturas de hub e spoke. Implante o hub primeiro porque ele é alterado com menos frequência do que a carga de trabalho implantada na rede spoke. Implemente o Load Balancer junto com a carga de trabalho. Se você reutilizar um único balanceador de carga em várias cargas de trabalho, considere colocá-lo no hub.

  • Implementar um sistema de monitoramento de rede abrangente. Implemente recursos de diagnóstico, como métricas multidimensionais para obtenção de insights e alertas em tempo real, logs de recursos baseados no esquema de eventos de integridade e o painel de Insights do Azure Monitor para monitoramento abrangente do Load Balancer.

Recomendações

Recomendação Benefício
Use métricas multidimensionais.

Para minimizar alertas excessivos, defina o tipo de agregação como Averagee use uma janela de dados de cinco minutos que tenha um limite de 95%. Para obter mais informações, consulte Configurar alertas para métricas multidimensionais. Examine os exemplos de disponibilidade de entrada e saída.
Percepções abrangentes em tempo real e configuração de alertas fornecem uma detecção aprimorada de problemas e permitem respostas rápidas.
Capture logs de recursos. As entradas do Load Balancer dependem do esquema de eventos de integridade. Os logs fornecem registros detalhados de eventos para que você possa identificar e resolver problemas rapidamente.
Use o painel de Insights do Azure Monitor para o Load Balancer. A visualização facilita as opções de design bem informadas e ajuda a identificar, diagnosticar e corrigir problemas rapidamente.
Durante as operações de manutenção, defina o estado do administrador como Down para tirar uma instância de back-end da rotação sem interromper as conexões existentes. Essa configuração ajuda a garantir que nenhuma nova conexão seja encaminhada para a instância de back-end, enquanto as conexões existentes são terminadas normalmente. Essa configuração de estado do administrador ajuda a reduzir a sobrecarga e a complexidade ao tirar uma VM da rotação de balanceamento de carga para manutenção ou aplicação de patch regulares.

Como uma opção alternativa para tirar uma instância de back-end da rotação, é possível aplicar NSGs para bloquear o tráfego da investigação de integridade do Load Balancer ou dos endereços IP e portas do cliente. Essa opção aumenta a complexidade.

Eficiência de desempenho

Eficiência de desempenho significa manter a experiência do usuário mesmo quando há um aumento na carga por meio do gerenciamento da capacidade. A estratégia inclui dimensionamento de recursos, identificação e otimização de possíveis gargalos e otimização para o desempenho de pico.

Os princípios de design de eficiência de desempenho fornecem uma estratégia de design de alto nível para atingir essas metas de capacidade em relação ao uso esperado.

Lista de verificação de projeto

Inicie a estratégia de design com base na lista de verificação de revisão de design para Eficiência de Desempenho a fim de definir uma linha de base baseada nos principais indicadores de desempenho para o Load Balancer.

  • Determine os objetivos de desempenho da rede. O balanceador de carga não tem limite no tráfego que ele pode dar suporte. Porém, ao definir metas de desempenho e planejar a capacidade, você deve testar o desempenho da rede.

    Use o teste de estresse para entender os requisitos de largura de banda da carga de trabalho. Inclua o balanceador de carga nesses testes. Se um único conjunto de dimensionamento de máquinas virtuais com várias VMs não for suficiente, você poderá adicionar outro conjunto de dimensionamento usando o mesmo balanceador de carga. Se as VMs não receberem solicitações rapidamente o suficiente, talvez seja necessário ajustar os componentes de rede, como adicionar mais balanceadores de carga. Mas, em vez de alterar o balanceador de carga, considere fazer alterações de design e otimizar sua carga de trabalho para lidar melhor com a carga.

  • Entenda os limites ao projetar sua estratégia de dimensionamento. Para atender aos requisitos de desempenho e dimensionar sua carga de trabalho, adicione ou remova VMs do pool de back-end. Um único pool de back-end no Standard Load Balancer pode lidar com até 5.000 VMs.

    Load Balancer não aplica limites de largura de banda. Mas os limites de taxa de transferência para VMs e redes virtuais ainda se aplicam. Para obter mais informações, consulte a largura de banda de rede da VM .

  • Atender solicitações rapidamente. O Load Balancer Standard tem uma camada que roteia o tráfego para endpoints de back-end com base em sua proximidade geográfica com o usuário.

    O Load Balancer também dá suporte à distribuição de carga com base na persistência da sessão. Quando você habilita esse recurso, as solicitações do mesmo cliente são direcionadas consistentemente para o mesmo servidor de back-end que manipulava suas sessões anteriores.

  • Colete dados para analisar o desempenho. Métricas multidimensionais do Load Balancer podem analisar o desempenho do serviço. Configure alertas para detectar alterações de desempenho. Use ferramentas como o painel do Azure Monitor Insights para visualizar o status do Load Balancer. Verifique se o recurso do Resource Health monitora o status de integridade e mantenha-se informado sobre problemas de desempenho e interrupções.

  • Otimizar o tráfego de rede. Não processe os mesmos dados várias vezes em etapas separadas. Execute todos os cálculos necessários em lote e armazene os dados. Essa abordagem reduz a latência e minimiza o tráfego de rede, o que melhora o desempenho geral.

Recomendações

Recomendação Benefício
Selecione a camada global no Standard Load Balancer se você tiver usuários globais. O modo de distribuição de proximidade geográfica dessa camada atende às solicitações do usuário a partir de endereços na região mais próxima, o que otimiza o desempenho.
Avalie se você deve habilitar a persistência de sessão caso queira que as solicitações do mesmo usuário sejam direcionadas para o mesmo servidor de back-end.

Do ponto de vista da confiabilidade, não recomendamos essa abordagem. Se você usar essa opção, o aplicativo deverá se recuperar normalmente sem interromper as sessões do usuário.

Há também uma compensação no balanceamento de carga porque ele restringe a flexibilidade da distribuição do tráfego entre vários back-ends uniformemente.
A persistência da sessão pode otimizar o desempenho e manter a continuidade das sessões do usuário, especialmente quando os aplicativos dependem da manutenção de informações de estado localmente. Mas há algumas compensações.
Durante a expansão, envie um sinal de investigação inoperante até que o aplicativo esteja totalmente inicializado e pronto para lidar com solicitações.

Durante a redução horizontal, envie um sinal de investigação inoperante para novas conexões no ponto de extremidade que está sendo redimensionado. As solicitações pendentes em conexões existentes continuam a ser processadas.
Sondas de saúde podem ajudar a otimizar as operações de dimensionamento. Eles ajudam a garantir que, durante a expansão, o aplicativo possa lidar com a carga de entrada. Antes de uma operação de redução horizontal, elas permitem uma redução gradual nas instâncias sem interromper as operações em andamento.

Políticas do Azure

O Azure fornece um amplo conjunto de políticas internas relacionadas ao Load Balancer e suas dependências. Algumas das recomendações anteriores podem ser auditadas por meio do Azure Policy. Por exemplo, você pode verificar se:

  • Balanceadores de carga, excluindo balanceadores de carga de SKU básicos, têm recursos de resiliência habilitados para endereços IP públicos em seu front-end.
  • Os logs de recursos são habilitados para acompanhar atividades e eventos que ocorrem em seus recursos e fornecer visibilidade e insights sobre as alterações.

Para uma governança abrangente, revise as definições integradas do Azure Policy para o Load Balancer e outras políticas que possam impactar a segurança na distribuição de tráfego.

Recomendações do Assistente do Azure

O Assistente do Azure é um consultor de nuvem personalizado que ajuda a seguir as práticas recomendadas para otimizar as implantações do Azure. As recomendações do Assistente estão alinhadas com os pilares do Well-Architected Framework.

Para mais informações, veja as recomendações no Assistente do Azure.