Partilhar via


Perspetiva do Framework Well-Architected 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 back-end. O Azure Load Balancer é um serviço nativo do Azure que faz o balanceamento de carga de Layer-4 para UDP (User Datagram Protocol) e TCP (Transmission Control Protocol). 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ê tenha revisado as opções de balanceamento de carga no Azure e escolhido o Balanceador de Carga para sua carga de trabalho. As orientações neste artigo fornecem recomendações de arquitetura mapeadas de acordo com os princípios dos pilares do Well-Architected Framework.

Importante

Como usar este guia

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

Também estão incluídas recomendações para os recursos tecnológicos que podem ajudar a materializar essas estratégias. As recomendações não representam uma lista exaustiva de todas as configurações disponíveis para o Load Balancer e suas dependências. Em vez disso, eles listam as principais recomendações de acordo com as perspetivas de design. Use as recomendações para criar sua prova de conceito ou para otimizar seus ambientes existentes.

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

Âmbito da tecnologia

Esta análise concentra-se nas decisões inter-relacionadas para os seguintes recursos do Azure:

  • Balanceador de carga

Esta orientação concentra-se no SKU do Balanceador de Carga Padrão. As SKUs Basic Load Balancer e 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 a Porta da Frente do Azure em vez do Balanceador de Carga. Essas alternativas gerenciam o balanceamento de carga e também fornecem recursos como o encerramento do Web Application Firewall (WAF) e do Transport Layer Security (TLS).

Para mais informações, consulte:

Fiabilidade

O objetivo do pilar Confiabilidade é fornecer funcionalidade contínua, criando resiliência suficiente e a capacidade de se recuperar rapidamente de falhas.

Os princípios de design de fiabilidade fornecem uma estratégia de design de alto nível aplicada a componentes individuais, fluxos do sistema e ao sistema como um todo.

Lista de verificação de design

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

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

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

    • O tempo de inatividade não inclui minutos causados pelo esgotamento da porta SNAT (Source Network Address Translation). Certifique-se de configurar sua carga de trabalho para lidar com o número esperado de conexões e abrir portas de acordo.

  • Ofereça suporte à redundância de zona em sua arquitetura de carga de trabalho. Recomendamos o Standard Load Balancer SKU. 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 a nível zonal, regional e de instâncias individuais de VMs. 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 Balanceador de Carga para ser redundante de zona ou fixá-la em uma zona se a carga de trabalho precisar colocar VMs em uma única zona. A configuração zonal ou multizona do endereço IP front-end dita a redundância de balanceamento de carga.

  • Ofereça 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 tem 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 do servidor mais próxima. O Load Balancer se conecta a balanceadores de carga regionais para distribuir o tráfego de forma eficiente.

  • Avalie as alterações em sua pilha de rede para oferecer suporte a dimensionamento confiável. Considere dimensionar o pool de back-end usando regras de escalonamento automático. Esteja ciente do potencial 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 redundância de zona adicionada. Para obter mais informações, consulte Conexões de saída.

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

    Fracasso Atenuação
    O tráfego é direcionado para instâncias de aplicações com problemas. Monitore a integridade da instância de carga de trabalho. Implemente testes de integridade HTTP que incluam verificações de dependências de carga de trabalho.
    O tráfego é encaminhado 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 da carga de trabalho foi expandida para oferecer suporte a usuários em uma nova região e eles têm alta latência. O aplicativo agora enfrenta um alto número de tempos limite e falhas. Implante instâncias extras em uma nova região e adicione-as na configuração do serviço. Como um balanceador de carga global, o Azure Load Balancer roteia o tráfego para mais perto dos usuários.
  • Encaminhe o tráfego para instâncias íntegras. Você pode usar HTTP ou TCP para testes de integridade. Para fornecer respostas de estado mais detalhadas, considere criar um endpoint HTTP para verificações de integridade, mesmo para aplicações não HTTP. Essa abordagem é especialmente útil para verificar dependências e bancos de dados. Sem testes HTTP, o balanceador de carga depende de conexões TCP, que podem não refletir com precisão a integridade da VM.

    Você pode configurar a sonda de integridade no Load Balancer. Para obter mais informações, consulte Orientações de design sobre sondas de saúde.

