Como faço para obter o roteamento baseado em caminhos em um Application Load Balancer?

7 minuto de leitura
0

Estou executando vários microsserviços por trás do meu Application Load Balancer. Quero encaminhar solicitações para grupos de destino específicos com base no caminho do URL.

Breve descrição

O Application Load Balancer permite que você crie um receptor com regras que encaminha solicitações para grupos de destino com base na URL. Esse recurso não está disponível para outros tipos de balanceadores de carga, como Classic Load Balancer, Network Load Balancer e Gateway Load Balancer. As regras do padrão de caminho são aplicadas somente ao caminho do URL e não aos parâmetros de consulta do URL. Para obter mais informações sobre padrões de caminho, consulte Condições de caminho.

Para estabelecer o roteamento baseado em caminhos em seu Application Load Balancer, faça o seguinte:

  1. Crie um grupo de destino.
  2. Configure as regras do receptor.

Antes de criar os grupos de destino, certifique-se de que os seguintes pré-requisitos sejam atendidos:

Resolução

Suponha que você tenha dois serviços, o serviço A e o serviço B, com aplicativos em execução nesses serviços na porta 80. Por exemplo, o serviço A executa um aplicativo no caminho /svcA e o serviço B executa um aplicativo no caminho /svcB.

Criar um grupo de destino

Depois que suas instâncias forem criadas, registre-as com um grupo de destino. Com base nas regras do receptor configuradas no balanceador de carga, as solicitações são encaminhadas aos destinos registrados usando a porta e o protocolo que você especificou para o grupo de destino. No entanto, você pode substituir as informações da porta ao registrar destinos individualmente. Para obter mais informações, consulte Criar um grupo de destino.

Por exemplo, suponha que você crie dois grupos de destino com Protocol como HTTP e Port como 80, cada um com um aplicativo implantado. Por exemplo, você registra a instância do EC2 que está executando o serviço A com target-group-A. Para esse grupo de destino, você pode definir HealthCheckProtocol como HTTP e HealthCheckPath como /svcA.

Você registra a instância do EC2 que está executando o serviço B com target-group-B. Para esse grupo de destino, você pode definir HealthCheckProtocol como HTTP e HealthCheckPath como /svcB.

Você pode adicionar ou remover destinos de seus grupos de destino a qualquer momento. Para obter mais informações, consulte Registrar destinos em seu grupo de destino.

Depois de especificar um grupo de destino em uma regra para um receptor, o balanceador de carga monitora continuamente a integridade de todos os destinos registrados com o grupo de destino que estão na zona de disponibilidade habilitada para o balanceador de carga. O balanceador de carga encaminha as solicitações para os destinos registrados que estão íntegros. Para obter mais informações, consulte Verificação de integridade para seus grupos de destino.

Configurar regras de receptor

Ao criar um receptor para um Application Load Balancer, você pode definir uma ou mais regras além da regra padrão. Uma regra consiste em uma prioridade, uma ação e uma ou mais condições. Não é possível definir condições para a regra padrão. Se as condições de nenhuma das regras não padrão forem atendidas, a ação da regra padrão será executada.

Para saber mais sobre a prioridade das regras, consulte Reordenar regras.

Para saber mais sobre ações de regras, consulte Tipos de ações de regras.

Para saber mais sobre condições da regra, consulte Tipos de condição da regra.

Para implementar o roteamento baseado em caminhos em um Application Load Balancer, configure as regras do receptor. Você deve configurar uma regra para cada padrão de caminho com base no qual você deseja encaminhar suas solicitações.

Por exemplo:

Regra 1 do receptor: Se o caminho do URL da solicitação contiver a string /svcA, encaminhe a solicitação para o target-group-A. Isso ocorre porque target-group-A inclui o serviço A que executa um aplicativo no caminho determinado.

Regra 2 do receptor: Se o caminho do URL da solicitação contiver a string /svcB, encaminhe essa solicitação para o target-group-B. Isso ocorre porque o grupo de destino B inclui o serviço B que executa um aplicativo no caminho fornecido.

Para criar um novo receptor HTTP, consulte Criar um receptor HTTP.

Para criar um novo receptor HTTPS, consulte Criar um receptor HTTPS.

Para atualizar as regras do receptor com condições e ações, faça o seguinte:

  1. Abra o console do Amazon EC2.
  2. No painel de navegação, em Balanceamento de carga, escolha Balanceadores de carga.
  3. Selecione o balanceador de carga e escolha Receptores.
  4. Para atualizar o receptor, escolha Exibir/alterar regras.
  5. Escolha o ícone Adicionar regras (o sinal de adição) na barra de menu. Isso adiciona ícones Inserir regra nos locais em que você pode inserir uma regra na ordem de prioridade.
  6. Escolha um dos ícones de Inserir regra adicionados na etapa anterior.
  7. Para adicionar uma regra baseada em caminho para /svcA, escolha Adicionar condição, Caminho e, em seguida, insira o padrão de caminho /svcA. Para salvar a condição, escolha o ícone de marca de seleção.
  8. Para adicionar uma ação de encaminhamento, escolha Adicionar ação, Encaminhar para e, em seguida, escolha o target-group-A.
  9. Escolha Save.

Repita as etapas anteriores para o caminho /svcB com as seguintes alterações:

  • Para a etapa 6, insira o padrão de caminho /svcB.
  • Para a etapa 7, escolha o grupo target-group-B.

Para obter mais informações, consulte Regras de receptor para seu Application Load Balancer.

Observação: as regras de roteamento baseadas em caminhos buscam uma correspondência exata. Neste exemplo, o roteamento baseado em caminho usa as definições de caminho /svcA e /svcB. Se seu aplicativo exigir que as solicitações sejam roteadas mais abaixo nesses caminhos, por exemplo, /svcA/doc ou /svcB/doc, inclua um caractere curinga ao escrever a condição para a regra de roteamento baseada em caminho. Use padrões de caminho semelhantes a /svcA* ou /svcB* para garantir que todos os documentos nesses caminhos sejam contabilizados ao rotear solicitações.

Roteamento baseado em caminhos de teste

Para testar esse roteamento, copie o nome DNS do Application Load Balancer em um navegador da Web e adicione o caminho da URL /svcA ou /svcB. Quando o receptor do Application Load Balancer recebe a solicitação, a encaminha para o grupo de destino apropriado com base na condição do caminho.

Por exemplo, suponha que o nome DNS do seu Application Load Balancer seja alb-demo-1234567890.us-west-2.elb.amazonaws.com:

  • http://alb-demo-1234567890.us-west-2.elb.amazonaws.com/svcA deve retornar o serviço A.
  • http://alb-demo-1234567890.us-west-2.elb.amazonaws.com/svcB deve rtornar o serviço B.

Com o roteamento baseado em caminhos, seu Application Load Balancer permite que você hospede vários microsserviços por trás de um único balanceador de carga usando regras de receptor e grupos de destino. Portanto, você pode configurar regras complexas para encaminhar solicitações de clientes para seus aplicativos. Além das regras baseadas em caminhos, você também pode encaminhar solicitações para aplicativos específicos com base no cabeçalho do host, no cabeçalho do agente do usuário e nos valores dos parâmetros de consulta. Para obter mais informações, consulte Roteamento avançado de solicitações para Application Load Balancer da AWS.


Informações relacionadas

Como faço para solucionar problemas e corrigir falhas nas verificações de integridade dos Application Load Balancers?

Solucionar problemas do Application Load Balancer

AWS OFICIAL
AWS OFICIALAtualizada há 2 anos