AWS EC2 – Parte 1.1: Mão na massa com EC2 Service

Tempo de leitura: 17 minutos

E aí galera!

Chegou a hora de colocar a mão na massa.

Foto criada por jcomp – by br.freepik.com

Vamos trabalhar no estilo laboratório. Então, para prosseguir, você já deverá:

  • Ter uma conta ativa na AWS. Caso não tenha, é bem fácil configurar uma. Siga os passos aqui.
  • Ter feito a leitura do artigo introdutório ao EC2 para entender os conceitos que iremos trabalhar. O artigo está aqui!

A partir de agora, iremos descobrir, na prática, como executar, re-dimensionar, gerenciar e monitorar uma instância EC2. Para executar os passos desse laboratório, você precisará de 60 minutos minutos mais ou menos.

Trabalharemos os seguintes tópicos:

  • Executando uma instância EC2 com um servidor de aplicação instalado;
  • Monitorando a instância EC2 criada;
  • Configurando o Security Group e acessando a aplicação;
  • Redimensionando minha instância;
  • Testando a proteção contra encerramento.

Esse artigo faz parte de uma série de artigos sobre o Amazon EC2. Para ver o índice completo, clique aqui!

Executando uma instância EC2 com um servidor de aplicação instalado

O primeiro passo é acessar sua conta. Ao fazer isso, você terá acesso ao Console de gerenciamento da AWS.

1 No canto superior esquerdo, acesse a área de serviços e clique em EC2. Com isso, você terá acesso ao console de gerenciamento do serviço EC2 na AWS;

2 No canto superior esquerdo, verifique se a opção New EC2 Experience está habilitada, caso contrário, habilite-a;

Escolhendo nossa AMI (Amazon Machine Image)

Uma AMI funciona como um template a ser utilizado para executar instâncias EC2 na AWS. 

Ao utilizar uma imagem (AMI) da loja da AWS (AWS Marketplace), inicializaremos uma máquina virtual com configurações padrão.

Lembre-se que uma instância EC2 representa um servidor virtual na nuvem; assim como servidores físicos, servidores virtuais tem configurações de sistema operacional, memória e CPU.

Usaremos a imagem Amazon Linux 2 AMI  para executar nossa instância EC2.

3 Estando no console do EC2, clique no botão “Executar instância”, no canto superior direito, e escolha a opção “Executar instância”;

4 No próximo passo, selecionaremos a imagem que iremos utilizar em nosso laboratório, a Amazon Linux 2 AMI (HVM). É possível que tenha mais de uma opção disponível, escolha uma das opções que esteja qualificada para o nível gratuito:

5 Agora chegou a hora de escolher o tipo de instância:

Lembre-se que a AWS provê diferentes tipos de instâncias para resolver diferentes tipos de problemas, você pode obter informações mais detalhadas sobre isso aqui.

Em nosso caso, vamos escolher a t2.micro por ela estar qualificada para o nível gratuito e atender nossos requisitos de ter um equilíbrio entre recursos para nosso servidor de aplicação.

Vejam que essa instância tem 1 CPU virtual e 1 GiB de memória.

Pronto, escolhido o tipo de instância vamos para o próximo passo clicando no botão Próximo: configure os detalhes da instância

Chegou o momento de configurarmos os detalhes da instância:

Nessa parte iremos fazer algumas configurações de rede e de monitoramento.

O primeiro passo é indicar em que rede VPC (Virtual Private Cloud) iremos inicializar nossa instância. 

Não entrarei em detalhes sobre o serviço VPC da AWS, pois esse não é nosso escopo de estudo agora. Basta saber que, ao inicializarmos uma instância EC2, ela é executada dentro de uma rede VPC.

6 Em nosso contexto, iremos selecionar a rede padrão já disponível, a Default VPC

7 Iremos também configurar a proteção contra encerramento acidental

Essa opção está um pouco abaixo na lista de opções de configuração disponível.

Encerrar uma instância EC2 significa que ela será parada e seus recursos liberados, não podendo ser inicializada novamente.

A proteção contra encerramento acidental, como o próprio nome já diz, é uma garantia de que não iremos encerrar uma instância EC2 acidentalmente.

8 Na última parte dessa sessão, iremos configurar alguns detalhes avançados da nossa instância. Desça a tela até a opção Detalhes avançados e expanda essa opção, caso necessário.

No campo Dados do usuário iremos preencher com os seguintes comandos:

#!/bin/bash
yum -y install httpd
systemctl enable httpd
systemctl start httpd
echo '<html><h1>Hello From Your Web Server!</h1></html>' > /var/www/html/index.html