Recomendações

Recomendação Benefício
Selecione o SKU do Balanceador de Carga Padrão.
Para obter mais informações, consulte a comparação de SKU em .
Este SKU suporta recursos de confiabilidade, como zonas de disponibilidade e balanceamento de carga de várias regiões.
Configure regras para mapear o endereço IP do front end para os endereços IP dos servidores do back end para habilitar o balanceamento de carga.

O grupo de endereços back-end deve ter pelo menos dois pontos de extremidade back-end para equilíbrio de carga e 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 desativados.
Configure testes de integridade.

- Defina o intervalo de sondagem e os valores limite. Considere o equilíbrio entre a rapidez de deteção de falhas e o número de pedidos ao endpoint.
- Avalie se deseja enviar tráfego para as instâncias quando todas elas estiverem em um estado de falha. Você pode usar essa configuração para implementar uma experiência de degradação graciosa. Para obter mais informações, consulte AllProbedUp.
Somente instâncias saudáveis do pool de back-end recebem novas conexões. Essa configuração ajuda a manter a alta disponibilidade e a confiabilidade porque roteia o tráfego para longe de instâncias não íntegras.
Configure os endereços IP privados e públicos para serem zona redundante. 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 confidencialidade, integridade e disponibilidade garantias para a carga de trabalho.

Os princípios de design de segurança e fornecem uma estratégia de design de alto nível para alcançar esses objetivos, aplicando abordagens ao design técnico do Balanceador de Carga.

Lista de verificação de design

Inicie a sua estratégia de conceção com base na lista de verificação da revisão de conceção para a segurança e identifique vulnerabilidades e controlos para melhorar a postura de segurança. Alargar a estratégia de modo a incluir mais abordagens, conforme necessário.

  • Revisão dos padrões de segurança. Para melhorar a postura de segurança do seu aplicativo com balanceamento de carga pelo Azure Load Balancer, revise a linha de base de segurança para o Load Balancer.

  • Proteja os servidores back-end. Implante recursos em uma rede virtual que não tenha exposição direta à Internet. Proteja a rede virtual com um balanceador de carga. Idealmente, o balanceador de carga deve ter recursos de firewall. Para aplicativos HTTP, considere o Gateway de Aplicativo ou a Porta de Entrada do Azure. Para aplicativos não HTTP, considere o Balanceador de Carga com um endereço IP privado (balanceador de carga interno) e roteie o tráfego por meio do Firewall do Azure para maior 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 back-end, use NSGs (grupos de segurança de rede) nas sub-redes que contêm o front-end e o back-end. Não aplique NSGs diretamente ao serviço 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 para conectividade privada. O Balanceador de Carga funciona com o Azure Private Link. Se você espalhar recursos de aplicativos por redes virtuais, poderá conectar recursos em diferentes redes virtuais. Utilize o emparelhamento de rede virtual ou coloque o Private Link diante do balanceador de carga interno. A opção Private Link fornece acesso mais seguro sem a necessidade de um endereço IP público. Também restringe o acesso de redes não emparelhadas.

    Você pode autorizar links privados por meio de controle de acesso baseado em função para restringir o acesso apenas às identidades que dele necessitam.

  • Proteja seu aplicativo contra ameaças na borda da rede. Para projetos que usam o Balanceador de Carga como ponto de entrada, implemente a inspeção de tráfego no nível do ponto final. 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 obter mais informações, consulte balanceador de carga público. Certifique-se também de proteger os pontos de extremidade do balanceador de carga contra ataques distribuídos de negação de serviço (DDoS).

  • Criptografe o tráfego de rede. O Load Balancer funciona na Camada 4 e suporta totalmente o tráfego TCP e UDP de balanceamento de carga. O Load Balancer não suporta Secure Sockets Layer (SSL) e terminação TLS. Para balanceamento de carga HTTPS na camada de aplicativo, use o Application Gateway.

Recomendações

Recomendação Benefício
Configure o endereço IP front-end para um endereço IP privado numa 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 tráfego de entrada da Internet, o que reduz potenciais vetores de ataque.
Proteja 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 deteçã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 concentra-se em detectar padrões de gastos, priorizar investimentos em áreas críticas e otimizar em outras de forma a respeitar o orçamento da organização, ao mesmo tempo que satisfaz os requisitos empresariais.

