Configurar um Application Load Balancer compartilhado - AWS Elastic Beanstalk

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Configurar um Application Load Balancer compartilhado

Quando você habilita o balanceamento de carga, o ambiente do AWS Elastic Beanstalk é equipado com um balanceador de carga do Elastic Load Balancing para distribuir o tráfego entre as instâncias do ambiente. O Elastic Load Balancing é compatível com vários tipos de balanceador de carga. Para saber mais sobre eles, consulte o Guia do usuário do Elastic Load Balancing. O Elastic Beanstalk pode criar um balanceador de carga para você ou permitir a especificação de um balanceador de carga compartilhado que você criou.

Este tópico descreve a configuração de um Application Load Balancer compartilhado que você cria e associa ao ambiente. Consulte também Configuração de um Application Load Balancer. Para obter informações sobre como configurar todos os tipos de balanceador de carga compatíveis com o Elastic Beanstalk, consulte Balanceador de carga do ambiente do Elastic Beanstalk.

nota

Você só pode escolher o tipo de load balancer que seu ambiente usará durante a criação do ambiente. Você pode alterar as configurações para gerenciar o comportamento do load balancer do ambiente em execução, mas não pode alterar seu tipo. Também não é possível alternar de um load balancer dedicado para um compartilhado ou vice-versa.

Introdução

Um balanceador de carga compartilhado é um balanceador de carga criado e gerenciado usando o serviço Amazon Elastic Compute Cloud (Amazon EC2) e, depois, é usado em vários ambientes do Elastic Beanstalk.

Quando um ambiente é criado com balanceamento de carga e escalabilidade automática e um Application Load Balancer é utilizado, o Elastic Beanstalk cria um balanceador de carga dedicado ao ambiente por padrão. Para saber o que é um Application Load Balancer e como ele funciona em um ambiente do Elastic Beanstalk, consulte a introdução à configuração de um Application Load Balancer para Elastic Beanstalk.

Em algumas situações, você pode economizar o custo de ter vários load balancers dedicados. Isso pode ser útil quando você tem vários ambientes, por exemplo, se a aplicação for um pacote de microsserviços em vez de um serviço monolítico. Nesses casos, é possível optar por usar um load balancer compartilhado.

Para usar um balanceador de carga compartilhado, primeiro crie-o no Amazon EC2 e adicione um ou mais listeners. Durante a criação de um ambiente do Elastic Beanstalk, é necessário fornecer o balanceador de carga e escolher uma porta do listener. O Elastic Beanstalk associa o listener ao processo padrão no ambiente. É possível adicionar regras de listener personalizadas para rotear o tráfego de cabeçalhos e caminhos de host específicos para outros processos do ambiente.

O Elastic Beanstalk adiciona uma tag ao balanceador de carga compartilhado. O nome da tag é elasticbeanstalk:shared-elb-environment-count, e seu valor é o número de ambientes que compartilham esse load balancer.

Usar um load balancer compartilhado é diferente de usar um dedicado de diversas maneiras.

Referente Application Load Balancer dedicado Application Load Balancer compartilhado

Gerenciamento

O Elastic Beanstalk cria e gerencia o balanceador de carga, os listeners, as regras de listener e os processos (grupos de destino). O Elastic Beanstalk também os remove quando o ambiente é encerrado. O Elastic Beanstalk pode definir a captura de logs de acesso do balanceador de carga, caso escolha essa opção.

O balanceador de carga e os listeners são criados e gerenciados fora do Elastic Beanstalk. O Elastic Beanstalk cria e gerencia uma regra padrão e um processo padrão, e regras e processos podem ser adicionados. O Elastic Beanstalk remove as regras e os processos de listener que foram adicionados durante a criação do ambiente.

Regras do listener

O Elastic Beanstalk cria uma regra padrão para cada listener a fim de rotear todo o tráfego para o processo padrão do listener.

O Elastic Beanstalk associa uma regra padrão apenas a um listener da porta 80, se existir. Se você escolher uma porta de listener padrão diferente, precisará associar a regra padrão a ela (o console do Elastic Beanstalk e a CLI do EB fazem isso por você).

