AWS

23 jan, 2013

Mão na massa – falando sobre banco de dados como serviço Amazon RDS

Publicidade

Este artigo irá abordar o lançamento de uma instância de banco de dados relacional RDS e a configuração de uma EC2 para usar o RDS para as necessidades de bancos de dados. Caso queira uma explicação completa e um vídeo mão na massa sobre o tema, recomendamos também que assista à Introdução EC2 e RDS Mão na Massa – Instalando uma aplicação Web na nuvem da AWS. Os pontos a seguir serão abordados neste artigo:

  • Iniciar um banco de dados RDS;
  • Modificar nossos web servers para usar esse novo serviço de banco de dados relacional;
  • Backup e recuperação de um banco de dados RDS.

01

Iniciando um instância RDS

Nós iremos inicialmente lançar nossa instância RDS no mesmo AZ que usamos anteriormente. Localize o AZ no qual os seus Lab Web Servers estão rodando e substitua <your-AZ> onde for apropriado, seguindo as instruções a seguir:

Navegue pela aba RDS no console AWS e clique em Launch DB Instance:

RDS#2 RDS#1

Nós iremos usar um banco de dados MySQL, então clique em Select perto da opção MySQL:

03

Preencha os detalhes da instância de BD de acordo com as informações abaixo e clique em Continue:

  • DB Engine Version: Use a versão default (5.5.20 (default) neste exemplo);
  • DB Instance Class: db.m1.small;
  • Multi-AZ Deployment: No;
  • Allocated Storage: 5 GB;
  • DB Instance Identifier: aws201db;
  • Master User Name: awsuser;
  • Master User Password: aws201pwd.

04

Insira um nome de BD e escolha a AZ onde suas instâncias estão rodando (us-east-1a neste exemplo):

05

Deixe o valor padrão em Backup Retention Period e Backup/Maintenance Window, e clique em Continue. Depois disso, revise suas configurações e clique em Launch DB Instance.

0607

Nas instâncias RDS, monitore sua nova instância de BD até que o status mude de creating para available.

08

Adicionando Um Security Group de uma instância EC2 a um RDS Security Group

Observação: Essa seção só precisa ser feita caso você tenha realizado os processos dos artigos anteriores.

Os servidores RDS tem o mesmo modelo de segurança do Amazon EC2: não confiar em ninguém. Adicione seu EC2 Security Group, como mostrado abaixo. Esta tela pode ser um pouco confusa para novos usuários. O nome deste Security Group (o que está associado com a instância RDS) é “default”; contudo o nome que deve ser preenchido é o nome do Security Group associado à sua instância EC2. Se você seguiu corretamente todas as nossas sugestões, o nome deverá ser “Lab Web Tier”.

No primeiro menu dropdown, selecione EC2 Security Group. Seu account ID será automaticamente selecionado por padrão, e você deve selecionar Lab Web Tier como o EC2 Security Group. Note que o RDS lhe dá flexibilidade para você especificar regras de conectividade associadas com outros Security Groups de outras contas AWS, assim como endereços de IP.

09
Se tudo correr bem, levará alguns minutos para autorizar sua conta, depois disso o status irá mudar para “authorized”. A principal causa de falha neste tipo de autorização é sua instância EC2 estar rodando em um Security Group diferente do que você selecionou.

10

Configurar a instância para usar o RDS

Observação: Essa seção só precisa ser feita caso você tenha realizado os os processos dos artigos anteriores.

Nós disponibilizados uma tabela de banco de dados de exemplo e uma amostra de código para criar uma simples lista de contatos. Depois de configurar sua instância, você deve pegar a URL para o seu banco de dados. Na aba RDS, selecione seu banco de dados e procure por endpoint. Lembre-se dessa URL porque você irá precisar dela em alguns minutos.

11

Conecte via SSH na sua instância EC2 (não se esqueça de mudar o usuário para “ec2-user”).

Navegue até /var/www/html

cd /var/www/html

Execute os seguintes comandos todos em uma linha (substituindo na sua URL de RDS, o user name se ele não for “awsuser”, e o password se não for “aws201pwd” pelos valores apropriados). Isso irá inserir alguns dados iniciais no seu banco de dados da lista de contatos:

> mysql -u awsuser -paws201pwd --database=aws201 --host=<RDS_URL> < sql/addressbook.sql

Perceba que você esta usando o client MySQL de uma instância EC2 para carregar os dados no banco de dados RDS que está funcionando em outro servidor na AWS. Com o RDS você pode usar os clientes padrão MySQL ou Oracle para acessar seus dados.

Agora, edite o arquivo rds.conf.php e adicione sua RDS_URL na linha apropriada:

> sudo vi rds.conf.php

Exemplo do arquivo rds.conf.php depois de editado:

<?php
$RDS_URL="aws201db.cxlr5pujtsih.us-east-1.rds.amazonaws.com";
$RDS_user="awsuser";
$RDS_pwd="aws201pwd";
?>

Agora abra uma aba no navegador e vá até sua instância EC2 e você poderá ver a sua lista de contatos e interagir com ela:

12

Esse é um exemplo bastante básico de uma interação de uma lista de contatos com um banco de dados MySQL gerenciado pela AWS. É claro que cenários muito mais complicados são suportados pelo RDS, mas nós esperamos que esse exemplo básico seja o suficiente para demonstrarmos o nosso ponto.

Sinta-se à vontade para brincar com esta lista de endereços e adicionar/editar/remover conteúdo de seu banco de dados RDS usando os links Add Contact, Edit, e Remove links no Address Book.

Criando um Snapshot do RDS

Agora é uma boa hora para tirar um snapshot de seu banco de dados RDS. Na aba RDS do seu painel de controle, clique com o botão direito na sua instância RDS e selecione Take Snapshot:

13

Nota: Usando uma instância única RDS, você ficará fora do ar durante o tempo que durar o backup. É claro que nossa base de exemplo é muito pequena, dessa forma o tempo total de backup será muito pequeno também! Em produção recomendamos que você tenha um banco de dados Multi-AZ ou uma réplica de leitura para não causar impacto em sua base de produção.

Os snapshots de BD irão aparecer no link DB Snapshots no lado esquerdo da sua tela. Perceba que você pode facilmente lançar instâncias RDS com qualquer snapshot obtido previamente! Isso é util para, por exemplo, restaurar um banco de dados ou então para criar uma base de dados para testes ou homologação.

14

Modificando o tamanho da instância RDS

Escalar para cima ou para baixo o seu RDS via console AWS é muito simples. Você pode aumentar seu banco de dados ou modificar o tamanho do servidor, etc. tudo pelo painel de controle AWS.

Selecione sua instância de banco de dados RDS e clique em Modify.

15

Tente mudar para uma instância Large e, se você quiser, aumente o tamanho do banco de dados ao mesmo tempo. Não esqueça de clicar em “Apply Immediately” – caso contrário as modificações só serão aplicadas na próxima janela de manutenção.

Dica: Você pode mudar o tamanho das intâncias para cima ou para baixo a qualquer momento. Entretanto, você não pode diminuir o tamanho do storage de um banco de dados uma vez que você o aumentou.

Da mesma forma que com os backups, haverá uma interrupção da instância enquanto as modificações são aplicadas. No geral, recofigurações no RDS, como aumento de tamanho do banco de dados ou aumento da máquina levam entre 4 e 12 minutos.

16

Atualize o Auto Scaling Group

Observação: Essa seção só precisa ser feita caso você tenha realizado os processos anteriores.

Agora que nós já conectamos uma das nossas intancias ao RDS, vamos atualizar nosso Auto Scaling Group e enviar essas modificações ao nosso conjunto de servidores.

  • Crie uma nova Amazon Machine Image a partir da instância EC2 modificada (clique com o botão direito na instância modificada e selecione Create Image (EBS AMI) ou reveja o artigo de Auto Scaling para relembrar como criar uma Auto Scaling AMI para esse exemplo);
  • Grave o AMI ID e crie uma nova configuração de launch (configurações de launch já existentes não podem ser modificadas). Substitua seu <ami-id> nos comandos a seguir (tudo em uma linha). Note que essas instruções assumem que você criou um Security Group chamado “Lab Web Tier” e um par de chaves chamado “Lab” nos artigos anteriores;
C:\ec2>as-create-launch-config --image-id <ami-id> --instance-type t1.micro 
--key Lab --group "Lab Web Tier" --launch-config aws201-config2

O resultado na linha de comando será parecido com:
OK-Created launch config
  • Atualize seu Auto Scaling Group para usar as novas configurações de launch:
C:\ec2> as-update-auto-scaling-group aws201-as-group --launch-configuration aws201-config2

O resultado na linha de comando será parecido com:
OK-Updated AutoScalingGroup
  • Ative as novas mudanças incrementando o “minimum group size” então teremos dois web servers com nossas configurações de RDS par ao próximoartigo.
C:\ec2> as-update-auto-scaling-group aws201-as-group --min-size 2
O resultado na linha de comando será parecido com:
OK-Updated AutoScalingGroup
  • Parabéns, você acabou de aplicar uma atualização ao seu conjunto de web servers. Sinta-se à vontade para conectar ao seu ELB através de outra aba do navegador e interagir com a sua lista de contatos usando múltiplos servidores web.

Encerrando os serviços pagos

Nota: Artigos futuros da AWS precisarão de ambientes RDS configurados e rodando. Portanto, se você planeja fazer exercicios extras, deixe essa instância RDS rodando.

Delete a instância RDS

Na aba RDS, localizde e selecione sua instância RDS, e clique no botão Delete.

17

Você terá a oportunidade de criar um último snapshot de backup da sua instância RDS se você quiser salvar esse banco de dados para uso futuro (você será cobrado para manter esse backup).

Delete os snapshots de BD

Na aba RDS, selecione o link DB snapshots a sua esquerda. Selecione qualquer snapshot de BD que queira deletar e clique no botão Delete.

18

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