Os Princípios de Projeto de Otimização de Custos fornecem uma estratégia de design de alto nível para alcançar esses objetivos e fazer concessões conforme necessário no projeto técnico relacionado ao Load Balancer e ao seu ambiente.

Lista de verificação de design

Inicie sua estratégia de design com base na lista de verificação de revisão de projeto para Otimização de Custos para investimentos. Ajuste o design para que a carga de trabalho esteja alinhada com o orçamento alocado para a carga de trabalho. Seu design deve usar os recursos certos do Azure, monitorar investimentos e encontrar oportunidades para otimizar ao longo do tempo.

  • Considere as despesas de balanceamento de carga no seu modelo de custo. Considere fatores primários, 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 obter uma estimativa de custos precisa, use logs de tráfego para avaliar as suas necessidades de tráfego de entrada e de saída.

  • Estabeleça controles sobre os gastos. Registre e analise os custos do Load Balancer. Para gerenciar custos de forma eficaz, use Microsoft Cost Management 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 os recursos não utilizados. Identifique e remova 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 back-end. Examine os logs de tráfego para encontrar recursos subutilizados.

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

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

    Implementar otimização nos processos internos. Por exemplo, várias consultas de banco de dados intercetadas 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.

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

Recomendações

Recomendação Benefício
Use o da calculadora de preços do Azure para estimar custos. Você pode converter o uso antecipado do tráfego 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, você pode usar regras NAT de entrada para mapear endereços IP e portas para um pool de back-end em vez de para VMs individuais.
As regras consolidadas otimizam os custos e simplificam as operações.

Ao aumentar ou diminuir a escala, 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 para práticas de desenvolvimento de , observabilidade e gestão de lançamentos.

Os princípios de design 'Excelência Operacional' fornecem uma estratégia de design de alto nível para atingir esses objetivos em relação aos requisitos operacionais da carga de trabalho.

Lista de verificação de design

Inicie sua estratégia de projeto com base na lista de verificação de revisão de projeto para Excelência Operacional para definir processos de observabilidade, teste e implantação relacionados ao Load Balancer.

  • Use a infraestrutura como código. Implante e configure o Balanceador de Carga junto com outros componentes de rede, como redes virtuais, emparelhamentos de rede, pontos de extremidade privados e NSGs. Familiarize-se com o tipo de recurso Microsoft.Network loadBalancers.

  • Para arquiteturas hub-and-spoke, utilize o desdobramento em camadas. Implante o hub primeiro porque ele muda com menos frequência do que a carga de trabalho implantada na rede spoke. Implante o balanceador de carga 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 abrangente de monitoramento de rede. Implementar capacidades de diagnóstico, como métricas multidimensionais para insights e alertas em tempo real, logs de recursos com base no esquema de eventos de integridade e o painel do Azure Monitor Insights para uma monitorização abrangente do balanceador de carga.

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 com um limite de 95%. Para obter mais informações, consulte Configurar alertas para métricas multidimensionais. Analise os exemplos de disponibilidade de entrada e saída.
Insights abrangentes em tempo real e configuração de alertas fornecem deteção aprimorada de problemas e permitem respostas rápidas.
Capture registos de recursos. As entradas do Balanceador de Carga dependem do esquema de eventos de integridade do . Os logs fornecem registros detalhados de eventos para que você possa identificar e resolver problemas rapidamente.
Use o painel incorporado do Azure Monitor Insights para o Load Balancer. A visualização facilita escolhas de design bem informadas e ajuda você a identificar, diagnosticar e corrigir problemas rapidamente.
Durante as operações de manutenção, defina o de estado Admin para Down 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 encerradas normalmente. Essa configuração de estado de administrador ajuda a reduzir a sobrecarga e a complexidade quando você tira uma VM da rotação de balanceamento de carga para manutenção regular ou aplicação de patches.

Como uma opção alternativa para tirar uma instância de back-end da rotação, pode-se aplicar NSGs para bloquear o tráfego da sonda de integridade do Balanceador de Carga ou dos endereços de IP e portas do cliente. Esta opção aumenta a complexidade.

