AWS

6 fev, 2013

Mão na Massa – sobre Elastic Load Balancer

Publicidade

Este artigo vai explicar como criar um ELB para fazer balanceamento da carga de tráfego através de várias intâncias (servidores Cloud) EC2 em uma mesma Availability Zone. Iremos abordar os seguintes tópicos:

  • Lançar múltiplos web servers em um bloco;
  • Criar um Elastic Load Balancer;
  • Configurar o ELB para servir de frente aos web servers.

301.bmp

Lançando os web servers

Neste exemplo nós iremos lançar dois servidores Amazon Linux com um web server Apache com PHP e uma aplicação básica instalada na inicialização. Esseartigo vai fazer uma rápida introdução com exemplos bastante básicos para as suas instâncias, com o objetivo de fazer você pensar sobre padrões mais complicados, que provavelmente você irá querer para implementar na sua empresa.

Navegue através da aba EC2 no console da AWS e clique em Launch Instance:

EC21

 

EC22

Selecione Launch Classic Wizard e clique Continue:

303

Selecione a AMI básica  64-bit Amazon Linux:

304.bmp

Mude o número de instâncias para duas e clique Continue:

305.bmp

Na próxima tela, nós iremos usar o campo User Data para inicializar nossa instância, rodando um script customizado para instalar os pacotes necessários (Apache e PHP) e um código de exemplo (scripts em PHP) que usaremos neste artigo. Para isso, copie e cole o script de inicialização abaixo (você pode usar Shift-Enter para inserir uma nova linha na caixa de texto) dentro do campo User Data e clique em Continue:

#!/bin/sh
curl -L http://tinyurl.com/bootstrap-sh | sh

Isto irá fazer o download e executar o script bootstrap.sh de um bucket S3. Apenas para conhecimento, nós usamos o servico tinyurl para encurtar o tamanho da URL que você deve digitar na caixa de texto. A URL real é http://awsenterprisetraining.s3.amazonaws.com/scripts/bootstrap.sh. Sinta-se à vontade para fazer o download do script e analisar o que ele faz exatamente para customizar uma AMI Amazon Linux genérica para essa aula.

306.bmp

Dê um nome amigável ao seu novo web server como “Lab Web Servers” e clique Continue:

307.bmp

Após isso, crie um par de chaves (se ainda não tiver nenhuma) e faça o download para  c:\ec2. Para o exemplo abaixo, nós nomeamos o par de chaves de “Lab”:

308

Crie um security group, que são suas regras de firewall. Partindo do principio que estamos construindo um Web server, nás vamos nomeá-lo de “Lab Web Tier”, e abriremos as portas 22 e 80.

309.bmp

Reveja suas opções, e clique em Launch:

310.bmp

Conectando de forma independente a cada Web Server

Lance as instâncias e monitore-as para ter certeza que estão rodando:

311.bmp

Clique no primeiro web server, localize o nome de DNS do servidor, selecione e copie este nome.

312.bmp

Cole o nome DNS em outra janela/aba do navegador e você deverá ver algo como mostrado abaixo (repita este passo para o segundo servidor):

313

Note os diferentes ID’s de instância presentes em cada web server.

Criando um ELB

Você possui agora dois web servers, mas você precisa de um load balancer na frente destes servidores para que os seus usuários acessem um único lugar e para balancear as requisições para os servidores. No console EC2, clique em Load Balancers e depois clique no botão Create Load Balancer:

LB1

Nós iremos criar apenas um load balancer HTTP simples, então dê o nome ao seu ELB de algo como LabELB, deixe as configurações padrão para o Listener, e clique em Continue:

315.bmp

Na proxima tela, mude o Ping Path para / (delete o index.html) e aceite as opções avançadas. Note que estas configurações podem ser alteradas no futuro, e configure como o ELB Health Check irá se comportar incluindo o health check protocol, porta, e o caminho, assim como o health check interval, timeout, e o heath thresholds.

316.bmp

Selecione seus web servers e adicione-os ao seu ELB e clique em Continue:

317.bmp

Revise suas configurações do ELB e clique em Create (seguido de Close):

318.bmp

A AWS está criando agora o seu ELB. Isso irá demorar alguns minutos para personalizar o seu load balancer, anexar os seus web servers, e fazer uma série de verificações para certificar a saúde deles. Clique no seu load balancer, selecione a aba Instances, e espere até que o status das instâncias mudem de Out of Service para In Service. Perceba que a coluna Healthy? mudou de N0 para Yes.

319.bmp

Uma vez que seu ELB estiver estável, clique na aba Description, selecione e copie o nome DNS A Record do ELB:

320.bmp

Abra a URL do ELB em uma outra aba do navegador. Aperte o botão atualizar do navegador e você deverá passar através dos seus servidores web.

321a

321b

Parabéns! Você acabou de configurar e iniciar com sucesso um ELB.

Métricas do ELB com CloudWatch

O ELB reporta automaticamente as métricas de load balancer para o CloudWatch. Você pode ver essas estatísticas clicando na aba CloudWatch no console, clicando no link ELB à direita, e selecionando a estatística que deseja ver. O ELB reporta request latency, request count, heathy & unhealthy host counts, e uma série de métricas adicionais. As métricas são reportadas assim que são encontradas e podem levar alguns minutos para aparecerem no CloudWatch. Os screenshots a seguir mostram o gráfico HealthyHostCount no CloudWatch, que muda de zero hosts ups para dois assim que o ELB é criado neste artigo.

CW1

Encerrando todos os serviços pagos

Essas instruções irão encerrar todos os serviços tarifados feitos neste artigo. Por favor, apenas siga esses passos se você não planeja completar nenhum processo adicional dos artigos da AWS.

Para encerrar todos os serviços pagos, localize suas instâncias de web server no link Instances do console EC2, selecione o web server, clique com o botão direito e selecione Terminate Instance. Logo após, clique no link ELB no console EC2, com o botão direito clique no ELB e selecione Delete Load Balancer.

***

Atenção: Reiteramos a importância de você desligar os recursos que você usou apenas para seguir esse tutorial. Não nos responsabilizamos por serviços não desligados.

***

Tutorial desenvolvido por José Papo (AWS Tech Evangelist para a América Latina) e evangelistas AWS com revisão e editoração da iMasters.