amazon-ec2

Como instalar e configurar Amazon EC2 e opinião após alguns meses

Neste post vou explicar como se cadastrar uma conta no Amazon ec2, instalar e configurar um ambiente com PHP e mysql . Antes de mais nada o Amazon EC2  é resumindo um serviço de hospedagem de servidores na nuvem, na minha opinião o melhor do mundo. Ele ainda possui para versões de servidores básicos que possui um ano de hospedagem gratuita e é esse serviço que vou mostrar como configurar. Para você que procura um ambiente de alto nível, saiba que ele pode ser obtido gratuitamente por 1 ano e mesmo após esse período o preço não é absurdo . Ainda vou descrever como é minha convivência após alguns meses de Amazon na empresa aonde trabalho.

 

O cenário crítico

Eu trabalho na Guarida Imóveis , umas da maiores imobiliárias do Sul do Pàis . A Guarida tem milhares de acessos todos os dias em seus sites e sistemas web. Até janeiro deste ano toda a nossa infraestrutura web estava nos clouds da Locaweb, isso inclui o site da empresa, e alguns sistemas internos. O problema é que chegou um momento em que nossos servidores começaram sofrer grandes sobrecargas de processamento e memória sem que nossa aplicação fosse alterada. Sofremos por um período razoável e o suporte da Locaweb embora dedicado não achava a solução e passava a responsabilidade para a nossa infra de TI.

Optamos por migrar para outro servidor, eu já havia lido sobre os serviços da Amazon, sobre suas infraestruturas altamente escaláveis, disponibilidade e simplicidade de operação ( neste momento o preço não era objeto de discussão, até porque gastávamos algum milhares de reais na Locaweb também) . Como a  infraestrutura da Guarida era composta diversos servidores e a Amazon lhe da diversas opções de ambientes, fiquei com receio de fazer toda a migração com minha equipe apenas, então busquei empresas partner da Amazon e cheguei até a Puntox . Desde já recomendo para quem tem uma infraestrutura web de grande porte que use uma empresa parceira da Amazon caso queira usá-la, pois há inúmeras maneiras de se configurar um ambiente na Amazon e estão sempre inovando, por isso acho mais adequado.

 

A migração para o Amazon EC2

O pessoal da Puntox foi realmente exemplar em seu trabalho desde a instalação e configuração do ambiente até a sua migração, seu suporte também é ágil e extremamente proativo ( quando falamos em disponibilidade de recursos de TI, proatividade em momentos críticos é algo de muito valor). Enfim migramos, os problemas acabaram e agora vou dizer o que realmente nos faz continuar na Amazon.

A primeira coisa que quero ressaltar e que realmente me admirou é que em nosso antigo fornecedor tínhamos praticamente o dobro de servidores alocados do que temos hoje, e nossos acessos diários hoje são maiores (consideravelmente maiores). Ou seja, o pessoal da Puntox com um número menor de servidores conseguiu atender nossa demanda sem sofrermos com paradas críticas ou qualquer problema para nossos usuários, clientes e colaboradores, enquanto que o antigo fornecedor nos oferecia apenas como solução aumentar o número de servidores.

 

Minha experiência usando Amazon EC2

  • Diminuímos o número de servidores em relação ao antigo fornecedores e conseguimos atender a uma demanda 20% maior . Economizamos custos, e reduzimos a complexidade de nossa infraestrutura. Méritos aqui a equipe de suporte que soube configurar um ambiente mais otimizado para nossa necessidade.
  • Minha equipe interna não teve mais que se preocupar com disponibilidade dos serviços. A Amazon possui um sistema de monitoramento extremamente flexível, é possível configurar alarmes para que você possa ser avisado sobre qualquer falha ou alteração de comportamento que sua infraestrutura  venha a sofrer ( e digo mais, realmente funciona).  Só para dar um exemplo, hoje se meu ambiente hospedado ficar mais de 5 minutos acima de 85% de processamento minha equipe de suporte já avisada pelo sistema para que alguma ação seja tomada.
  • Todas as métricas que você pode imaginar de monitoramento de rede ou hardware a Amazon registra e coloca a sua disposição. Você pode acompanhar tudo por um outro serviço da Amazon chamado Cloud Watch. Ainda tem um aplicativo mobile para você acompanhar todo o status de sua infraestrutura.
  • Hoje se nosso ambiente estiver sobrecarregado de alguma forma, automaticamente um servidor adicional é posto em produção, aumentando nossa capacidade, esse recurso é chamado de Auto Scaling .
  • Outro ponto que me deixa confortável é que temos acesso total aos servidores, por incrível que pareça, há diversos fornecedores com planos de hospedagem corporativa que limitam apenas a equipe da própria empresa alterar qualquer coisa nos servidores. Na minha experiência, esse sempre foi um aspecto negativo. Hoje apesar de deixar tudo para a empresa que nos atende minha equipe tem liberdade de fazer o que quiser com o ambiente.
  • Além do do Auto Scaling e Cloud Watch, colocar um novo servidor no ar é uma questão de minutos literalmente.

 

OK , Amazon EC2 é bom, mas e o preço ?!

Em geral hoje nós pagamos o mesmo valor que pagávamos na Locaweb(também temos mais serviços agregados que no antigo fornecedor), porém temos um serviço muito mais robusto, um suporte que funciona e que é proativo em situações de crise ( pois elas sempre acontecem na vida real) . A Amazon cobra de uma forma muito singular, ela cobra por hora que seus servidores ficam ligados, estejam eles a 100% de uso ou não, e cobra por tráfego de rede, detalhes sobre os preços podem ser encontrados aqui ( não esqueça de consultar os preços para o Brasil).

 

 Colocando o seu site na Amazon de graça por 1 ano

Isso mesmo se você tem um site,e  ele não precisa de uma grande infraestrutura, saiba que a Amazon disponibiliza um servidor básico (seja Windows ou Linux) para você usar durante 1 ano de graça. Claro que tem algumas cotas que se forem extrapoladas vão ser cobradas, detalhes sobre os o que você tem gratuitamente estão aqui. Realmente os limites gratuitos são suficientes para um site ou blog básico , eles incluem um servidor Linux ou Windows Server, você ainda pode colocar outro servidor apenas para banco de dados (chamado de serviço RDS), 15GB de tráfego mensal ( não é pouco) , até um servidor CDN com 5GB de entrega você pode configurar e tem a disposição 20GB de backup, entre diversas outras coisas.

Eu coloquei meu próprio site no Amazon EC2 e agora vou mostrar como vocês podem configurar um ambiente PHP e Mysql para hospedar seu site.

 

Criando a conta na Amazon

A primeira coisa que você precisa fazer é criar sua conta na Amazon AWS o link para cadastro é este aqui . Clicando em Comece a usar gratuitamente você tem alguns passos a seguir :

Preencha o campo email, marque a opção I am a new user e clique no botão para prosseguir.

ec2-passo-0

 

 

 

O próximo passo é preencher seu nome, confirmar seu email e escolher uma senha.

 

ec2-passo-1

 

A seguir seus dados de contato conforme mostra a imagem abaixo.

 

ec2-passo-2

 

Embora o serviço seja gratuito por 1 ano, a Amazon lhe pede informações de cartão de crédito, pois há a possibilidade de você extrapolar alguma cota, lembrando que na Amazon você só paga pelo que usa, se por acaso um dia do mês você extrapolar alguma conta, só vai pagar pelas horas que extrapolam.

 

ec2-passo-3

 

 

Na próxima tela o sistema pede uma confirmação por telefone, você coloca seu número de telefone e clica em confirmar, um número PIN aparece. Seu telefone toca e você tem que digitar esse PIN com o teclado . Uma coisa curiosa aqui é que comigo só deu certo quando coloquei o PIN através de um telefone fixo, acho que o sistema da Amazon não reconheceu os dígitos quando digitados de um teclado Android, vai entender.

 

ec2-passo-4

 

Após digitar o PIN é só aguardar e tela abaixo  e clicar em Continuar.

 

ec2-passo-5

 

O próximo passo é escolher que tipo de suporte você deseja, claro que eu escolhi o gratuito.

 

ec2-passo-6

 

Após isso seu cadastro foi realizado com sucesso , basta voltar aqui e colocar seu email e senha.

 

Criando o servidor para o seu site

Uma vez logado no console da Amazon, você tem todos os serviços da mesma a disposição, no nosso caso o que nos importa é o Amazon EC2, opção para criar servidores na nuvem. Essa opção fica a esquerda da tela conforme imagem abaixo:

 

ec2-passo-8

 

A Amazon possui algumas regiões com datacenters no mundo, quando você configura algum serviço, está condicionado a uma região, geralmente no primeiro acesso e pelo menos para mim a região estava em Oregon e tive que mudá-la para São Paulo. Em qualquer parte do sistema para mudar a região basta clicar sobre o nome da cidade localizada na parte superior direita da tela conforme imagem abaixo. É importante frisar que para sites com o público-alvo brasileiro é melhor escolher a região de configuração de São Paulo pois a latência é menor.

 

ec2-passo-9

 

 

Agora esta na hora de criar nosso servidor, no serviço da Amazon EC2, cada máquina virtual recebe o nome de instância, sendo assim nós vamos criar nossa primeira instância. Há várias tipos de instâncias que podem ser criadas, o que diferencia elas são a capacidade de hardware , memória e processamento. Como estamos na versão gratuita nós temos direito a uma micro instância (t1.micro como é denominada no sistema) com um processador Intel(R) Xeon(R) CPU E5-2650 0 @ 2.00GHz e 650MB de ram .

Para criar a instância basta clicar em instances no menu esquerdo Instances e na próxima tela clicar no botão azul Launch Instace e você será enviado para a seguinte tela:

 

ec2-passo-10

Criar uma instância (diga-se também máquina virtual) no Ec2 é muito simples, você tem que apenas escolher o sistema que deseja e pronto, já existe inclusive diversas versões de máquinas virtuais prontas para plataformas windows e Linux e ainda clicando em Community AMIs ( AMI de Amazon Machine Image) você tem acesso a versões de sistemas mantidas pela comunidade voltada para diversos ambientes de desenvolvimento ou objetivos diversos e ainda tem algumas AMIs para comprar na aba AWS marketplace . Eu já fui analista de infraestrutura Linux então optei por instalar uma imagem sem nada do Linux Centos e é essa que vou mostrar como instalar o ambiente PHP e Mysql.  Sendo assim na aba Quick Start escolham a primeira opção  Amazon Linux AMI, é um Centos sem nada instalado porém com diversos repositórios a disposição. Clique na opção conforme imagem abaixo :

ec2-passo-11

A próxima tela é apenas para mostrar os detalhes da instância escolhida, como estamos na versão gratuita ele nos mostra e alerta que é uma máquina de baixo desempenho, basta clicar em Review and Launch  conforme imagem abaixo.

ec2-passo-12

Agora temos a tela com a visão geral da instância que acabamos de configurar, não se preocupe com o alerta em amarelo, ele apenas está dizendo que nosso servidor está disponível para ser acessado pelo mundo todo via internet na porta 22(serviço SSH). Ao clicar em Launch para confirmar toda a configuração o sistema vai nos solicitar para criar uma key pair, que é na verdade uma chave pública de acesso, o acesso primário as instâncias criadas pela Amazon é via SSH e para criar a instância ele exige que seja criado uma chave de acesso logo de início.

Quando clicarmos em Launch vai abrir uma janela pedindo a seleção da key pair, como ainda não temos nenhuma criada escolha a opção create a new key pair, escolha um nome que você desejar e clique em download key pair .  Após isso mude novamente o select para choose and existing key pair e escolha a kay pair que você acabou de criar, marque o checkbox  dizendo que você reconhece que tem acesso ao arquivo.pem e sem ele não podera acessar a instância. Depois clique em Launch Instance conforme imagem abaixo:

ec2-passo-13

E pronto acabamos de criar nossa primeira instância

ec2-passo-14

Agora podemos voltar a painel inicial, neste momento já temos uma máquia linux rodando na nuvem, porém o que queremos é um servidor web acessível de qualquer lugar do mundo, no momento só podemos acessar nossa máquina via SSH (porta 22) , então vamos liberar a porta 80 (http) para que um browser possa acessar este servidor. No menu esquerdo clique security Groups , depois na tabela que vai aparecer clique sobre a linha launch-wizard-1, você vai ver que nas TCP ports apenas a porta 22 está liberada. Na opção create a new rule, escolha http e clique em  add rule. Após isso a tabela de portas vai ficar como a imagem abaixo :

ec2-passo-15

Certo agora nosso servidor está com acesso a porta 80 para o serviço web e porta 22 para nossa administração, mas ainda falta um detalhe, precisamos ter um IP público de acesso associado a nossa instância, sendo assim vamos clicar em Elastic IPs  e em seguida Allocate new address e confirmar. Nosso IP já está alocado para nossa conta, agora vamos associá-lo a interface de nossa instância. Clique em Network Interfaces , marque a interface da sua instância e no botão Actions escolha a opção Associate Address conforme imagem abaixo:

ec2-passo-16

Selecione a interface que deseja associar o IP, marque a opção Allow associate  e pronto, já temos nosso servidor todo configurado e acessível via internet. Agora vamos acessá-lo via SSH e configurar o apache, php e mysql.

Acessando e configurando o servidor

Nós vamos acessar nosso servidor via SSH, quando criamos a key pair fizemos o download da chave pública, agora vamos converter essa chave pública em privada. Para converter a chave e depois acessar nosso servidor vou usar o putty (você pode usar outros programas se quiser). Você deve fazer o download do PuttyGen e o Putty . 

Execute o PuttyGen que vai converter nossa chave, com ele aberto clique em conversions e import key, selecione a chave que você fez download e confirme, conforme imagem abaixo:

 

ec2-passo-17

 

 

Depois do programa ler a chave apenas clique em Save private Key, você deve colocar o mesmo nome da key pair que criou. Feito isso o PuttyGen vai criar um arquivo de extensão .ppk. Uma coisa curiosa que aconteceu comigo é que fiz o download a primeira vez da chave de um notebook, e converti a mesma para privada de outro computador, por algum motivo que não entendi, só consegui acessar com a chave privada depois que fiz o download e converti do mesmo computador, após isso consegui acessar de qualquer computador mas o processo e download e conversão teve que ser do mesmo, apenas para constar minha situação ( pois me tomou alguns minutos de stress isso).

Agora vamos acessar nosso servidor usando o Putty se você nunca usou o putty com uma chave privada ai vai como fazer. Abra o Putty e clique no menu lateral em SSH e em seguida Auth, selecione a chave privada e confirme. conforme imagem abaixo:

 

ec2-passo-18

 

Volte para o menu session e em hostname coloque endereço da seguinte forma [user]@[elastic_ip] . A amazon sempre tem o mesmo usuário de acesso, uma vez que o que determina a autenticação é a chave primária. você deve usar sempre dessa forma : ec2-user@seu_elastic_ip . Após acessar você verá a seguinte tela :

 

ec2-passo-19

 

Agora já podemos começar a instalar os programas necessários, quando você acessa a primeira vez, sempre entra com um usuário comum. Para ter o acesso de root digite sudo su . A primeira coisa que vamos instalar é o apache, como estamos em um Linux Centos, vamos fazer tudo pelo gerenciador de pacotes yum , no console digite o seguinte comando :


1- yum install httpd php php-mysql php-gd php-pdo php-cli php-dev php-pear mysql mysql-server;

2 -chkconfig --levels 235 httpd on;