Eficiência de desempenho

A Eficiência de Desempenho tem a ver manter a experiência do usuário, mesmo quando há um aumento na de carga por meio do gerenciamento de capacidade. A estratégia inclui dimensionar recursos, identificar e otimizar potenciais gargalos e otimizar para obter o máximo desempenho.

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 contra o uso esperado.

Lista de verificação de design

Inicie sua estratégia de design com base na lista de verificação de revisão de projeto para Eficiência de Desempenho para definir uma linha de base baseada em indicadores-chave de desempenho para o Load Balancer.

  • Determine as metas de desempenho da rede. O balanceador de carga não tem limite para o tráfego que ele pode suportar. Mas ao definir metas de desempenho e planejar a capacidade, você deve testar o desempenho da rede.

    Use o teste de esforço 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áquina virtual com várias VMs não for suficiente, você poderá adicionar outro conjunto de escala usando o mesmo balanceador de carga. Se as VMs não receberem solicitações com rapidez 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 no projeto e otimizar sua carga de trabalho para lidar melhor com a carga.

  • Entenda os limites ao projetar sua estratégia de escala. 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.

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

  • Atenda solicitações rapidamente. O Standard Load Balancer tem uma camada que encaminha o tráfego para endpoints de back-end com base na sua proximidade geográfica com o utilizador.

    O Load Balancer também suporta 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 consistentemente direcionadas para o mesmo servidor back-end que lidou com suas sessões anteriores.

  • Colete dados para analisar o desempenho. As métricas multidimensionais do Load Balancer podem analisar o desempenho do serviço. Configure alertas para detetar alterações de desempenho. Use ferramentas como o painel Azure Monitor Insights para visualizar o status do Balanceador de Carga. Certifique-se de que o recurso de saúde monitoriza o status de saúde e mantenha-se informado sobre problemas de desempenho e interrupções.

  • Otimize o tráfego de rede. Não processe os mesmos dados várias vezes em etapas separadas. Em vez disso, execute todos os cálculos necessários em um lote e, em seguida, persista 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 Balanceador de Carga Padrão se tiver usuários globais. O modo de distribuição por proximidade geográfica deste nível responde a pedidos de utilizadores a partir de pontos de extremidade na região mais próxima, o que melhora o desempenho.
Avalie se você deve habilitar de persistência de sessão quando quiser que as solicitações do mesmo usuário sejam direcionadas para o mesmo servidor 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 de balanceamento de carga porque restringe a flexibilidade de distribuir o tráfego em 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á compensações.
Durante o escalamento, envie um sinal de sonda até que a aplicação esteja totalmente inicializada e pronta para tratar solicitações.

Durante a expansão, envie um sinal de redução da sonda para novas conexões no ponto de extremidade que está sendo reduzido. As solicitações pendentes em conexões existentes continuam a ser processadas.
As sondas de saúde podem ajudar a otimizar as operações de escalonamento. Eles ajudam a garantir que, durante a expansão, o aplicativo possa lidar com a carga de entrada. Antes de uma operação de expansão, eles permitem uma redução suave de instâncias sem interromper as operações em andamento.

Políticas do Azure

O Azure fornece um extenso conjunto de políticas internas relacionadas ao Balanceador de Carga e suas dependências. Algumas das recomendações anteriores podem ser auditadas por meio da Política do Azure. Por exemplo, pode verificar se:

  • Os balanceadores de carga, excluindo os balanceadores de carga 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 rastrear atividades e eventos que ocorrem em seus recursos e fornecer visibilidade e informações sobre as alterações.

Para uma governança abrangente, reveja as definições internas da Política interna do Azure para o Balanceador de Carga e outras políticas que possam afetar a segurança da distribuição de tráfego.

Recomendações do Azure Advisor

O Azure Advisor é um consultor de nuvem personalizado que ajuda você a seguir as práticas recomendadas para otimizar suas implantações do Azure. As recomendações dos conselheiros estão alinhadas com os pilares da Estrutura Well-Architected.

Para obter mais informações, consulte as recomendações em Azure Advisor.