Amazon Web Services: Tudo que Você Deve Saber - Parte 5 (EC2)


Amazon Web Services: Tudo que Você Deve Saber





Elastic Compute Cloud (EC2)


EC2 é o serviço da AWS que fornece instâncias de processamento computacional, ou seja, as famosas, conhecidas e tradicionais máquinas virtuais (VMs para os íntimos).

Este serviço permite utilizar uma série de recursos e, a partir das características das instâncias que deseja ter acesso, é possível otimizar os custos e desempenho do ambiente na nuvem.

Eu tenho uma instância EC2 na Amazon que utilizo para hospedar vários sites com desempenho altamente satisfatório.

Inclusive é importante que você atende para outros serviços que podem ser agregados à sua instância para otimizar o desempenho dela. Eu instalei o Varnish na minha instância e utilizo ainda os serviços da Cloudfare, e com isso consigo desempenho muito melhor do que usando a instância (VM e S.O.) "pura".

Vejamos a algumas características bem interessantes do serviço EC2 da Amazon.

  • Links importantes
  • Documentação 

  • FAQ 
    Preços (veja também ec2instances.info)
  • EC2 (Computação em nuvem elástica) é a peça mais fundamental de computação em nuvem: um servidor privado virtual. Essas "instâncias" podem ser executadas na maioria dos sistemas operacionais Linux, BSD e Windows. Internamente, eles usam virtualização Xen.
  • O termo "EC2" às vezes é usado para se referir aos próprios servidores, mas tecnicamente se refere mais amplamente a uma coleção completa de serviços de suporte, como o balanceamento de carga (CLBs / ALBs), endereços IP (EIPs), imagens inicializáveis (AMIs) , grupos de segurança e unidades de armazenamento em rede (EBS).
  • Preços e gerenciamento de custos: é um tópico complicado. Pode variar de grátis (no nível gratuito da AWS) até um preço bem elevado, dependendo do seu uso. O preço é por tipo de instância, por hora e muda de acordo com a região AWS e se você está comprando suas instâncias sob demanda, no Spot market (mercado mais econômico) ou pré-pago (Instâncias reservadas).
  • Desempenho da rede: para alguns tipos de instâncias, o AWS usa termos gerais como baixo, médio e alto para se referir ao desempenho da rede. Os usuários fizeram benchmarking para fornecer informações sobre o que esses termos podem significar.

Alternativas ao EC2 e Lock-In


  • A execução do EC2 é semelhante à execução de um conjunto de servidores físicos, desde que você não faça escala automática ou configurações de cluster. Se você apenas executa um conjunto de instâncias estáticas, a migração para outro VPS ou provedor de servidor dedicado não deve ser muito difícil.
  • Alternativas ao EC2: as alternativas diretas são o Google Cloud, o Microsoft Azure, o Rackspace, o DigitalOcean e outros provedores de VPS, alguns dos quais oferecem APIs similares para configurar e remover instâncias. (veja comparações aqui.)
  • Você deve usar o Amazon Linux? A AWS incentiva o uso de seu próprio Amazon Linux, que é desenvolvido a partir do Red Hat Enterprise Linux (RHEL) e do CentOS. É usado por muitos, mas outros são mais desconfiados. Faça o que fizer, faça esta decisão com cuidado. É verdade que o Amazon Linux é fortemente testado e melhor suportado no improvável caso de ter problemas mais profundos com sistema operacional e virtualização no EC2. Mas, em geral, muitas empresas estão usando uma distribuição padrão, que não a Amazon Linux, como Ubuntu ou CentOS. Usar uma distribuição Linux padrão significa que você tem um ambiente exatamente replicável se você usar outro provedor de hospedagem em vez da (ou além da) AWS. Também é útil se você deseja testar implantações em máquinas de desenvolvedores locais com a mesma distribuição padrão do Linux (uma prática cada vez mais comum com o Docker). Amazon agora tem um Amazon Linux Docker image, visando auxiliar no desenvolvimento local em um ambiente comparável, (embora este seja novo o suficiente para ser considerado experimental).

Dicas de EC2


  • Região: quando você configurar pela primeira vez, considere quais regiões você quer usar primeiro. Muitas pessoas na América do Norte apenas configuram automaticamente na região us-east-1 (N. Virginia), que é o padrão, mas vale a pena considerar se essa é a melhor opção ao longo do tempo. Você deve avaliar a disponibilidade do serviço (alguns serviços não são disponíveis em todas as regiões), os custos (custos também variam por região de 10 a 30% - geralmente mais baixo em us-leste-1 para fins de comparação) e a conformidade (vários países têm regulamentos diferentes em relação à privacidade de dados, por exemplo).
  • Tipos de instância: as instâncias EC2 podem ser de vários tipos, correspondentes às capacidades da máquina virtual na arquitetura e velocidade do CPU, RAM, tamanhos e tipos de disco (SSD ou magnético) e largura de banda da rede.
    • Selecionar tipos de instância é complexo, pois existem tantos tipos. Além disso, existem diferentes gerações, lançadas ao longo dos anos.
    • Use a lista no ec2instances.info Para rever custos e recursos. A própria lista da Amazon dos tipos de instâncias é difícil de usar, e não lista as características e o preço em conjunto (de propósito?), o que o torna duplamente difícil. Os preços variam muito, então use o ec2instances.info para determinar o conjunto de máquinas que atendem às suas necessidades e ec2price.com para encontrar o tipo mais barato na região em que você está trabalhando. Dependendo do tempo e da região, pode ser muito mais barato alugar uma instância com mais memória ou CPU.
  • Desligue suas instâncias quando elas não estiverem sendo usadas. Para muitas situações, como testes ou implementação de recursos, você não precisará de suas instâncias em 24/7, e você não precisará pagar custos por hora do EC2 quando elas estiverem suspensas. Dado que os custos são calculados com base no uso horário, este é um mecanismo simples para economzar bastante. Isso pode ser alcançado usando Lambda CloudWatch, uma solução de código aberto como Scalr ou o provedor SaaS como GorillaStack. (nota: se você desligar instâncias com uma unidade de disco efêmera, qualquer estado será perdido quando a instância for desligada. Por isso, para aplicações com estado, é mais seguro desligar as instâncias suportadas pelo EBS).
  • Instâncias dedicadas e hosts dedicados são hardwares exclusivos, em vez de instâncias virtuais usuais. Eles são mais caros do que instâncias virtuais, mas podem ser preferíveis por desempenho, conformidade, modelagem financeira ou licenciamento.
  • 32 bit vs 64 bit: algumas instâncias micro, pequenas e médias ainda estão disponíveis para usar com a arquitetura de 32 bits. Você usará muito provavelmente as instâncias EC2 de 64 bits ("amd64") hoje em dia, até pelo desempenho. Portanto, use 64 bits, a menos que você tenha restrições específicas ou outros bons motivos para usar 32 bits.
  • HVM vs PV: existem dois tipos de tecnologia de virtualização usada pela EC2: máquina virtual de hardware (HVM) e paravirtual (PV). Historicamente, PV era o tipo mais comum, mas agora a HVM está se tornando o padrão. Se você quiser usar os tipos de instância mais recentes, você deve usar HVM. Veja a matriz de tipo de instâncias para detalhes.
  • Sistema operacional: para usar o EC2, você precisará escolher um sistema operacional básico. Pode ser o Windows ou o Linux, como o Ubuntu ou o Amazon Linux. Você faz isso com AMIs, que são modelos da Amazon que simplificam a criação de instâncias.
  • Limites: você não pode criar números arbitrários de instâncias. Os limites padrão nos números de instâncias EC2 suportados variam de acordo com o tipo de instância, conforme descrito nesta lista.
  • Use a proteção de encerramento. Para todas as instâncias que são importantes e duradouras (em particular, não fazem parte da auto-escala), habilite a proteção de encerramento. Esta é uma importante linha de defesa contra erros de usuários, como, por exemplo, encerrar acidentalmente muitas instâncias ao invés de apenas uma devido a um erro humano.
  • Gerenciamento de chave SSH:
    • Quando você inicia uma instância, você precisa ter pelo menos uma Par de chaves ssh  para configurar, inicializar, ou seja, permitir-lhe o ssh na primeira vez.
    • Além do bootstrapping, você deve gerenciar as chaves você mesmo nas instâncias, atribuindo chaves individuais a usuários ou serviços individuais, conforme apropriado.
    • Evite reutilizar as chaves de inicialização originais, exceto pelos administradores, ao criar novas instâncias.
    • Evite compartilhar chaves e adicione chaves ssh individuais para usuários individuais.
  • Suporte a GPU: você pode alugar instâncias habilitadas para GPU no EC2 para uso em tarefas de processamento de máquinas ou renderização de gráficos (e até minerar Bitcoins! :) - brincadeira, há opções bem mais baratas pra isso).
    • três gerações de instâncias habilitadas para GPU disponíveis:
      • A série P2 de terceira geração oferece GPUs NVIDIA K80 em configurações de 1, 8 e 16 GPUs visando o aprendizado da máquina e as cargas de trabalho científicas.
      • A série G2 de segunda geração oferece GPUs NVIDIA K520 em configurações de 1 ou 4 GPU visando gráficos e codificação de vídeo.
      • As instâncias CG1 de primeira geração ainda estão disponíveis em algumas regiões em uma única configuração com uma GPU NVIDIA M2050.
    • A AWS oferece uma AMI (do Amazon Linux) com a maioria dos drivers NVIDIA e software auxiliar (CUDA, CUBLAS, CuDNN, TensorFlow) instalados para reduzir a barreira ao uso. Note, no entanto, que isto leva a restrições de customização devido ao Amazon Linux e ao fato de você não ter acesso direto à configuração ou versão de software.
    • Tal como acontece com os tipos de instâncias EC2 mais caros, instâncias específicas podem oferecer economias significativas, e com carga de trabalho GPU quando as interrupções são toleráveis.
  • Todos os tipos de instâncias EC2 atuais podem aproveitar o endereçamento IPv6, desde que sejam lançados em uma sub-rede com um intervalo CIDR alocado em um VPC habilitado para IPv6.

EC2: Problemas e Limitações


  • Nunca use senhas ssh. Apenas não faça isso; é muito inseguro e as consequências de um comprometimento muito severas. Use as chaves em vez disso. Leia aqui e desabilite totalmente o acesso de senhas ssh ao seu servidor ssh, certificando-se de que 'PasswordAuthentication no' esteja no seu arquivo /etc/ssh/sshd_config. Se você tiver cuidado ao gerenciar chaves privadas do ssh em todos os lugares que eles são armazenados, terá uma grande melhoria na segurança em relação à autenticação baseada em senha.
  • Para todos os  tipos de instâncias mais recentes, ao selecionar o AMI para usar, certifique-se de selecionar o HVM AMI, ou simplesmente não funcionará.
  • Quando criando uma instância e usando um novo par de chaves ssh, certifique-se de que as permissões da chave ssh estejam corretas.
  • Às vezes, certas instâncias EC2 podem ser agendadas para aposentadoria pela AWS devido a "degradação detectada do hardware subjacente", caso em que você tem poucas semanas para migrar para uma nova instância
    • Se o seu dispositivo de armazenamento principal da instância for um volume EBS, normalmente você pode parar e, em seguida, iniciar a instância que o move para o hardware do host saudável, dando-lhe controle sobre o tempo deste evento. Note, no entanto, que você perderá qualquer dado da instância (drives efêmeros) se seu tipo de instância tiver volumes locais.
    • O IP público da instância (se tiver um) provavelmente mudará a menos que você esteja usando IPs elásticos. Isso pode ser um problema se outros sistemas dependerem do endereço IP.
  • Periodicamente, você pode achar que seu servidor ou balanceador de carga está recebendo tráfego para (presumivelmente) um servidor EC2 anterior que estava sendo executado no mesmo endereço IP que você é distribuído agora (isso pode não importar, ou pode ser corrigido migrando para outro Nova instância).
  • Se a API EC2 em si é uma dependência crítica da sua infra-estrutura (por exemplo, para a substituição automática do servidor, algoritmos de dimensionamento personalizados, etc.) e você está executando em grande escala ou fazendo muitas chamadas da API EC2, certifique-se de que você entenda quando elas podem falhar (chamadas para isso têm limitações de taxas e os limites não são publicados e sujeitos a alterações),  codifique e teste contra essa possibilidade.
  • Muitos tipos de instâncias EC2 mais recentes são somente EBS. Certifique-se de levar em conta o desempenho e os custos do EBS quando planejar usá-los.
  • As instâncias são de dois tipos: instâncias de desempenho fixo (por exemplo, M3, C3 e R3) e Instâncias de Performance Burstable (Por exemplo, T2). Uma instância T2 recebe créditos de CPU continuamente, cuja taxa depende do tamanho da instância. As instâncias T2 acumulam créditos de CPU quando estão inativas e usam créditos de CPU quando estão ativas. No entanto, uma vez que uma instância fica sem créditos, você notará uma grave degradação no desempenho. Se você precisar de um alto desempenho da CPU para aplicativos como codificação de vídeo, sites de alto volume ou aplicativos HPC, recomenda-se usar instâncias de desempenho fixo.
  • Contas muito novas podem não ser capazes de iniciar alguns tipos de instâncias, como instâncias GPU, devido a um "limite soft" inicialmente imposto de zero. Esse limite pode ser aumentado fazendo uma solicitação de suporte. Veja o limites de serviços da AWS para fazer a solicitação de suporte. Observe que este limite de zero não está atualmente documentado.

Christian Guerreiro

Professor por vocação, blogueiro e servidor público por opção, amante da tecnologia e viciado em informação.


Ensino a distância em Tecnologia da Informação: Virtualização com VMware, Big Data com Hadoop, Certificação ITIL 2011 Foundations e muito mais.


Suporte o Tecnologia que Interessa!

Você acha que as informações compartilhadas aqui são úteis?
Então me ajude a produzir ainda mais e melhores conteúdos!


É muito fácil. Basta divulgar nossos treinamentos pra alguém que conheça!


E se for de Salvador, podemos estruturar um curso presencial para sua empresa!

Eu vou ficar muito grato (e quem fizer os curso também :)!