3 -chkconfig --levels 235 mysqld on;

 

O comando yum install , como já fica evidente instalar os programas citados, para o meu caso além de apache( que no Centos se chama httpd), php e mysql só precisei de mais algumas bibliotecas adicionais do php, caso precise de mais é só fazer o mesmo processo. O comando chkconfig configura os tempos de execução do apache e mysql, para não complicar, estamos dizendo para ambos iniciarem automaticamente junto com SO.

Agora é só iniciar os serviços mysql e apache com o comando:


1 - service httpd start;

2- service mysqld start

Se acessarmos agora nosso enderço de IP público pelo browser já teremos a seguinte resposta:

 

ec2-passo-20

 

Por padrão no Centos os arquivos devem ficar em /var/www/html . Agora já temos nosso servidor dentro da Amazon e com um ambiente PHP e mysql rodando.

 

Vinculando um domínio ao seu servidor na Amazon

Agora que já temos nosso servidor PHP/Mysql rodando falta vincularmos ele a um domínio, vamos o meu exemplo como eu faço para quem digitar robissonoliveira.com.br ser redireiconado para o nosso IP da Amazon. Para isso existe outro serviço da Amazon, o Route 53, no menu Services localize este serviço e clique nele, está localizado na parte superior da tela a direita.

 

ec2-passo-21

 

Em seguida clique em created Hosted Zone 

 

ec2-passo-22

 

Agora digite seu domínio sem o WWW e clique em create hosted zone.

 

ec2-passo-23

 

 

Feito isso você vai ver a seguinte entrada confirmando a sua criação de zona de DNS.

 

ec2-passo-24

 

 

Agora você já criou a Zona de DNS padrão da Amazon, mas falta adicionar as entradas para o seu domínio com e sem o WWW e a entrada de MX que é responsável por redirecionar suas requisições de email. Para preencher essas entradas selecione a linha que você acabou de criar e clique em Go to Record Sets. Nesta tela você deve inserir entradas do tipo A  , CNAME e MX . É bem simples a operação, então vou colocar como exemplo minhas entradas para terem como base:

 

ec2-passo-25

 

 

Concluindo

Este post ficou meio grande mas quis enfatizar os pontos positivos do serviço da Amazon e como agregou valor para a minha empresa e para meu site pessoal. Como já dito, é gratuito por um ano,  no entanto há alguns serviços que são cobrados desde o primeiro mês, que no caso é o DNS, mesmo assim os valores são mínimos. Para aqueles que tiverem a preocupação de quanto vão pagar daqui a um ano, a amazon disponibiliza uma calculadora para estimar seus custos baseados na quantidade utilizada de recursos, o link para a calculadora é este .

Para dar um exemplo, para o meu site o custo ficou em U$$18,00 , cerca de 50 reais . Para mim é um custo aceitável em troca da estabilidade, disponibilidade e liberdade que tenho em gerenciar o serviço. Para terem uma ideia neste mesmo servidor instalei um serviço de Node.js para testar algumas aplicações que desenvolvo. Para aqueles que monetizam seu site acho que pode ter um ROI melhor ainda. Espero ter contribuído para aqueles que já conhecem a Amazon e tinham algumas dúvida como eu tinha e para quem acabou de conhecer.

  • Boaa Robisson, melhor artigo sobre Amazon EC2 que eu já li, parabéns, e obrigado pelo conteúdo. Fiquei só com uma dúvida: a RAM de 613MB já inclui a RAM gasta pelo CENT OS?

    Obrigado.

    • Obrigado Anderson, respondendo a sua pergunta, sim, você tem acesso a maquina como um todo, ou seja esses 650MB de RAM é para seu sistema e demais tarefas, no meu caso por exemplo o Centos está ocupando uns 130MB de RAM.

  • E você sabe me dizer se o CentOS gasta menos RAM que o Ubuntu 12.10?

  • Não já trabalhei bastante com servidores Linux, mas sempre Centos, Red Hat ou Debian. No caso o Ubuntu nunca usei, mas se você se refere a um Ubuntu comum com certeza gasta mais, eu uso um em meu notebook, se for um Ubuntu Server não tenho experiência com ele.

  • Leonardo

    Qual a diferença entre a amazon e o azure?

    • Oi Leonardo,
      Não tenho conhecimento sobre o Windows Azure, pelo pouco que sei é uma plataforma Microsoft para hospedar aplicativos construídos no próprio padrão Microsoft. Já o Amazon Ec2 que mencionei nesse post é um apenas um dos serviços da Amazon que é voltado para a hospedagem de serviços web em geral, independente de plataforma ou linguagem. Qualquer serviço pode ser disponibilizado através da nuvem.

  • Olá,
    Observei que você aplicou apenas 1 registro MX do google apps, só precisa colocar este para migrar a plataforma?
    Estou utilizando esse 1 ano gratis, aplicando o registro no routes + o dns para o registro.br será aplicado taxas nesse primeiro ano gratuito né?

    Grande Abraço

  • Oi Thales,

    Apenas uma entrada é o suficiente. Quanto ao DNS sim será aplicado taxas, no meu caso foram 51 centavos apenas.

    Abraços.

  • Jefferson

    Olá Robisson,

    Tenho um site com uma média de 5 mil acessos diários, mas que está aumentando semanalmente, portanto acredito que devo chegar aos 10 mil em poucos dias.
    Será que o plano gratuito é o mais recomendado ou é melhor contratar um pago com mais GB ?

    • Oi Jefferson,

      Sem dúvida alguma use um plano pago, nenhum plano gratuito que eu tenha conhecimento vai aguentar este tráfego com qualidade. A questão não é tráfego, mas processamento e memória.

      Abraços.

  • Richard

    Olá, ótima postagem, e parabéns pela iniciativa de ajudar ao próximo.
    Estou com dificuldades de vincular um e-mail, poderia fazer um passo-a-passo? Obrigado!

  • Elton

    Vlw, cara! Muito bom o post, me ajudou bastante! Principalmente sobre o Route53!

  • Cleiton da Silva Leal

    Bom dia.

    Tenho uma dúvida, eu Gostaria de montar um Servidor Zabbix dentro dos serviços da AMAZON, de forma que monitorasse outros servidores físicos dentro da empresa. Porém eu não tenho certeza se dessa forma o serviço funcionaria de forma adequada. Já que pelo seu depoimento tem esse tipo de contato com eles poderia tirar esta dúvida?

    Muito Obrigado!

  • Luciano

    Olá Robisson, parabéns pelo post e conteúdo.
    Sou um usuário que gostaria de inserir meu site com a hospedagem AWS e esse post foi sensacional.
    Tenho uma dúvida relacionada para a criação e gestão das contas de e-mail. Você poderia me ajudar ou informar como é feito este processo? Muito obrigado.

    • Fala Luciano, obrigado pelo elogio.

      Com relação a sua dúvida, no exemplo do meu post, eu não falo de gestão de emails, pois utilizo uma ferramenta separada para isso, eu contratei o Google Apps for Business para mim e apenas tive que fazer o apontamento das entrada de MX do meu domínio para os servidores MX do Google no Amazon S3 que é o serviço que gerencia as entradas de DNS.

      O Amazon EC2 é um serviço de computação em nuvem, você até pode instalar e configurar seu próprio serviço de email ( mas eu não recomendo ), mas mais normal é que você contrate um serviço profissional e apenas configure as entradas de MX do seu domínio.

      Qualquer provedor de email que você contratar vai lhe informar os endereços de MX deles, ai é só você configurar como está a imagem no meu exemplo, com a devida entrada e prioridade.

      Como você pode ver, o meu artigo é de 2014, então algumas coisas podem ter mudado. Hoje não estou mais na Amazon e sim na Digital Ocean, costuma mudar de tempos em tempos para praticar um pouco e ver outros serviços.

      Espero que tenha ajudado. 😉