Para resolver conflitos de condição de regra de listener em ambientes que compartilham o balanceador de carga, o Elastic Balanceador adiciona o CNAME do ambiente à regra de listener como uma condição de cabeçalho de host.

O Elastic Beanstalk trata as configurações de prioridade de regra como relativas entre ambientes que compartilham o balanceador de carga e as mapeia para prioridades absolutas durante a criação.

Grupos de segurança

O Elastic Beanstalk cria um grupo de segurança padrão e o anexa ao balanceador de carga.

É possível configurar um ou mais grupos de segurança a serem usados para o load balancer. Caso contrário, o Elastic Beanstalk verifica se um grupo de segurança existente gerenciado pelo Elastic Beanstalk já está conectado ao balanceador de carga. Caso contrário, o Elastic Beanstalk cria um grupo de segurança e o anexa ao balanceador de carga. O Elastic Beanstalk exclui esse grupo de segurança quando o último ambiente que compartilha o balanceador de carga é encerrado.

Atualizações

É possível atualizar o Application Load Balancer após a criação do ambiente. É possível editar listeners, regras de listener e processos. É possível configurar a captura de log de acesso do load balancer.

Não é possível usar o Elastic Beanstalk para configurar a captura de logs de acesso no Application Load Balancer nem atualizar listeners e regras de listener após a criação do ambiente. Só é possível atualizar processos (grupos de destino). Para configurar a captura de logs de acesso e atualizar listeners e regras de listener, use o Amazon EC2.

Configurar um Application Load Balancer compartilhado usando o console do Elastic Beanstalk

É possível usar o console do Elastic Beanstalk para configurar um Application Load Balancer compartilhado durante a criação do ambiente. É possível selecionar um dos load balancers compartilháveis da conta para uso no ambiente, selecionar a porta de listener padrão e configurar processos adicionais e regras de listener.

Não é possível editar a configuração do Application Load Balancer compartilhado no console do Application Load Balancer após a criação do ambiente. Para configurar listeners, regras de listener, processos (grupos de destino) e captura de logs de acesso, use o Amazon EC2.

Como configurar um Application Load Balancer no console do Elastic Beanstalk durante a criação do ambiente
  1. Abra o console do Elastic Beanstalk e, na lista Regions (Regiões), selecione a sua Região da AWS.

  2. No painel de navegação, escolha Environments (Ambientes).

  3. Escolha Create a new environment (Criar um ambiente) para começar a criar seu ambiente.

  4. Na página principal do assistente, antes de escolher Create environment, escolha Configure more options.

  5. Escolha a predefinição de configuração High availability (Alta disponibilidade).

    Se preferir, na categoria de configuração Capacity (Capacidade), configure o tipo de ambiente Load balanced (Carga equilibrada). Para obter mais detalhes, consulte Capacity.

  6. Na categoria de configuração Load balancer, escolha Edit (Editar).

  7. Selecione a opção Application Load Balancer se ainda não estiver selecionada e, depois, selecione a opção Shared (Compartilhado).

    Página de configuração do Elastic Load Balancing: escolher o tipo de balanceador de carga
  8. Faça todas as alterações de configuração do Application Load Balancer compartilhado necessárias ao seu ambiente.

  9. Escolha Save e, em seguida, faça as outras alterações de configuração de acordo com seu ambiente.

  10. Selecione Create environment (Criar ambiente).

Configurações do Application Load Balancer compartilhado

Application Load Balancer compartilhado

Use esta seção para escolher um Application Load Balancer compartilhado para seu ambiente e configurar o roteamento de tráfego padrão.

Antes de configurar um Application Load Balancer compartilhado aqui, use o Amazon EC2 para definir pelo menos um Application Load Balancer para compartilhamento com pelo menos um ouvinte, em sua conta. Se você ainda não fez isso, poderá escolher Manage load balancers (Gerenciar balanceadores de carga). O Elastic Beanstalk abre o console do Amazon EC2 em uma nova guia do navegador.

