Configuração de um Classic Load Balancer
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 Classic Load Balancer que o Elastic Beanstalk cria e dedica ao seu ambiente. 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. Posteriormente, 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.
Introdução
Um Classic Load Balancer é o balanceador de carga da geração anterior do Elastic Load Balancing. Oferece suporte ao roteamento de tráfego de solicitação HTTP, HTTPS ou TCP para portas diferentes em instâncias de ambiente.
Quando seu ambiente usa um Classic Load Balancer, o Elastic Beanstalk o configura por padrão para ouvir o tráfego HTTP na porta 80 e encaminhá-lo para instâncias na mesma porta. Embora não seja possível excluir o ouvinte padrão da porta 80, você pode desabilitá-lo, o que obtém a mesma funcionalidade ao bloquear o tráfego. Observe que você pode adicionar ou excluir outros receptores. Para oferecer suporte a conexões seguras, configure o load balancer com um listener na porta 443 e um certificado TLS.
O balanceador de carga usa uma verificação de integridade para determinar se as instâncias do Amazon EC2 que executam sua aplicação estão íntegras. A verificação de integridade faz uma solicitação para um URL especificado em um intervalo de tempo definido. Se o URL retornar uma mensagem de erro ou não retornar dentro do tempo limite especificado, essa verificação falhará.
Se a aplicação tiver melhor performance atendendo a várias solicitações do mesmo cliente em um único servidor, configure o balanceador de carga para usar sticky sessions. Com as sticky sessions, o balanceador de carga adiciona um cookie às respostas HTTP que identifica a instância do Amazon EC2 que atendeu à solicitação. Quando uma solicitação subsequente é recebida do mesmo cliente, o load balancer usa o cookie para enviar a solicitação para a mesma instância.
Com o balanceamento de carga entre zonas, cada nó do balanceador de carga do seu Classic Load Balancer distribui solicitações uniformemente a todas as instâncias registradas em todas as zonas de disponibilidade habilitadas. Se o balanceamento de carga entre zonas estiver desabilitado, cada nó do balanceador de carga distribuirá solicitações uniformemente às instâncias registradas somente em sua zona de disponibilidade.
Quando uma instância é removida do balanceador de carga por não ser íntegra ou por redução do ambiente, a diminuição de conexão dá à instância tempo de concluir as solicitações antes de fechar a conexão entre a instância e o balanceador de carga. Você pode alterar o tempo concedido às instâncias para enviar uma resposta ou pode desabilitar completamente a drenagem de conexão.
nota
A diminuição de conexão é habilitada por padrão quando um ambiente é criado com o console do Elastic Beanstalk ou a CLI do EB. Para os outros clientes, é possível ativá-la com opções de configuração.
Você pode usar as configurações avançadas do load balancer para configurar listeners em portas arbitrárias, modificar configurações adicionais de sticky session e configurar o load balancer para conectar-se com segurança a instâncias do EC2. Essas configurações estão disponíveis por meio das opções de configuração que podem ser definidas com os arquivos de configuração no código-fonte ou diretamente em um ambiente usando a API do Elastic Beanstalk. Muitas dessas configurações também estão disponíveis no console do Elastic Beanstalk. Além disso, é possível configurar um balanceador de carga para fazer upload de logs de acesso no Amazon S3.
Configurar um Classic Load Balancer usando o console do Elastic Beanstalk
É possível usar o console do Elastic Beanstalk para configurar portas, certificado HTTPS e outras configurações de um Classic Load Balancer durante a criação do ambiente ou mais tarde, quando o ambiente estiver em execução.
nota
A opção Classic Load Balancer (CLB) está desabilitada no assistente do console Criar ambiente. Se você tiver um ambiente existente configurado com um Classic Load Balancer, poderá criar um novo clonando o ambiente existente usando o console do Elastic Beanstalk ou a CLI do EB. Você também tem a opção de usar a CLI do EB ou a AWS CLI para criar um novo ambiente configurado com um Classic Load Balancer. Essas ferramentas de linha de comando criarão um novo ambiente com um CLB mesmo que ainda não exista um em sua conta.
Como configurar o Classic Load Balancer de um ambiente em execução no console do Elastic Beanstalk
Abra o console do Elastic Beanstalk
e, na lista Regions (Regiões), selecione a sua Região da AWS. -
No painel de navegação, selecione Ambientes e selecione o nome do ambiente na lista.
nota
Se você tiver muitos ambientes, use a barra de pesquisa para filtrar a lista de ambientes.
No painel de navegação, escolha Configuration (Configuração).
-
Na categoria de configuração Load balancer, escolha Edit (Editar).
nota
Se a categoria de configuração Load balancer não tem um botão Edit (Editar), seu ambiente não tem um load balancer. Para aprender como configurar um, consulte Alterar tipo de ambiente.
-
Faça as alterações de configuração do Classic Load Balancer necessárias ao seu ambiente.
-
Para salvar as alterações, escolha Apply (Aplicar) na parte inferior da página.
Configurações do Classic Load Balancer
Listeners
Use esta lista para especificar listeners para seu load balancer. Cada listener direciona o tráfego de entrada do cliente em uma porta especificada usando um protocolo especificado para suas instâncias. Inicialmente, a lista mostra o listener padrão, que roteia o tráfego HTTP de entrada na porta 80 para os servidores de instância do seu ambiente que estão observando o tráfego HTTP na porta 80.
nota
Embora não seja possível excluir o ouvinte padrão da porta 80, você pode desabilitá-lo, o que obtém a mesma funcionalidade ao bloquear o tráfego.
Para configurar um listener existente
-
Marque a caixa de seleção ao lado da entrada da tabela, escolha Actions, e depois escolha a ação desejada.
-
Se escolher Edit, use a caixa de diálogo Classic Load Balancer listener para editar as configurações e, em seguida, escolha Save.
Por exemplo, você pode editar o listener padrão e alterar Protocol de HTTP para TCP se você quiser que o load balancer encaminhe uma solicitação como está. Isso impede que o load balancer reescreva cabeçalhos (incluindo X-Forwarded-For
). A técnica não funciona com sticky sessions.
Para adicionar um listener
-
Escolha Add listener.
-
Na caixa de diálogo Classic Load Balancer listener, defina as configurações desejadas e, em seguida, escolha Add.
Adicionar um listener seguro é um caso de uso comum. O exemplo na imagem a seguir adiciona um listener ao tráfego HTTPS na porta 443. Esse listener direciona o tráfego de entrada para os servidores de instância do ambiente que observam o tráfego HTTPS na porta 443.
Antes de configurar um listener HTTPS, verifique se você tem um certificado SSL válido. Execute um destes procedimentos:
-
Se o AWS Certificate Manager (ACM) estiver disponível na sua região da AWS, crie ou importe um certificado usando o ACM. Para obter mais informações sobre como solicitar um certificado do ACM, consulte Solicitação de um certificado no Manual do usuário do AWS Certificate Manager. Para obter mais informações sobre a importação de certificados de terceiros para o ACM, consulte Importação de certificados no Manual do usuário do AWS Certificate Manager.
-
Se o ACM não estiver disponível em sua região da AWS, carregue o certificado e a chave existente para o IAM. Para obter mais informações sobre a criação e o upload de certificados para o IAM, consulte Trabalhar com certificados de servidor no Guia do usuário do IAM.
Para obter mais detalhes sobre como configurar o HTTPS e trabalhar com os certificados no Elastic Beanstalk, consulte Configurar HTTPS para o seu ambiente do Elastic Beanstalk.
Para SSL certificate, escolha o ARN do seu certificado SSL. Por exemplo, arn:aws:iam::123456789012:server-certificate/abc/certs/build
ou arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678
.
Para obter detalhes sobre como configurar o HTTPS e trabalhar com os certificados no Elastic Beanstalk, consulte Configurar HTTPS para o seu ambiente do Elastic Beanstalk.
Sessões
Selecione ou desmarque a caixa Perdurabilidade da sessão habilitadapara habilitar ou desabilitar as sticky sessions. Use Duração do cookie para configurar a duração de uma sticky session até 1000000
segundos. Na lista Load balancer ports (Portas do load balancer), selecione portas do listener às quais a política padrão (AWSEB-ELB-StickinessPolicy
) se aplica.
Balanceamento de carga entre zonas
Selecione ou desmarque a caixa Load balancing across multiple Availability Zones enabled para habilitar ou desabilitar o balanceamento de carga entre zonas.
Drenagem de conexão
Selecione ou desmarque a caixa Diminuição de conexão habilitada para habilitar ou desabilitar a diminuição de conexão. Defina Tempo limite de drenagem até 3600
segundos.
Verificação de integridade
Use as configurações a seguir para configurar as verificações de integridade do load balancer:
-
Health check path (Caminho da verificação de integridade): o caminho para o qual o balanceador de carga envia solicitações de verificação de integridade. Se você não definir o caminho, o load balancer tentará fazer uma conexão TCP na porta 80 para verificar a integridade.
-
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.
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.
Configurar um Classic Load Balancer usando a CLI do EB
A EB CLI solicita que você escolha um tipo de load balancer ao executar o eb create.
$ 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 1):
Pressione Enter para selecionar classic
.
Você também pode especificar um tipo de load balancer usando a opção --elb-type
.
$ eb create test-env --elb-type classic
Namespaces de configuração do Classic Load Balancer
É possível encontrar configurações relacionadas aos Classic Load Balancers nos seguintes namespaces:
-
aws:elb:healthcheck: configure os limites, o intervalo de verificação e o tempo limite das verificações de integridade do balanceador de carga.
-
aws:elasticbeanstalk:application: configure o URL da verificação de integridade.
-
aws:elb:loadbalancer: habilitar balanceamento de carga entre zonas. Atribua security groups ao load balancer e substitua o security group padrão que o Elastic Beanstalk cria. Esse namespace também inclui opções obsoletas de configuração de ouvintes padrão e seguros que foram substituídas pelas opções no namespace
aws:elb:listener
. -
aws:elb:listener: configure o listener padrão na porta 80, um listener seguro na porta 443 ou outros listeners para qualquer protocolo em qualquer porta. Se você especificar
aws:elb:listener
como o namespace, as configurações se aplicarão ao listener padrão na porta 80. Se você especificar uma porta (por exemplo,aws:elb:listener:443
), um listener será configurado nessa porta. -
aws:elb:policies: defina configurações adicionais para o balanceador de carga. Use as opções desse namespace para configurar listeners em portas arbitrárias, modificar configurações adicionais de sticky session e configurar o balanceador de carga para conectar-se com segurança a instâncias do Amazon EC2.
A CLI do EB e o console do Elastic Beanstalk aplicam os valores recomendados para as opções anteriores. Se quiser usar arquivos de configuração para definir a mesma coisa, você precisa remover essas configurações. Para mais detalhes, consulte Valores recomendados.
exemplo .ebextensions/loadbalancer-terminatehttps.config
O exemplo de arquivo de configuração a seguir cria um listener HTTPS na porta 443, atribui um certificado que o load balancer usa para encerrar a conexão segura e desabilita o listener padrão na porta 80. O load balancer encaminha as solicitações descriptografadas para as instâncias do EC2 de seu ambiente em HTTP: 80.
option_settings:
aws:elb:listener:443:
ListenerProtocol: HTTPS
SSLCertificateId: arn:aws:acm:us-east-2:123456789012:certificate/12345678-12ab-34cd-56ef-12345678
InstancePort: 80
InstanceProtocol: HTTP
aws:elb:listener:
ListenerEnabled: false