Esse script fará o seguinte, ao inicializar a instância EC2:

  1. Instalação do Apache web server (httpd);
  2. Configuração do servidor web para inicializar automaticamente no boot da instância;
  3. Ativação do servidor web;
  4. Criação de uma página web simples.

Todas as outras configurações deverão permanecer com seus valores padrão.

Siga para o próximo passo, clicando no botão Próximo: Adicionar armazenamento no fim da página de configurações de detalhes da instância

9 O próximo passo será adicionar o armazenamento para nossa instância EC2:

A instância EC2 armazena dados em um disco virtual chamado Elastic Block Storage.

Utilizaremos a opção padrão de storage que é um disco de 8GiB que já fica disponível ao avançarmos do passo anterior.

Assim, podemos seguir para o próximo passo, clicando no botão Próximo: Adicionar Tags

10 Agora, vamos adicionar uma tag à nossa instância EC2.

As tags permitem categorizar nossos recursos na AWS. É uma forma de organizar a casa dizendo para qual objetivo cada recurso está sendo utilizado.

Cada tag consiste em um par chave/valor.

Vamos adicionar nossa tag clicando no botão Adicionar tag, à esquerda da tela, definindo os valores conforme abaixo:

  • Key: Nome
  • Value: Web Server

Após isso, siga para o próximo passo clicando no botão Próximo: configure o security group.

11 Configurando o Security Group

Um grupo de segurança na AWS funciona como um “firewall”, ou seja, uma barreira que controla o tráfego de entrada para uma ou mais instâncias EC2.

Ao inicializar uma instância, é necessário associá-la a um ou mais grupos de segurança e definir quais são as regras que liberarão o tráfego para essas instâncias.

É possível modificar essas regras a qualquer momento, até mesmo criar novas regras para os grupos de segurança existentes. Ao efetuar essas mudanças, todas as instâncias EC2 associadas a esses grupos serão afetadas imediatamente.

Nesse passo vamos configurar um grupo de segurança para nossa instância EC2. Veja a imagem abaixo e siga as instruções para configurar o grupo:

  1. Mantenha a opção Criar grupo de segurança novo selecionada;
  2. Defina um nome e uma descrição para o grupo de segurança:
    1. Nome do grupo de segurança: GS Web Server
    2. Descrição: Grupo de seguranca para meu servidor web
  3. Como não iremos acessar nossa instância EC2 via SSH, iremos remover essa regra clicando no X, à direita da regra padrão pré-definida.
  4. O próximo passo é clicar no botão Verificar e ativar

Na próxima tela é possível revisar todas as configurações feitas para, então, executar a instância clicando no botão Executar:

Ao clicar em ativar, será exibida uma tela para que um par de chaves seja selecionado ou criado.

Esses pares de chaves são utilizados para “logar” na sua instância via SSH. Como esse não será o escopo desse laboratório, não iremos configurar um par de chaves e prosseguiremos com a opção Continuar sem par de chaves:

Selecione o checkbox “Reconheço que … ”

Agora é só clicar no botão Executar instâncias.

Ao retornar para o console do EC2, a instância irá aparecer com o estado Pendente. 

Ao finalizar essa inicialização, ele mudará para Executando.

Parabéns! 🎉 Agora você oficialmente lançou sua primeira instância EC2!

Monitorando a instância EC2 criada

Agora que lançamos nossa instância EC2, chegou a hora de aprender a como monitorá-la.

O monitoramento é parte essencial para mantermos a confiança, disponibilidade e performance de nossa solução.

1 Para isso, precisaremos selecionar nossa instância para, então, acessarmos a aba de Verificações de status.

Com essa verificação de status, é possível confirmar rapidamente se existe algum problema, tanto em termos de hardware quanto de software, que impeça nossa instância EC2 de executar nossa aplicação.

São dois os tipos de verificações, as verificações de status de sistema e as verificações de status da instância.

 Verificações de status de sistema

A primeira verificação confirma se sua instância está acessível. O Amazon EC2 testa se os pacotes de rede podem acessar sua instância.

Se essa verificação falhar, pode haver um problema com a infraestrutura que está hospedando sua instância (como sistemas de software, rede ou energia da AWS).

Caso haja falha aqui, não temos muito o que fazer, a não ser aguardar, pois a infraestrutura é de responsabilidade da AWS. 

Verificações de status da instância

A segunda verificação confere se seu sistema operacional está aceitando tráfego.

2 O próximo passo em nossa saga de monitoramento será acessarmos a aba Monitoramento, conforme imagem abaixo:

Nessa aba podemos visualizar métricas que são enviadas pela nossa instância EC2 ao CloudWatch, que é um serviço de monitoramento da AWS, e ter detalhes importantes sobre como ela está se comportando.

Como você acabou de inicializar sua instância, provavelmente, não existem dados disponíveis ainda.

3 Também podemos analisar os logs da instância a fim de identificar e diagnosticar problemas. 

Para isso, selecione sua instância, clique no botão  Ações no canto superior direito, escolha a opção Monitorar e solucionar problemas e siga para a opção Obter log do sistema.

Com isso, teremos acesso ao log de saída da inicialização de nossa instância EC2:

Depois disso, no canto inferior direito, clique no botão Cancelar para retornar ao console do EC2.

4 Agora iremos “tirar uma foto” de nossa instância EC2.

Como não configuramos um par de chaves para acessar nossa instância via SSH, não conseguiremos conectar nela via terminal.

Podemos, porém, “tirar uma foto” de como o console estaria caso pudéssemos acessá-lo.

Para isso, selecione sua instância, clique no botão Ações no canto superior direito, escolha a opção Monitorar e solucionar problemas e siga para a opção Obter captura de tela da instância:

O resultado dessa ação será a imagem abaixo:

Essa captura nos ajuda a ter visibilidade a respeito do status da instância e nos permite fazer uma análise rápida em caso de problemas na inicialização da instância.

Para voltar para o console EC2, clique no botão Cancelar no canto inferior direito.

Bingo! 🎉 Com esses passos, conseguimos explorar algumas maneiras simples de monitorar nossa instância EC2.

Configurando o Security Group e acessando a aplicação

Quando configuramos nossa instância EC2, um dos passos foi a instalação de um servidor de aplicação e a criação de uma página web simples. Lembram desse script?

#!/bin/bash
yum -y install httpd
systemctl enable httpd
systemctl start httpd
echo '<html><h1>Hello From Your Web Server!</h1></html>' > /var/www/html/index.html

Agora, nossa missão será acessar essa página web em nosso browser para ver se nossa aplicação está funcionando corretamente.

Por padrão, os recursos da AWS não ficam acessíveis publicamente. 

Para confirmar essa informação, podemos acessar o console do EC2, selecionar nossa instância e clicar na aba Detalhes para copiar o DNS público de nossa instância, que é o endereço com que podemos acessar a aplicação em nosso navegador.

Após copiar o endereço, cole no seu navegador e digite Enter

O navegador ficará pensando por um tempo, até que a requisição falhará por timeout:

O que está acontecendo nesse cenário? Se temos um endereço público, porque não conseguimos acessar a aplicação?

Lembrem-se que todos os recursos da AWS, por padrão, estão protegidos por um firewall chamado Security Group.

Não conseguimos acessar nossa aplicação porque esse grupo de segurança não permite tráfego de entrada na porta 80, que é a porta http padrão para requisições web.

Assim, para conseguirmos atingir nosso objetivo, precisaremos configurar o security group para permitir tráfego de entrada na porta 80.

1 Para isso, após acessar o console do EC2, no lado esquerdo, você verá um menu de navegação com vários itens. Escolha a opção Rede e Segurança e clique em Security groups.

Depois disso, você terá acesso a uma lista de grupos de segurança e nosso Security Group, aquele que definimos durante a configuração de nossa instância EC2, estará lá, o GS Web Server

2 Clique no ID do grupo de segurança  correspondente ao nosso “security group” e vejam que ele não tem nenhuma regra de entrada configurada:

3 Clique no botão Editar regras de entrada, à direita da tela, para adicionar uma regra que permita nosso acesso na porta 80.

Na próxima tela, precisaremos clicar no botão Adicionar regra e configurar os parâmetros conforme abaixo:

Tipo: HTTP

Origem: Qualquer local-IPv4

Clique no botão Salvar regras para finalizar.

IMPORTANTE: Essa regra criará uma entrada padrão que permitirá a qualquer pessoa acessar sua instância EC2. Essa é uma opção perigosa, então, lembre-se que em ambiente produtivo, não podemos definir uma regra tão aberta de acesso para nossas instâncias EC2.

4 Agora, volte para seu browser e tente acessar novamente a aplicação para ver a mágica acontecer:

🎉 Aí sim, hein? Com isso, conseguimos modificar nosso grupo de segurança para permitir acesso à nossa instância EC2. Parabéns!

Redimensionando minha instância

Como todos sabemos, a vida é dinâmica! O que atende às minhas necessidades hoje pode não mais atender amanhã.

Isso não é diferente para nossas soluções em cloud. Em algum momento, nossos recursos EC2 podem estar subutilizados ou hiper-utilizados.

