Alura > Cursos de DevOps > Cursos de AWS > Conteúdos de AWS > Primeiras aulas do curso Amazon EC2: alta disponibilidade e escalabilidade em uma aplicação

Amazon EC2: alta disponibilidade e escalabilidade em uma aplicação

Primeiros passos com EC2 - Apresentação

Boas-vindas à Alura e ao treinamento de AWS EC2!

Vamos entender essa ferramenta e aprender a colocá-la em prática. Para fazer o treinamento, é preciso ter feito os treinamentos de Onboarding em cloud computing, porque o instrutor partirá do pressuposto de que já temos conhecimentos em cloud.

No final do treinamento, teremos criado instâncias, com grupos de segurança, load balance, target group, autoscaling e mais. Apesar disso, começaremos pelo básico: dando uma olhada em instâncias.

Vamos aprender a criá-las, quais são seus tipos e como acessá-las. Para isso, vamos configurar o firewall da AWS, que são seus security groups. Com isso, entraremos nos detalhes de rede e segurança.

Mais à frente, definiremos IPs elásticos, conmfiguraremos pares de chaves. Além de segurança, também vamos trabalhar com imagens de AWS EC2. Criaremos nossa própria imagem, mas, antes, inicializaremos instâncias com imagens pré-configuradas do marketplace da Amazon.

Vamos relembrar que todas as instâncias serão criadas atreladas a volumes, mesmo que isso seja feito automaticamente.

Para finalizar, entraremos em balanceamente de carga e autoscaling. Com isso, teremos mais de uma instância fornecendo o mesmo sistema. No final, aprenderemos a executar algumas funções via linha de comando do EC2, como listar instâncias, interrompê-las e inicializá-las.

E aí, vamos começar?

Primeiros passos com EC2 - Relembrando os conceitos

Agora que você já sabe os conceitos de cloud computing e criou máquinas virtuais com a AWS, vamos praticar e focar em EC2, o serviço de máquinas virtuais da Amazon.

Antes de criar nossas máquinas virtuais, porém, vamos relembrar conceitos importantes. É importante perceber que não vamos precisar gastar dinheiro para estudar sobre o AWS S2. Basta acessar aws.amazon.com/free, seremos apresentados ao "Nível gratuitos da AWS".

Nessa página, temos acesso a bastante coisa gratuita, como o acesso ao EC2. Temos, aproximadamente, 750 horas por mês para estudar de forma livre, com poucas restrições. Se clicarmos sobre "Amazon EC2 750 horas", seremos redirecionados à descrição da ferramenta.

O nome significa "Elastic Compute Cloud", uma nuvem de computação elástica que suporta instâncias maiores, menores e várias instâncias, por exemplo. Encontramos informações importantes, sobre clientes que usam a ferramenta, para que a usam e mais.

Nosso foco, porém, é garantir que não paguemos nada. Clicando em "Nível gratuito da AWS" somos redirecionados a uma página com detalhes de preço. Nela, veremos que o nível gratuito dá 750 horas grátis com a utilização de um tipo específico de instância, t2.micro.

Obs: Em regiões onde t2.micro não está disponível, será possível utilizar t3.micro. Esses números estão relacionadas à geração das máquinas.

Esses são os métodos de precificação: "Sob demanda", que nos cobra conforme o utilizarmos, um modelo mais flexível e mais caro; e "Instâncias spot", que reserva um tempo em determinados tipos de máquina, o que faz a AWS te disponibilizar contas ociosas. A segunda opção é mais barata.

Existem outros tipos de precificação. Quando for trabalhar especificamente com isso, não esqueça de dar uma lida e conhecer todas as possibilidades.

Agora vamos relembrar como criamos uma instância de EC2. Na página inicial do console, temos informações importantes. O primeiro widget, "Visitados recentemente", como o próprio nome já diz, apresenta os recursos que utilizamos recentemente.

Acessaremos o EC2, buscando-o na barra de pesquisa. Vamos clicar em "Instâncias > Instâncias > Executar instâncias". Depois disso, vamos dar o nmome "ec2-first" para a tag. Abaixo, selecionaremos a imagem que criaremos na instância.

Basicamente, esse é o modelo que usaremos para subir nosso ambiente. Em início, vamos trabalhar com o padrão: Amazon Linux. Ao selecionar essa opção, podemos selecionar a arquitetura, mas vamos manter a do padrão.

Em "Tipo da instância", vamos manter "t2.micro", que se qualifica para o nível gratuito. Todas essas informações estarão atreladas à região que você seleciona. No vídeo, o instrutor selecionou "Norte da Virgínia".

Abaixo, em "Par de chaves (login)", geraremos uma chave pública e outra privada. Com elas, teremos acesso ao servidor. Precisamos ter uma na nossa máquina e outra no servidor, para garantir que acessemos o servidor sem a necessidade de inserir senha ou abrir nossa instância pro mundo geral.

Vammos clicar em "Criar par de chaves" e, a partir disso, vamos dar o nome "ec2". Vamos manter os detalhes padrão em "Tipo de par de chaves" e "Formato de arquivo de chave privada". Faremos isso porque vamos digitar comandos Linux dentro do Windows e usaremos o OpenSSH.

Depois, vamos clicar em "Criar par de chaves" e salvá-las. O instrutor as salvou em "wsl5 > Ubuntu > tmp". Agora vamos abrir o terminal e acessar a pasta com cd /tmp/ e mover o arquivo "ec2" para a pasta ssh/:

cd /tmp/
mv ec2.pem ~/.ssh/
cd ~/ .ssh/

Depois, vamos executar o comando ls -l, para que vejamos detalhes. Com isso, descobriremos que a chave "ec2.pem" tem muitas permissões. Vamos diminuir o número de permissões, para deixar a chave mais segura, com chmod 400 ec2.pem. Isso limitará a leitura da chave para o usuário.

De volta ao navegador, vamos manter as "Configurações de rede" inalteradas. Em "Configurar armazenamento", vamos "acoplar" um HD à máquina. Também não vamos alterar as informações padrão, porque estão dentro do limite gratuito.

Poderíamos configurar mais detalhes avançados, mas só faremos isso mais à frente no treinamento. Agora que finalizamos a configuração, vamos revisar e clicar em "Executar". Essa etapa pode ser demorada, mas isso depende de vários fatores.

Se acessarmos a documentação, no penúltimo link da página, encontraremos diversas formas de conexão, usando um cliente SSH, conectando diretamente ao painel e mais.

De volta a "Instâncias", na página do EC2, perceberemos que não há instâncias configuradas. Se atualizarmos a página, porém, veremos que a que acabamos de criar será exibida.

Vamos clicar no ID da instância. Lá, veremos mais informações, como o botão "Conectar". Clicando nele, vamos acessar a opção "Cliente SSH", que será utilizada pelo instrutor no vídeo. Vamos copiar o comando do exemplo e levá-lo até o terminal, dentro da parte da chave "ec2.pem".

A chave será utilizada para acessar o terminal remoto da imagem da Amazon. Esse domínio foi criado pela Amazon e atribuído à nossa máquina.

Quando digitamos o comando, o terminal informa que ainda não conhece esse host e pergunta se queremos adicioná-lo. Daremos "OK" e depois "yes". Agora a máquina foi adiciona à lista de hosts conhecidos.

Agora já estamos conectados à nossa instância remota no EC2.

No próximo vídeo, vamos relembrar o conceito de security groups.

Primeiros passos com EC2 - Security Groups

No último vídeo, relembramos alguns conceitos e os colocamos em prática.

Agora vamos relembrar o assunto de security groups.

Através das nossas máquinas, nos conectamos ao servidor remoto. Vamos nos desconectar com o comando exit.

No menu à esquerda da AWS, vamos descer até "Rede e segurança > Security groups". Quando criamos nossa conta, ela recebe um grupo por padrão, o "default". Depois de clicar em qualquer lugar da sua linha, podemos rolar a página para baixo e ver detalhes.

Dentre as abas do grupo, há a aba "Regras de entrada": ela informa que todo o tráfego está liberado para todos os usuários. Logo, o security group padrão libera por completo o acesso à sua rede.