Quando terminar de configurar balanceadores de carga compartilhados fora do Elastic Beanstalk, defina as configurações a seguir nesta seção do console:

  • Load balancer ARN (ARN do balanceador de carga): o balanceador de carga compartilhado a ser usado nesse ambiente. Selecione o load balancer na lista ou insira o nome de recurso da Amazon (ARN) de um load balancer.

  • Default listener port (Porta do listener padrão): uma porta do listener que o balanceador de carga compartilhado escuta. Faça sua escolha em uma lista de portas de listener existentes. O tráfego desse listener com o CNAME do ambiente no cabeçalho do host é roteado para um processo padrão nesse ambiente.

Configuração do Application Load Balancer: escolha do balanceador de carga compartilhado

Processos

Use essa lista para especificar processos para o load balancer compartilhado. Um processo é um destino para os listeners direcionarem o tráfego. Inicialmente, a lista mostra o processo padrão, que recebe tráfego do listener padrão.

Configuração do Application Load Balancer: lista de processos
Como configurar um processo existente
  1. Marque a caixa de seleção ao lado da entrada da tabela e, em seguida, escolha Actions, Edit.

  2. Use a caixa de diálogo Environment process (Processo do ambiente) para editar as configurações e selecione Save (Salvar).

Como adicionar um processo
  1. Selecione Add process (Adicionar processo).

  2. Na caixa de diálogo Environment Process (Processo do ambiente), defina as configurações desejadas e selecione Add (Adicionar).

Configurações da caixa de diálogo Environment process (Processo do ambiente) do Application Load Balancer

Definição

Use estas configurações para definir o processo Name, Port e Protocol em que as solicitações são observadas.

Configurações de processo do Application Load Balancer para nome, porta e protocolo

Verificação de integridade

Use as configurações a seguir para configurar as verificações de integridade do processo:

  • HTTP code (Código de HTTP): o código de status HTTP que designa um processo íntegro.

  • Path (Caminho): o caminho da solicitação de verificação de integridade para o processo.

  • Timeout (Tempo limite): a quantidade de tempo, em segundos, para aguardar uma resposta de verificação de integridade.

  • Interval (Intervalo): a quantidade de tempo, em segundos, entre as verificações de integridade de uma instância individual. O intervalo deve ser maior que o tempo limite.

  • Unhealthy threshold (Limite não íntegro), Healthy threshold (Limite íntegro): o número de verificações de integridade que devem falhar ou passar, respectivamente, antes que o Elastic Load Balancing altere o estado de integridade de uma instância.

  • Deregistration delay (Atraso do cancelamento de registro): a quantidade de tempo, em segundos, para aguardar que as solicitações ativas sejam concluídas antes de cancelar o registro de uma instância.

Configurações do processo do Application Load Balancer para uma verificação de integridade
nota

A verificação de integridade do Elastic Load Balancing não afeta o comportamento da verificação de integridade do grupo de Auto Scaling de um ambiente. As instâncias que falham em uma verificação de integridade do Elastic Load Balancing não são substituídas automaticamente pelo Amazon EC2 Auto Scaling, a menos que você configure manualmente o Amazon EC2 Auto Scaling para fazer isso. Para mais detalhes, consulte Configuração da verificação de integridade do Auto Scaling.

Para obter mais informações sobre verificações de integridade e como elas influenciam a integridade geral do ambiente, consulte Relatórios de integridade básica.

Sessões

Selecione ou desmarque a caixa Política de perdurabilidade habilitada para habilitar ou desabilitar as sticky sessions. Use Duração do cookie para configurar a duração de uma sticky session até 604800 segundos.

Configurações do processo do Application Load Balancer para a perdurabilidade da sessão

Regras

Use essa lista para especificar regras de listener para o load balancer compartilhado. Uma regra mapeia solicitações que o listener recebe em um padrão de caminho específico para um processo de destino. Cada listener pode ter várias regras, roteando solicitações em caminhos diferentes para processos diferentes em instâncias dos diferentes ambientes que compartilham o listener.

As regras têm prioridades numéricas que determinam a precedência em que são aplicadas às solicitações recebidas. O Elastic Beanstalk adiciona uma regra padrão que roteia todo o tráfego do listener padrão para o processo padrão do seu novo ambiente. A precedência da regra padrão é a mais baixa. Ela é aplicada se nenhuma outra regra para o mesmo listener corresponder à solicitação recebida. Inicialmente, se você não tiver adicionado regras personalizadas, a lista estará vazia. A regra padrão não é exibida.

Configuração do Application Load Balancer: lista de regras

Você pode editar as configurações de uma regra existente ou adicionar uma nova regra. Para começar a editar uma regra na lista ou adicionar uma regra a ela, use as mesmas etapas listadas para a lista de processos. A caixa de diálogo Listener rule é exibida com as seguintes configurações:

  • Name (Nome): o nome da regra.

  • Listener port (Porta do listener): porta do listener ao qual a regra se aplica.

  • Priority (Prioridade): prioridade da regra. Um número de prioridade mais baixa tem maior precedência. As prioridades das regras de um listener devem ser únicas. O Elastic Beanstalk trata as prioridades de regras como relativas em ambientes de compartilhamento e as mapeia para prioridades absolutas durante a criação.

  • Match conditions (Condições de correspondência): uma lista de condições do URL de solicitação às quais a regra se aplica. Existem dois tipos de condições: HostHeader (a parte do domínio do URL) e PathPattern (a parte do caminho do URL). Uma condição é reservada para o subdomínio do ambiente e é possível adicionar até quatro condições. Cada valor de condição tem até 128 caracteres de comprimento e pode incluir caracteres curinga.

  • Process (Processo): o processo para o qual o balanceador de carga direciona solicitações que correspondem à regra.

Configuração do Application Load Balancer: lista de regras

Exemplo: usar um Application Load Balancer compartilhado para uma aplicação segura baseado em microsserviços

Neste exemplo, a aplicação consiste em vários microsserviços, cada um implementado como um ambiente do Elastic Beanstalk. Além disso, você precisa de criptografia de tráfego de ponta a ponta. Vamos demonstrar um dos ambientes de microsserviço, que tem um processo principal para solicitações de usuários e um processo separado para lidar com solicitações administrativas.

Para atender a esses requisitos, use o Amazon EC2 para criar um Application Load Balancer que você compartilhará entre seus microsserviços. Adicione um listener seguro na porta 443 e no protocolo HTTPS. Depois, adicione vários certificados SSL ao listener: um por domínio de microsserviço. Para obter detalhes sobre como criar o Application Load Balancer e o listener seguro, consulte Criar um Application Load Balancer e Criar um listener HTTPS para o Application Load Balancer no Guia do usuário para Application Load Balancers.

No Elastic Beanstalk, configure cada ambiente de microsserviço para usar o Application Load Balancer compartilhado e defina a porta do listener padrão como 443. No caso do ambiente específico que estamos demonstrando aqui, indique que o processo padrão escuta a porta 443 em HTTPS e adicione um processo e uma regra de listener ao tráfego administrativo em um caminho diferente.

Como configurar o load balancer compartilhado neste exemplo
  1. Na seção Shared Application Load Balancer (Application Load Balancer compartilhado), selecione o balanceador de carga e, depois, para Default listener port (Porta do listener padrão), selecione 443. A porta do listener já deverá estar selecionada se for o único listener que o load balancer possui.

    Configuração do Application Load Balancer: adicionar um listener seguro
  2. Configure o processo padrão como HTTPS. Selecione o processo padrão e, em seguida, para Actions, escolha Edit. Em Port (Porta), insira 443. Em Protocolo, selecione HTTPS.

    Configuração demonstrativa do Application Load Balancer: configurar o processo padrão para HTTPS
  3. Adicione um processo administrativo. Em Name (Nome), insira admin. Em Port (Porta), insira 443. Em Protocolo, selecione HTTPS. Em Health check (Verificação de integridade), para Path (Caminho), insira /admin.

    Configuração demonstrativa do Application Load Balancer: adicionar o processo admin
  4. Adicione uma regra para o tráfego de administrador. Em Name (Nome), insira admin. Em Listener port (Porta do listener), insira 443. Em Match conditions (Condições de correspondência), adicione um PathPattern com o valor /admin/*. Em Processo, selecione admin.

    Configuração demonstrativa do Application Load Balancer: adicionar regra de administrador

Configurar um Application Load Balancer compartilhado usando a CLI do EB

A EB CLI solicita que você escolha um tipo de load balancer ao executar o eb create. Se você escolher application (o padrão) e sua conta tiver pelo menos um Application Load Balancer compartilhável, a CLI do EB também perguntará se você deseja usar um Application Load Balancer compartilhado. Se responder y, você também será solicitado a selecionar o load balancer e a porta padrão.

$ eb create Enter Environment Name (default is my-app): test-env Enter DNS CNAME prefix (default is my-app): test-env-DLW24ED23SF Select a load balancer type 1) classic 2) application 3) network (default is 2): Your account has one or more sharable load balancers. Would you like your new environment to use a shared load balancer?(y/N) y Select a shared load balancer 1)MySharedALB1 - arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB1/6d69caa75b15d46e 2)MySharedALB2 - arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8 (default is 1): 2 Select a listener port for your shared load balancer 1) 80 2) 100 3) 443 (default is 1): 3

Também é possível especificar um load balancer compartilhado usando opções de comando.

$ eb create test-env --elb-type application --shared-lb MySharedALB2 --shared-lb-port 443

Namespaces do Application Load Balancer compartilhado

Você pode encontrar configurações relacionadas aos Application Load Balancers compartilhados nos seguintes namespaces:

  • aws:elasticbeanstalk:environment: escolha o tipo de balanceador de carga para o ambiente e informe o Elastic Beanstalk que você usará um balanceador de carga compartilhado.

    Não é possível definir essas duas opções em arquivos de configuração (.Ebextensions).

  • aws:elbv2:loadbalancer: configure o ARN e os grupos de segurança do Application Load Balancer compartilhado.

  • aws:elbv2:listener: associe os listeners do Application Load Balancer compartilhado aos processos de ambiente listando regras do listener.

  • aws:elbv2:listenerrule: configure as regras do listener que roteiam o tráfego para os diferentes processos, dependendo do caminho da solicitação. As regras são exclusivas dos Application Load Balancers, sejam eles dedicados ou compartilhados.

  • aws:elasticbeanstalk:environment:process: configure as verificações de integridade e especifique a porta e o protocolo para os processos que são executados nas instâncias de seu ambiente.

exemplo
.ebextensions/application-load-balancer-shared.config

Para começar a usar um Application Load Balancer compartilhado, use o console do Elastic Beanstalk, a CLI do EB ou a API para definir o tipo de balanceador de carga como application e optar por usar um balanceador de carga compartilhado. Use um arquivo de configuração para configurar o load balancer compartilhado.

option_settings: aws:elbv2:loadbalancer: SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8
nota

Só é possível configurar essa opção durante a criação do ambiente.

exemplo .ebextensions/alb-shared-secure-listener.config

O arquivo de configuração a seguir seleciona um listener seguro padrão na porta 443 para o load balancer compartilhado e define o processo padrão para escutar a porta 443.

option_settings: aws:elbv2:loadbalancer: SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8 aws:elbv2:listener:443: rules: default aws:elasticbeanstalk:environment:process:default: Port: '443' Protocol: HTTPS
exemplo .ebextensions/alb-shared-admin-rule.config

O arquivo de configuração a seguir se baseia no exemplo anterior e adiciona uma regra que roteia o tráfego com um caminho de solicitação de /admin para um processo chamado admin que escuta na porta 4443.

option_settings: aws:elbv2:loadbalancer: SharedLoadBalancer: arn:aws:elasticloadbalancing:us-east-2:123456789012:loadbalancer/app/MySharedALB2/e574ea4c37ad2ec8 aws:elbv2:listener:443: rules: default,admin aws:elasticbeanstalk:environment:process:default: Port: '443' Protocol: HTTPS aws:elasticbeanstalk:environment:process:admin: HealthCheckPath: /admin Port: '4443' Protocol: HTTPS aws:elbv2:listenerrule:admin: PathPatterns: /admin/* Priority: 1 Process: admin