AWS SERIES: DAY … TEN: (deploying) A LOAD BALANCER FOR APPLICATION-and-other-scenario-details

Continuando do ponto em que paramos, crie uma nova imagem baseada em nosso ambiente web. Ela precisa refletir a configuração mais recente e atual possível, ou seja: apache + PHP instalados + página HTML de cadastro + salvamento dos dados informados remotamente via RDS … Para tanto, basta voltar ao post aqui referido. Nele ensino como fazê-lo em pouquíssimos passos.

https://automatesmachines.org/2022/01/20/aws-series-day-five-using-your-own-ami-or-custom-image/

Com isso, teremos duas imagens criadas, e pré-programadas para diferentes usos:

Figura 01. AMIs

Guarde bem esta última, pois é a partir dela que garantiremos a alta disponibilidade da aplicação posteriormente.

>_ DRAW :: DESENHO

Figura 01. cenário-diagrama proposto

Alguns destaques importantes, além de breves percepções acerca da nossa infraestrutura:

  • O retângulo maior representa a nuvem da AWS. Tudo o que está fora dele ou é a própria internet, ou são elementos de outras redes.
  • Usuários comuns e clientes da aplicação estão liberados apenas para o tráfego web (portas: HTTP-80 / HTTPS-443)
  • Todo esse fluxo de pacotes chega, necessariamente, primeiro no load balancer.
  • Realizada a checagem de disponibilidade atual do ecossistema, é então liberado o encaminhamento para uma das instâncias EC2.
  • Caso não haja recursos suficientes (memória e processamento) é sinalizado e autorizado a criação de novos para suprir a demanda atual.
  • Uma vez terminada a interação do usuário, na forma de preenchimento de informações, e solicitado o armazenamento para uso imediato ou posterior, o banco de dados é acionado para esta função, e ocorre uma troca entre os serviços EC2 e RDS quase que instantaneamente.
  • Computado tais dados, o usuário poderá seguir usando o restante da aplicação sem maiores problemas.
  • Qualquer manutenção que porventura apareça no meio do caminho, esta deverá ser efetuada pela equipe de engenheiros na porta 22 do SSH, previamente liberada e prevista.

>_ LOAD BALANCER: HTTP E HTTPS

Localizado no painel de serviços EC2, percorrendo o caminho mostrado adiante, e depois movendo o cursor até o final da coluna esquerda, você encontrará um menu chamado Balanceamento de Carga. Expanda-o para abrir o submenu Load Balancers e por fim selecione a opção criar load balancer clicando com o botão direito:

HOME > EC2 > PAINEL > COLUNA ESQUERDA > BALANCEAMENTO > LOAD BALANCERS > CRIAR

Três tipos serão mostrados: (a) de aplicação (b) de rede e (c) de saída. Escolha o tipo aplicação:

Figura 02. LB de aplicação

O intuito aqui é que o mesmo fique em stand-by, escutando portas (80 e 443) e aguardando requisições. Sua interface, ou entrada, estará direcionada para o lado de fora da AWS, na prática sendo a internet ou qualquer outra rede de computadores. Somente após análise do LOAD BALANCER esse tráfego externo será redistribuído internamente, entre dois ou mais servidores.

Figura 03. nome e face da entrada

Próxima seção de perguntas diz respeito às configurações de rede (VPC no caso da AWS):

Figura 04. mapeamento de rede

Marque pelo menos duas regiões disponíveis da localidade atual (para mim: us-east-2, Ohio) Sem isso não há como garantir a continuidade e redundância da aplicação em nível de PRODUÇÃO.

Seguindo, temos o questionamento sobre o grupo de segurança a ser configurado … Crie um novo, para segmentar e controlar o acesso dos usuários.

Figura 05. acesso, rotas e portas

Chamo a atenção para as capturas subsequentes, pois cada uma conta para o êxito do todo, não precisando assim reforçar que são extremamente importantes.

Figura 06. target group

Muito bem, fato de número um para se tomar nota: quando falamos de roteamento envolvendo um load balancer, precisamos associá-lo a uma nomenclatura específica (sim 😕 mais uma!) Trata-se dos target groups, ou grupos-alvo em tradução livre. Seu objetivo é vigiar constantemente o estado mais recente de instâncias, endereços ip ou funções lambda. A ideia é simples, e serve para responder eventuais perguntas como: quem está livre? 🤔 quem está ocupado? 🤨 quem está ocioso há algum tempo?🧐

Figura 07. HTTP health check

Segunda nota, e fato de número dois: health check ou verificação de saúde. Nome sugestivo e de fácil compreensão, diz respeito acerca da resposta obtida da raiz da aplicação web, na prática o barra ( / ) Se for HTTP 200, ok maravilha! Perfeito! Significa que o sistema está “vivo” e respondendo normalmente, sem nenhum tipo de demora, atraso ou erro. Agora se for o oposto, como por exemplo: HTTP 401 (não-autorizado); HTTP 403 (proibido); HTTP 404 (não-encontrado); HTTP 500 (erro interno); HTTP 502 (bad gateway); etc … Implica dizer que, algo errado não está certo! 😜 Então, por favor, descarte essa instância/ip/função e redirecione para as outras “saudáveis” !!!

Figura 08. create target group

Número três: registro dos alvos … Talvez o maior erro cometido pela maioria seja o fato de, apressadamente já selecionar aqui as instâncias que estão no ar, ou seja ligadas. Bom, quanto a isso o que posso afirmar é que não está errado, mas também não está totalmente certo. Recordem sempre: o que queremos é apontar numa única tacada todas as instâncias de um grupo. O que iria na contramão se optássemos pelo outro método: um clique, uma máquina (pensem no trabalho para +100 servidores) Então, somente por ora, vamos pular esta etapa. Siga em frente!

Figura 09. reveja e crie

Revise suas configurações ao final da página. E aguarde o processo:

Figura 10. LB criado

Deixe uma resposta

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.