E qual o problema disso? 

Com recursos subutilizados é bem provável que estamos pagando mais do que deveríamos pela nossa infra-estrutura na AWS e isso não é nada bacana, pois é um desperdício de dinheiro, e, na nuvem, sempre precisamos pensar em formas de otimizar nossos custos.

Ter recursos hiper-utilizados pode significar que os usuários de sua aplicação estão enfrentando problemas de performance.

Quando configuramos nossa instância EC2, escolhemos o tipo de instância t2.micro, especialmente pela natureza gratuita dela.

Agora iremos redimensionar essa instância para a t3.micro porque, em nosso caso hipotético, ela não está mais atendendo a demanda que precisamos. Para isso iremos:

1 Parar a instância EC2. 

Acesse o console do EC2, nele você conseguirá visualizar a instância que configuramos anteriormente.

Selecione a instância e depois clique nas opções Estado da instância -> Interromper instância:

Clique em Interromper.

Aguarde até que o estado final seja Interrompido:

2 Agora chegou a hora de redimensionar a instância:

Com ela já selecionada, vá para o menu Ações, no canto superior direito, selecione as opções Configurações de instância -> Alterar tipo de instância:

Escolha o Tipo de instância t3.micro e clique em Aplicar:

Quando inicializarmos a instância novamente, ela terá o dobro de vCPUs, a mesma quantidade de memória e terá um desempenho de rede melhor de acordo com suas especificações. Vamos relembrar e comparar?

t2.micro vs t3.micro

3 Da mesma forma, podemos redimensionar nosso disco virtual de armazenamento.

Vocês devem lembrar que configuramos um disco de 8 GiB para a instância. Agora iremos redimensioná-lo para um de 10 GiB.

Para isso, no Console do EC2, no menu de navegação à esquerda, na opção Elastic Block Store, clique em Volumes.

Nele, aparecerá uma lista de discos virtuais, precisaremos selecionar o disco que configuramos para nossa instância:

Depois de selecionar o disco, clique no botão Ações, no canto superior direito e escolha a opção Modificar volume:

Modifique o tamanho do disco para 10 GiB e clique em Modificar:

Clique em Modificar novamente para confirmar o redimensionamento.

Pronto! Agora que aprendemos a fazer o redimensionamento tanto de nossa instância quanto de nosso disco, o próximo passo será executar a instância com as novas configurações.

4 No console do EC2, vá para o menu de navegação à esquerda e clique na opção Instâncias:

Selecione a instância EC2 e vá para a opção Estado da instância e clique em Iniciar Instâncias:

Ao finalizar a inicialização da instância, vejam que na aba de Detalhes já temos as novas configurações disponíveis, observem o Tipo de Instância:

 Na aba Armazenamento, podemos confirmar o tamanho do disco configurado:

Parabéns! Você acaba de redimensionar sua instância EC2 para atender às dinâmicas necessidades de seu negócio!

Testando a proteção contra encerramento

E como último passo, iremos testar a proteção contra encerramento que fizemos durante a configuração de nossa instância EC2.

A proteção contra encerramento é uma forma de garantir que não iremos deletar instâncias por acidente.

Ao deletarmos uma instância, colocamos ela no estado de encerrado. Nesse estado, não podemos mais conectar ou reinicializar nossa instância. Estamos dizendo para a AWS que ela pode ser removida da infraestrutura.

Para testar essa proteção, no menu de navegação à esquerda, clique em Instâncias.

Selecione sua instância e, no canto superior direito, clique em Estado da instância e escolha a opção Encerrar instância:

O próximo passo é clicar no botão Encerrar.

Ao fazer isso, uma mensagem de erro será exibida indicando que não podemos encerrar a instância:

Se você realmente precisa encerrar a instância, será necessário desabilitar essa proteção.

Para isso, com a instância selecionada, para para o menu Ações, no canto superior direito e selecione Configurações de instância -> Alterar proteção contra encerramento.

Deselecione o checkbox Habilitar e clique em Salvar.

Com isso, você conseguirá executar os passos para encerrar sua instância EC2.

Ufa! Finalmente finalizamos nosso laboratório de instâncias EC2. Se você chegou até aqui, parabéns! Agora você já conhece um dos serviços populares da AWS e que é a base de tudo o que se faz por lá.

Se tiver dúvidas, deixe um comentário ou me envie uma mensagem. Feedbacks são sempre bem vindos!

IMPORTANTE: Não esqueça de parar ou encerrar sua instância EC2 para que você não seja cobrado indevidamente.

Referências

Introduction to Amazon EC2 | Amazon Web Services

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *