mi experiencia con amazon aws ec2 y s3
DESCRIPTION
Versión en español de la charla que di en madrid_devops. Contando mis experiencias con AWSTRANSCRIPT
Mi experiencia con Amazon AWS EC2 y S3
Alejandro E Brito Monedero@ae_bm
Agenda– Hablemos de AWS
– AWS + Yo
– Extras
– Un poco de ec2-command-line
– Preguntas
– Referencias y créditos
AWS es ...
● Proveedor IaaS (A.K.A la nube)● Modelo pay as you go● Virtualización con Xen● Otra forma de “pensar” la arquitectura de
aplicaciones● Gestión de recursos de infraestructura a
través de un API
Quienes lo usan
Fin de la parte de marketing
Conceptos importantes● Región
– Zona geográfica donde están ubicados un conjunto de AZs
– Cada región es independiente de las otras
● Availability Zone (AZ)– Es un datacenter
– Varios AZs conforman una región
– Los AZs de una región están interconectados por enlaces de baja latencia
Conceptos importantes● Amazon Machine Image (AMI) ● Amazon Elastic Compute Cloud (EC2)
– Servicio Web que ofrece capacidad de computo
● Amazon Simple Storage Service S3– Almacén de datos no estructurados con alta
disponibilidad y durabilidad
● Amazon Elastic Block Store (EBS)– Volúmenes de almacenamiento persistentes
para usar con instancias EC2
Instancias EC2● Máquinas virtuales
– Compartes la máquina física con otras instancias
– No se puede controlar en que máquina física está la instancia (ciertas condiciones aplican)
– No te encariñes a la instancia, que sea 'cloud' no lo hace infalible
Instancias EC2● 2 tipos de imágenes (AMI):
– Instance store● Al principio era el único tipo de instancia● Imagen de tamaño limitado y guardada en S3● Actualizar el AMI es un pain in the 4$$ ● Se pierde cualquier cambio no este
almacenado en un volumen EBS● Se puede migrar la imagen entre regiones (^_^)● Si la imagen es muy grande puede tardar en
iniciar
Instancias EC2● 2 tipos de imágenes (AMI):
– EBS-backed● Se puede detener / iniciar la instancia
– No olvidar lo que pasa con los discos efímeros● Se puede cambiar el tipo de instancia
– Escalado vertical● La imagen es un snapshot del volumen raíz
EBS en S3● No se puede migrar la imagen entre regiones
Instancias EC2 - Tipos de almacenamiento● Unidades de disco efímeras
– Disco de la máquina física
– El mejor I/O que se puede tener
– Si se apaga / bloquea / detiene la instancia dile adiós a tus datos (;_;)
● EBS (discos persistentes)
– SAN
– Más lentos que los discos efímeros
– RAID 1
– Snapshots incrementales guardados en S3 (^_^)
Cosas que hice● Disclaimer: Todo esto es mejorable, no es 'the
netflix way' (-_-)– Sólo probando / jugando se hace experiencia
● Economía de guerra– Misión hacer todo lo más barato posible
● Migración de un hosting dedicado a AWS– DNS con un TTL de 300 por si la cosa no iba
bien
Cosas que hice● Cada máquina frontend tenia una Elastic IP
– No tocas los DNS
– Ahora también existe Amazon Route 53● Para enviar correo usaba gmail como smarthost
– No puedes cambiar los registros PTR de Amazon
– Ahora hay Amazon SES● AMIs del tipo Instance Store por cada rol
– Ahora con instancias tipo EBS + CloudFormation + User Data Scripts + devops magic debería ser más flexible
Cosas que hice● Firewall
– Usas los Security groups
– Ahora los security groups se pueden administrar usando el portal WEB
– Una IP externa autorizada para hacer SSH
– Recomendado por los expertos● Sólo permitir ssh desde un security group
especial – Asociado a una instancia iniciada bajo demanda
Cosas que hice● Backups
– Un volumen EBS en donde se hacían respaldos incrementales diarios
● rsync + hard links magic
– Snapshots a S3 del volumen EBS 'respaldo'
– Pude omitir este salto intermedio, pero siempre pienso en la consistencia de los datos y eso causa insomnio (;_;)
– xfs_freeze, db flush dmsetup, etc, son amigos
Cosas que hice● Monitoring
– Munin
– Zabbix
– Puedes usar CloudWatch para empezar
– Who watches the watchmen?● “Free uptime monitoring”
● Deploy en 1 AZ– Shame on me (-_-)
– No comments
– Se deberían hacer deploys multi AZ (Hasta donde lleguen los $$)
Cosas que hice● El almacenamiento (FUN part)
– LVM con EBSs como PVs
– 1 LV en 1 VG en 1 EBS
– Aumentaba de tamaño las particiones con una mezcla de vudú, vgextend, pvmove, etc.
– Seguro sería muy lento y I/O unfriendly intentarlo con EBSs muy grandes
Cosas que hice● El almacenamiento (FUN part)
– ¿Cómo mejorarlo? 'brainstorming' (en especial con BBDD)
● Pensando en una mezcla de RAID, LVM, XFS o afines si tuviera muchos discos
● ¿Se pueden hacer snapshots S3 de varios volúmenes EBS en el mismo instante de tiempo?
● Usar glusterfs o afines● Hacer los respaldos en nodos secundarios
– Si tu app maneja el concepto de S3 te ahorrarías muchos de estos 'hacks'
Cosas nuevas de Amazon AWS● DNS Route 53● Cloudfront como CDN● Amazon SES● ELB para hacer balanceo de carga (¿Usarán
HAProxy?) (^_^)● Métricas con Cloudwatch● Escalado horizontal automático● SQS● DynamoDB
Cosas nuevas de Amazon AWS● Identity and Access Management (IAM)
– Varios perfiles de usuarios con distintos permisos
– Permite delegar, delegar, ... delegar
– Más tiempo libre (^_^)● Usar spot instances para tener más instancias
workers a precios de solidarios
● BBDD Oracle, MySQL, MS-SQL gestionadas por Amazon
● Etc (sacan cosas nuevas a cada rato)
● Algo divertido: buscar 'Amazon Mechanical Turk'
Observaciones● Para tener una app en AWS y que aproveche
la 'cloud'– Necesitas a los developers, developers,
developers, developers ...
– Los consejos de siempre● Ser 'fault tolerant'● Diseñar / hacer aplicaciones lo más 'stateless'
posible● Etc
● El performance de red y EBS en AWS es variable
Observaciones● El HW físico aún existe
– A veces Amazon te informara que tiene que hacer mantenimiento en donde esta tu VM
– Otras veces el host físico hace que tu VM no funcione bien.
● Solución: inicia una nueva instancia y termina la que esta fallando
● Con AWS lo que obtienes es una infraestructura dinámica y flexible, cuando no puedes montar tu propia 'cloud'
Lo escuche y lo olvide. Lo vi y lo entendí. Lo hice y lo aprendí
Confucio
Imágenes
– openclipart.org/detail/2229/cloud-&-rainbow-by-gmcglinn
– www.re-cycledair.com/wp-content/uploads/2012/04/heroku-Logo-1.jpg
– www.instantpulp.com
– www.lomejordelface.com/wp-content/uploads/2011/09/piictu.jpg
– www.urbecom.com/blog/wp-content/uploads/2012/02/Logo-de-Amazon.-q.jpg
Créditos
Imágenes
– wuaki.tv
– www.elandroidelibre.com/wp-content/uploads/2012/03/Instagram-Logo.jpg
– www.appsmashups.com/wp-content/uploads/2012/01/netflix.jpg
– www.flickr.com/photos/mcquinn/2302823476/sizes/m/in/photostream/
– www.marketingdirecto.com/wp-content/uploads/2012/02/pinterest12.jpg
Créditos
Enlaces de interés
– alestic.com/
– https://github.com/boto/boto
– docs.amazonwebservices.com/general/latest/gr/GetTheTools.html
– aws.amazon.com/documentation/
– aws.amazon.com/articles/
– aws.amazon.com/resources/webinars/
Referencias
Enlaces de interés
– aws.amazon.com/whitepapers/
– aws.amazon.com/architecture/
– reinvent.awsevents.com/
– docs.amazonwebservices.com/AWSEC2/latest/UserGuide/FAQ_Regions_Availability_Zones.html
– https://forums.aws.amazon.com/thread.jspa?threadID=22830
Referencias
Un estudiante pregunta:- ¿Qué es lo más valioso del mundo?
El maestro respondió:- La cabeza de un gato muerto.
El estudiante sorprendido pregunta:-¿Por qué es la cabeza de un gato muerto la cosa
más valiosa del mundo?
El maestro respondió:- Porque nadie puede ponerle precio.