Utilizar serviços de balanceamento de carga no Azure
Introdução
O Microsoft Azure fornece vários serviços para gerenciar como o tráfego de rede é distribuído e balanceado de carga. Você pode usar esses serviços individualmente ou combinar seus métodos, dependendo de suas necessidades, para criar a solução ideal.
Neste tutorial, primeiro definimos um caso de uso do cliente e vemos como ele pode ser tornado mais robusto e eficiente usando o seguinte portfólio de balanceamento de carga do Azure: Gerenciador de Tráfego, Gateway de Aplicativo e Balanceador de Carga. Em seguida, fornecemos instruções passo a passo para criar uma implantação que seja geograficamente redundante, distribua tráfego para VMs e ajude você a gerenciar diferentes tipos de solicitações.
Em um nível conceitual, cada um desses serviços desempenha um papel distinto na hierarquia de balanceamento de carga.
O Traffic Manager fornece balanceamento de carga DNS global. Ele examina as solicitações DNS recebidas e responde com um ponto de extremidade íntegro, de acordo com a política de roteamento selecionada pelo cliente. As opções para métodos de roteamento são:
- Roteamento de desempenho para enviar o solicitante para o ponto de extremidade mais próximo em termos de latência.
- Roteamento prioritário para direcionar todo o tráfego para um ponto de extremidade, com outros pontos de extremidade como backup.
- Roteamento round-robin ponderado, que distribui o tráfego com base na ponderação atribuída a cada ponto de extremidade.
- Roteamento baseado em geografia para distribuir o tráfego para os pontos de extremidade do aplicativo com base na localização geográfica do usuário.
- Roteamento baseado em sub-rede para distribuir o tráfego para os pontos de extremidade do aplicativo com base na sub-rede (intervalo de endereços IP) do usuário.
- Roteamento de vários valores que permite enviar endereços IP de mais de um ponto de extremidade de aplicativo em uma única resposta DNS.
O cliente se conecta diretamente ao ponto de extremidade retornado pelo Gerenciador de Tráfego. O Gerenciador de Tráfego do Azure deteta quando um ponto de extremidade não está íntegro e, em seguida, redireciona os clientes para outra instância íntegra. Consulte a documentação do Azure Traffic Manager para saber mais sobre o serviço.
O Application Gateway fornece o controlador de entrega de aplicativos (ADC) como um serviço, oferecendo vários recursos de balanceamento de carga de Camada 7 para seu aplicativo. Ele permite que os clientes otimizem a produtividade da web farm descarregando a terminação TLS com uso intensivo de CPU para o gateway de aplicativos. Outros recursos de roteamento da Camada 7 incluem distribuição round-robin do tráfego de entrada, afinidade de sessão baseada em cookie, roteamento baseado em caminho de URL e a capacidade de hospedar vários sites atrás de um único gateway de aplicativo. O Application Gateway pode ser configurado como um gateway voltado para a Internet, um gateway somente interno ou uma combinação de ambos. O Application Gateway é totalmente gerenciado pelo Azure, escalável e altamente disponível. Proporciona um conjunto avançado de capacidades de registo e diagnóstico, para uma melhor capacidade de gestão.
O Balanceador de Carga é parte integrante da pilha SDN do Azure, fornecendo serviços de balanceamento de carga de Camada 4 de alto desempenho e baixa latência para todos os protocolos UDP e TCP. Ele gerencia conexões de entrada e saída. Pode configurar pontos finais públicos e internos com balanceamento de carga e definir regras para mapear as ligações de entrada para destinos do conjunto de back-end, com opções de pesquisa de estado de funcionamento TCP e HTTP para gerir a disponibilidade do serviço.
Cenário
Neste cenário de exemplo, usamos um site simples que serve dois tipos de conteúdo: imagens e páginas da Web renderizadas dinamicamente. O site deve ser geograficamente redundante, e deve servir seus usuários a partir do local mais próximo (menor latência) deles. O desenvolvedor do aplicativo decidiu que todas as URLs que correspondem ao padrão /images/* são servidas a partir de um pool dedicado de VMs diferentes do resto da web farm.
Além disso, o pool de VMs padrão que serve o conteúdo dinâmico precisa conversar com um banco de dados back-end hospedado em um cluster de alta disponibilidade. Toda a implantação é configurada por meio do Gerenciador de Recursos do Azure.
Usando o Gerenciador de Tráfego, o Application Gateway e o Load Balancer, você pode habilitar este site para atingir as seguintes metas de design:
- Redundância multigeográfica: se uma região ficar inativa, o Traffic Manager encaminha o tráfego diretamente para a região mais próxima, sem qualquer intervenção do proprietário do aplicativo.
- Latência reduzida: como o Gerenciador de Tráfego direciona automaticamente o cliente para a região mais próxima, o cliente experimenta menor latência ao solicitar o conteúdo da página da Web.
- Escalabilidade independente: como a carga de trabalho do aplicativo Web é separada por tipo de conteúdo, o proprietário do aplicativo pode dimensionar as cargas de trabalho de solicitação independentemente umas das outras. O Application Gateway garante que o tráfego seja roteado para os pools corretos com base nas regras especificadas e na integridade do aplicativo.
- Balanceamento de carga interno: como o Load Balancer está na frente do cluster de alta disponibilidade, somente o ponto de extremidade ativo e íntegro de um banco de dados é exposto ao aplicativo. Além disso, um administrador de banco de dados pode otimizar a carga de trabalho distribuindo réplicas ativas e passivas pelo cluster independentemente do aplicativo front-end. O Load Balancer fornece conexões ao cluster de alta disponibilidade e garante que apenas bancos de dados íntegros recebam solicitações de conexão.
O diagrama a seguir mostra a arquitetura desse cenário:
Nota
Este exemplo é apenas uma das muitas configurações possíveis dos serviços de balanceamento de carga que o Azure oferece. O Gerenciador de Tráfego, o Application Gateway e o Load Balancer podem ser combinados e combinados para melhor atender às suas necessidades de balanceamento de carga. Por exemplo, se o descarregamento TLS ou o processamento da Camada 7 não forem necessários, o Load Balancer poderá ser usado no lugar do Application Gateway.
Configurar a pilha de balanceamento de carga
Etapa 1: Criar um perfil do Gerenciador de Tráfego
No portal do Azure, clique em Criar um perfil>do Gerenciador de Tráfego de Rede>de recursos>Criar.
Insira as seguintes informações básicas:
- Nome: Dê ao seu perfil do Gestor de Tráfego um nome de prefixo DNS.
- Método de roteamento: selecione a política de método de roteamento de tráfego. Para obter mais informações sobre os métodos, consulte Sobre os métodos de roteamento de tráfego do Gerenciador de Tráfego.
- Assinatura: selecione a assinatura que contém o perfil.
- Grupo de recursos: selecione o grupo de recursos que contém o perfil. Pode ser um grupo de recursos novo ou existente.
- Localização do grupo de recursos: o serviço Gestor de Tráfego é global e não está associado a uma localização. No entanto, você deve especificar uma região para o grupo onde residem os metadados associados ao perfil do Gerenciador de Tráfego. Esse local não tem impacto na disponibilidade de tempo de execução do perfil.
Clique em Criar para gerar o perfil do Gerenciador de Tráfego.
Etapa 2: Criar os gateways de aplicativos
No portal do Azure, no painel esquerdo, clique em Criar um recurso>Gateway de Aplicativo de Rede>.
Insira as seguintes informações básicas sobre o gateway de aplicativo:
- Nome: O nome do gateway de aplicativo.
- Tamanho da SKU: o tamanho do gateway de aplicativo, disponível como Pequeno, Médio ou Grande.
- Contagem de instâncias: o número de instâncias, um valor de 2 a 10.
- Grupo de recursos: o grupo de recursos que contém o gateway de aplicativo. Pode ser um grupo de recursos existente ou um novo.
- Local: a região do gateway de aplicativo, que é o mesmo local do grupo de recursos. O local é importante, porque a rede virtual e o IP público devem estar no mesmo local que o gateway.
Clique em OK.
Defina as configurações de rede virtual, sub-rede, IP front-end e ouvinte para o gateway de aplicativo. Nesse cenário, o endereço IP front-end é Público, o que permite que ele seja adicionado como um ponto de extremidade ao perfil do Gerenciador de Tráfego posteriormente.
Nota
Se você usar HTTPS, selecione HTTPS ao lado de Protocolo na guia Ouvinte . A opção padrão é HTTP. Você também deve criar e atribuir um certificado SSL. Para obter mais informações, consulte o tutorial do Application Gateway para SSL.
Configurar o roteamento de URL para gateways de aplicativos
Quando você escolhe um pool de back-end, um gateway de aplicativo configurado com uma regra baseada em caminho usa um padrão de caminho da URL da solicitação, além da distribuição round-robin. Nesse cenário, estamos adicionando uma regra baseada em caminho para direcionar qualquer URL com "/images/*" para o pool de servidores de imagem. Para obter mais informações sobre como configurar o roteamento baseado em caminho de URL para um gateway de aplicativo, consulte Criar uma regra baseada em caminho para um gateway de aplicativo.
No seu grupo de recursos, vá para a instância do gateway de aplicativo que você criou na seção anterior.
Em Configurações, selecione Pools de back-end e, em seguida, selecione Adicionar para adicionar as VMs que você deseja associar aos pools de back-end da camada da Web.
Insira o nome do pool de back-end e todos os endereços IP das máquinas que residem no pool. Nesse cenário, estamos conectando dois pools de servidores back-end de máquinas virtuais.
Em Configurações do gateway de aplicativo, selecione Regras e clique no botão Baseado em caminho para adicionar uma regra.
Configure a regra fornecendo as seguintes informações.
Configurações básicas:
- Nome: O nome amigável da regra acessível no portal.
- Ouvinte: O ouvinte que é usado para a regra.
- Pool de back-end padrão: o pool de back-end a ser usado com a regra padrão.
- Configurações HTTP padrão: as configurações HTTP a serem usadas com a regra padrão.
Regras baseadas em caminhos:
- Nome: O nome amigável da regra baseada em caminho.
- Caminhos: A regra de caminho usada para encaminhar tráfego.
- Pool de back-end: o pool de back-end a ser usado com esta regra.
- Configuração HTTP: As configurações HTTP a serem usadas com esta regra.
Importante
Caminhos: Os caminhos válidos devem começar com "/". O curinga "*" é permitido apenas no final. Exemplos válidos são /xyz, /xyz* ou /xyz/*.
Etapa 3: Adicionar gateways de aplicativos aos pontos de extremidade do Gerenciador de Tráfego
Nesse cenário, o Gerenciador de Tráfego está conectado a gateways de aplicativos (conforme configurado nas etapas anteriores) que residem em regiões diferentes. Agora que os gateways de aplicativos estão configurados, a próxima etapa é conectá-los ao seu perfil do Gerenciador de Tráfego.
Abra o seu perfil do Gestor de Tráfego. Para fazer isso, procure no seu grupo de recursos ou procure o nome do perfil do Gerenciador de Tráfego em Todos os Recursos.
No painel esquerdo, selecione Pontos de extremidade e clique em Adicionar para adicionar um ponto de extremidade.
Crie um ponto de extremidade inserindo as seguintes informações:
- Tipo: Selecione o tipo de ponto de extremidade a ser balanceado de carga. Nesse cenário, selecione Ponto de extremidade do Azure porque estamos conectando-o às instâncias do gateway de aplicativo que foram configuradas anteriormente.
- Nome: insira o nome do ponto de extremidade.
- Tipo de recurso de destino: selecione Endereço IP público e, em Recurso de destino, selecione o IP público do gateway de aplicativo que foi configurado anteriormente.
Agora você pode testar sua configuração acessando-a com o DNS do seu perfil do Gerenciador de Tráfego (neste exemplo:
TrafficManagerScenario.trafficmanager.net
). Você pode reenviar solicitações, exibir VMs ou derrubar VMs e servidores Web criados em regiões diferentes. Você também pode alterar e testar diferentes configurações de perfil do Gerenciador de Tráfego.
Etapa 4: Criar um balanceador de carga
Nesse cenário, o Balanceador de Carga distribui conexões da camada da Web para os bancos de dados dentro de um cluster de alta disponibilidade.
Se o cluster de banco de dados de alta disponibilidade estiver usando o SQL Server Always On, consulte Configurar um ou mais ouvintes do grupo de disponibilidade Always On para obter instruções passo a passo.
Para obter mais informações sobre como configurar um balanceador de carga interno, consulte Criar um balanceador de carga interno no portal do Azure.
- No portal do Azure, no painel esquerdo, clique em Criar um balanceador de carga de rede>de recurso.>
- Escolha um nome para o seu balanceador de carga.
- Defina o Tipo como Interno e escolha a rede virtual e a sub-rede apropriadas para o balanceador de carga residir.
- Em Atribuição de endereço IP, selecione Dinâmico ou Estático.
- Em Grupo de recursos, escolha o grupo de recursos para o balanceador de carga.
- Em Local, escolha a região apropriada para o balanceador de carga.
- Clique em Criar para gerar o balanceador de carga.
Conectar uma camada de banco de dados back-end ao balanceador de carga
No seu grupo de recursos, localize o balanceador de carga que foi criado nas etapas anteriores.
Em Configurações, clique em Pools de back-end e, em seguida, clique em Adicionar para adicionar um pool de back-end.
Insira o nome do pool de back-end.
Adicione máquinas individuais ou um conjunto de disponibilidade ao pool de back-end.
Configurar uma sonda
No balanceador de carga, em Configurações, selecione Sondas e clique em Adicionar para adicionar uma sonda.
Insira o nome da sonda.
Selecione o protocolo para a sonda. Para um banco de dados, talvez você queira uma sonda TCP em vez de uma sonda HTTP. Para saber mais sobre testes de balanceador de carga, consulte Compreender testes de balanceador de carga.
Insira a porta do banco de dados a ser usada para acessar a sonda.
Em Intervalo, especifique com que frequência sondar o aplicativo.
Em Limite não íntegro, especifique o número de falhas de teste contínuo que devem ocorrer para que a VM back-end seja considerada não íntegra.
Clique em OK para criar a sonda.
Configurar as regras de balanceamento de carga
- Em Configurações do balanceador de carga, selecione Regras de balanceamento de carga e clique em Adicionar para criar uma regra.
- Insira o Nome da regra de balanceamento de carga.
- Escolha o Endereço IP Frontend do balanceador de carga, Protocolo e Porta.
- Em Porta de back-end, especifique a porta a ser usada no pool de back-end.
- Selecione o pool de back-end e o teste que foram criados nas etapas anteriores para aplicar a regra.
- Em Persistência da sessão, escolha como deseja que as sessões persistam.
- Em Tempos limite de inatividade, especifique o número de minutos antes de um tempo limite de inatividade.
- Em IP flutuante, selecione Desativado ou Habilitado.
- Clique em OK para criar a regra.
Etapa 5: Conectar VMs da camada da Web ao balanceador de carga
Agora, configuramos o endereço IP e a porta front-end do balanceador de carga nos aplicativos que estão sendo executados em suas VMs da camada da Web para quaisquer conexões de banco de dados. Essa configuração é específica para os aplicativos que são executados nessas VMs. Para configurar o endereço IP e a porta de destino, consulte a documentação do aplicativo. Para localizar o endereço IP do front-end, no portal do Azure, vá para o pool de IP front-end nas configurações do balanceador de carga.