Se acessarmos a aba "Regra de saída", veremos que a mesma coisa também está acontecendo.

Há outro Security group, o "launch-wizard-1", que também é criado por padrão, quando criamos nossa instância. Se clicarmos nele e acessarmos a aba "Regras de entrada", veremos uma regra diferente: ele só libera o acesso que utilize SSH, mas de qualquer origem.

Podemos alterar essas definições. Vamos permitir apenas o acesso à nossa máquina. Para isso, vamos em "Editar regras de entrada". Vamos apagar "0.0.0.0/0", o código que libera o acesso geral. Vamos selecionar, na seção "Origem", a caixa de seleção para "Meu IP".

Com isso, a Amazon identificará nosso IP público e somente ele poderá acessar essa máquina através de SSH. Para identificar melhor mais à frente, vamos adicionar "acesso ssh" à descrição. Depois, vamos salvar a regra.

De volta ao terminal, vamos executar o comando ssh -i, somado a chave da Amazon que baixamos e as informações de acesso. No caso do instrutor, foi:

ssd -i "ec2.pem" ec2-user@ec2-3-87-44-144.compute-1.amazonaws.com

Quando tentamos acessar, tudo continua funcionando. Agora vamos testar outra alteração, para impedir a liberação da entrada. Vamos clicar novamente em "Editar regras de entrada".

A partir disso, vamos copiar nosso IP público, removê-lo e, no seu lugar, colar o IP novamente, mas alterando um de seus números, para que seja um IP semelhante ao nosso, mas diferente. No caso do instrutor, ele substituiu "50" por "51", antes da barra inclinada à direita.

Vamos salvar a nova regra. Agora esse outro IP poderia acessar nossa máquina, enquanto o nosso, não.

De volta ao terminal, vamos executar o último comando novamente. Não receberemos resposta do servidor, porque nosso IP não está mais autorizado a acessá-lo.

Vamos voltar o security group "launch-wizard-1" e clicar em "Editar regras de entrada". Vamos apagar o IP fictício e inserir o IP da nossa máquina outra vez. Depois, salvaremos as regras e voltaremos ao nosso terminal, que ainda tenta se conectar.

Vamos interromper isso com "Ctrl + C" e tentar acessar novamente. Como nosso IP voltou a ser liberado, conseguiremos acessar.

Obs: Os grupos de segurança funcionam como o "firewall" da AWS, bloqueando e permitindo acesso de entrada e de saída da instância.

Não precisamos, porém, de um security group para cada instância. Podemos clicar em "Criar grupo de segurança", chamá-lo de "acesso-web" e descrever sua função na caixa de texto abaixo de "Descrição": "Libera acesso a porta 80 e 443 para acesso HTTP e HTTPS".

O grupo estará atrelado a uma VPC, vamos manter o padrão. Depois, na seção "Regras de entrada", clicaremos em "Adicionar regra". Em tipo, selecionaremos "HTTP". Em "Origem", "Personalizado"= e adicionaremos 0.0.0.0/0,::/0. Com isso, liberamos o acesso de IPv4 e IPv6.

Faremos o mesmo processo, adicionando outra regra. Dessa vez, para liberar o acesso HTTPS.

Depois, criaremos o grupo de segurança. Nós criamos um grupo de regras que podem adicionadas à nossa instância.

Adicionaremos acessando "Instâncias > Instâncias > ec2-first > Ações > Segurança > Alterar grupos de segurança". Lá, em "Grupos de segurança associados", vamos adicionar "acesso-web", o grupo que acabamos de criar.

Depois que salvarmos, ele será permitido.

Na próxima aula, continuaremos gerenciando instâncias.

Sobre o curso Amazon EC2: alta disponibilidade e escalabilidade em uma aplicação

O curso Amazon EC2: alta disponibilidade e escalabilidade em uma aplicação possui 135 minutos de vídeos, em um total de 36 atividades. Gostou? Conheça nossos outros cursos de AWS em DevOps, ou leia nossos artigos de DevOps.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda AWS acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas