Como posso reduzir as instâncias do AWS EC2 e RDS?

2

Eu tenho usado o AWS para uma webapp simples por algum tempo. Percebi que os custos são altos demais para o uso do aplicativo:

  • EC2 t2.micro : $ 28 / mês
  • LoadBalancer-hour (or partial hour) : $ 37
  • RDS db.m1.small instance hour (or partial hour) running MySQL : $ 50

$ 100 + / mo todos para um site com 5-10 usuários por dia.

Como posso reduzir minhas instâncias EC2 e RDS existentes e remover ou reduzir as necessidades de balanceamento de carga sem refazer o trabalho de configurar tudo isso?

Basicamente, eu preciso realizar estas coisas:

  • Servir meu aplicativo estático de front-end (no S3 atualmente) por HTTPS (atualmente usando o Cloudfront para fazer isso)
  • Sirva minha API de back-end (no ElasticBeanstalk atualmente) por HTTPS (foi-me dito que preciso de balanceamento de carga para isso)
  • Hospedar um banco de dados (atualmente usando o AWS RDS com o ElasticBeanstalk)
  • Atualmente, não há muitos usuários, por isso preciso de hospedagem de APIs muito mais barata do que US $ 80,00 por mês para o RDS e o EC2. Precisa que esses serviços sejam mais de US $ 30 no total / mês. Eu não vejo a necessidade de balanceamento de carga, mas como eu mencionei, eu pensei que precisava disso para https?
por Growler 11.04.2017 / 09:10

3 respostas

2

Você não precisa de ELB ou RDS. Note que o ELB fornece alguma segurança, protegendo contra alguns ataques de camada 4 e 7. Você pode optar por usar CloudFlare (gratuito) ou CloudFront (barato) para substituir o ELB, ou você pode ficar sem. É uma segurança barata e descarrega o trabalho do seu servidor.

Eu corro Nginx, PHP 5.6 e MySQL em um t2.nano. Nas últimas 24 horas, tive 1500 usuários e 15.000 solicitações para cerca de 15 sites. Alguns recursos estáticos foram armazenados em cache pelo CDN, mas todas as páginas atingiram o servidor. O servidor usa cerca de 2% da CPU de acordo com o CloudWatch, a média raramente sobe mais do que isso em um período de 5 minutos.

Eu tenho um tutorial sobre como Eu configurei tudo isso.

As principais coisas que fiz foram:

  • Use o cache da página Nginx para usuários anônimos
  • Desativar o esquema de desempenho do MySQL (que está no final do meu artigo de migração )
  • Adicione 512 MB de espaço de troca (não use muito disso).
  • Vamos criptografar para https usando acmetool

Migração

A melhor maneira de migrar o MySQL é usando o mysqldump. Configure o MySQL no seu servidor e configure-o para pouca RAM, adicione um arquivo de paginação, despeje o banco de dados do RDS em um arquivo em seu servidor e, em seguida, carregue o banco de dados no seu servidor. Você provavelmente precisará definir usuários e permissões novamente. Faça um instantâneo manual final do seu banco de dados RDS e desligue o RDS. Em alguns meses, volte e exclua seu instantâneo do RDS, se tudo estiver bem.

Para alterar o tamanho da sua instância do EC2, pare-o, clique com o botão direito do mouse e altere o tamanho da instância e, em seguida, inicie-o novamente. Demora um ou dois minutos. Você pode fazer isso por meio da API, se quiser.

Respostas a perguntas

HTTPS : "parece que para ter https com a AWS, preciso de balanceadores de carga para minhas instâncias do EC2"

Existem muitas maneiras de adicionar https aos servidores do EC2.

  1. Usar um ELB com certificados da Amazon é fácil.
  2. Solicite um certificado de uma autoridade de certificação (há muitos) e configure seu servidor da Web para usá-lo. Eu tenho um tutorial sobre como fazer isso com livre vamos criptografar certificados e nginx aqui .
  3. Use CloudFlare , que pode fazer proxy de seu servidor http via https. Você também pode usar o CloudFront para proxy https voltar para http . Não tenho dúvidas de que existem muitas outras maneiras

Observe que, se você tiver seu domínio configurado para rotear o tráfego para um ELB, precisará alterar um pouco as coisas. A maneira mais fácil é obter um endereço IP elástico para sua instância do EC2 e colocar esse IP elástico na configuração do DNS, como um registro A.

Tamanho da instância : não posso dar uma resposta concreta aqui, pois não temos informações suficientes. Mudar de t2.micro para t2.nano deve ser fácil, já que são a mesma tecnologia, apenas menor.

Se você estava mudando de outro tipo de instância, eu diria que verifique sua AMI, talvez seja uma antiga AMI de PV em vez de uma nova AMI de HVM. Se você editar sua pergunta para fornecer mais informações, posso pensar em outra.

    
por 11.04.2017 / 21:18
1

Algumas opções a considerar -

  1. Fazendo downgrade de sua instância do EC2 para t2.nano
  2. Como seu aplicativo não tem tráfego / carga, você pode simplesmente parar de usar ELB
  3. Acho que sua instância de db.m1.small do RDS está configurada com a opção multi-az ativado, você pode modificar o mesmo e desabilitar a opção multi-az reduzirá o custo da sua instância do RDS para metade do seu custo atual.

Se você ainda quiser reduzir custos, considere instâncias spot / a> ou instâncias reservadas para EC2 e RDS, se isso for adequado às suas necessidades.

    
por 11.04.2017 / 12:44
1

Você pode optar por reduzir o tamanho da sua instância do EC2 para t2.nano , já que não está esperando muito tráfego.

Você também pode parar de usar seu balanceador de carga. Eu não acho que serve a qualquer propósito aqui em termos de regular o tráfego de entrada.

Você também pode reduzir seu RDS para db.t2.micro . Eu gasto cerca de US $ 20 em um RDS com esse tamanho. Também não use o Multi-AZ.

Embora seja necessário mais trabalho, você também pode optar por executar um t2.micro EC2 e configurar o MySQL lá e parar de usar o RDS completamente.

    
por 11.04.2017 / 16:55