Estuve alojando Magento en AWS en 2011 hasta 2013. Muchas de las cosas que obtienes al usar la infraestructura de la nube en lugar del alojamiento tradicional dedicado o compartido se describen de manera más relevante en el tema de DevOps, que no son exclusivos de AWS pero se habilitan más fácilmente a través de su uso
- Control completo y flexible de su planificación de capacidad: aumente la escala antes de los eventos de marketing, habilite el aprovisionamiento dinámico a través de Elastic Beanstalk, reduzca la escala durante períodos de bajo volumen, levante un sitio en un par de semanas, destrúyalo y deséchelo.
- Configure fácilmente entornos de desarrollo / prueba / preparación y reproduzca los cambios entre ellos.
- Aloje sus páginas de administrador en un host separado.
- Utilice DynamoDB para la gestión de sesiones y ElastiCache para la memoria caché sin incurrir en gastos generales de operaciones adicionales, pero tenga cuidado con que ElastiCache no funcione actualmente en VPC.
- use los ELB para el equilibrio de carga, pero tenga cuidado si las solicitudes tardan más de 60 segundos, se terminarán sin gracia
- Use AmazonSES para enviar correos electrónicos (ahora aún más fácil a través de SMTP regular), aunque todavía existen lagunas en las herramientas para rastrear rebotes / quejas
- Use AmazonS3 para alojar medios y Cloudfront para CDN.
- Costo de operaciones reducido para la actividad de la base de datos a través de RDS, que cuenta con restauración en un punto en el tiempo, conmutación por error automática, copias de seguridad automáticas y actualizaciones automáticas
- La administración de DNS es muy fácil en Route53, pero generalmente se recomienda para facilitar la asignación de subdominios a equilibradores de carga.
- VPC para poner todas sus máquinas en su propia red privada para tener un control más granular y exponer el acceso como mejor le parezca a través de sus propios túneles VPN.
- Fácil medición y alertas de rendimiento (aparte del uso de memoria y uso de disco) a través de CloudWatch y SNS
La huella mínima será de 1 ELB, 2 servidores web EC2 en AZ separadas, 1 RDS multi-az, zona alojada Route53 para el dominio. Inicialmente, puede usar sesiones fijas en el ELB para simplificar la administración de sesiones, pero a medida que aumente su tráfico, querrá mover los medios a un CDN (S3 y CloudFront) y sesiones fuera de las máquinas individuales.
Áreas que no he visto pero que aún son prometedoras: scripts de CloudFormation para una implementación más fácil de una pila de Magento, descarga de la creación de pedidos a través de DynamoDB y colas de trabajo para un mayor rendimiento de pago (alguien ya ha comenzado un proyecto para hacerlo a través de MongoDB en uno de los hackathons recientemente), y configurar una presencia de varias regiones a través de enrutamiento basado en latencia con Route53.
Supongo que soy una especie de evangelista para la nube. Específico para AWS, c3.large es un tamaño de instancia decente para los servidores web de producción, pero comenzaría con el más pequeño de cada clase de instancia y mediría el rendimiento y escalaría u optimizaría el código como mejor le parezca, por lo que remito a todos xhgui constantemente.
Así es como lo hacemos para la tienda web de Angrybirds:
Presentación en inglés en Magento Imagine 2012.
Presentación en alemán en Meet Magento # 6.12
El actual "PHP Magazin" alemán también tiene un artículo de 6 páginas (en alemán) con algunos detalles
Habiendo leído todas las presentaciones de Fabrizio enlazadas anteriormente muchas veces, creo que esta respuesta es realmente la mejor, aunque estoy de acuerdo en que podría usar más explicaciones y una extracción de las ideas clave de las presentaciones (especialmente porque el primer enlace original ya había sido 404'd cuando publiqué esta actualización).
Lo único que agregaría a los conceptos clave en las presentaciones es que los avances modernos en las tecnologías de AWS / competidor sugerirían algunos ajustes ... como el hecho de que Cloudfront admite gzip para mejoras de rendimiento de CDN ahora, aunque no es tan rápido como tampoco ¿te da una terminación SSL gratuita como las ofertas de CloudFlare ? Su Route 53 DNS tampoco es tan rápido o rico en funciones como CloudFlares, ni AWS tiene un firewall de aplicación web o protección DDOS comparable, todo lo cual está incluido en las ofertas de CloudFlare ...
Hay algunas otras formas posibles de mejorar la presentación original de Fabrizio, pero no sería un buen consultor si regalara TODO lo que sabía en cada publicación de StackExchange que respondí, ¿o sí? Además, algunas de las ofertas más recientes cambiarían sustancialmente las sugerencias en las presentaciones originales, todas las cuales TODAVÍA ofrecen un gran rendimiento, incluso si se pudiera extraer más de AWS con las diferentes opciones utilizadas.
Resumen de conceptos clave :
Conozca sus cuellos de botella íntimamente : y optimice adecuadamente. Cada nivel de la pila tiene cuellos de botella específicos (ancho de banda, CPU, base de datos) y resolver los cuellos de botella en cada nivel requiere una solución diferente optimizada para cada desafío específico, aunque el almacenamiento en caché es el elemento común en cada nivel, lo que lleva a ...
Cache All The Things : aproveche los sistemas de AWS cuando sea posible (Elasticache para el almacenamiento en caché de datos de tipo Redis / Memcache, Cloudfront para almacenar en caché los activos de imagen, js y css más cercanos a los usuarios finales a través de CDN) y Varnish para acelerar las respuestas de instancia del servidor al nivel de activo inicial almacenamiento en caché de solicitudes de CDN. Además, asegúrese de comprimir y mininificar en sus sistemas de implementación ANTES de implementar en CDN
El autoescalado es esencial : la demanda cambia con frecuencia y más rápido de lo que puede monitorear y reaccionar manualmente. Adaptarse a estos cambios en tiempo real requiere el uso de herramientas de automatización disponibles en AWS como Auto-Scaling Groups para hacer girar las piezas del sistema que mejor se adaptan a esta tarea. AWS maneja esto de forma transparente para CloudFront CDN, Route 53 DNS, Elastic Load Balancers y S3 Buckets, debe manejarlo dimensionando y autoescalando para las instancias EC2, y simplemente dimensionando / ajustando para los niveles RDS y Elasticache
La automatización es la única forma de vincular todo esto de manera efectiva : con tantos componentes interrelacionados, algunos de los cuales deben inicializarse en el momento de la implementación, algunos justo después de la implementación, la administración de un sistema ajustado para un rendimiento óptimo requiere automatización. Aprovechar la implementación y la automatización de sistemas para la limpieza de caché, el calentamiento de caché, el procesamiento de imágenes, etc. es la única forma razonable de administrar estos subsistemas diferentes y mantenerlos bien engrasados y libres de problemas.
Pero realmente incluso eso no es posible sin la automatización de pruebas : con tantas piezas móviles, algo se romperá con casi cualquier cambio. Y tendrá que cambiar para mantenerse al día con los desarrollos en Magento y AWS. Y eso sucederá A MENUDO . Por lo tanto, para minimizar el costo del cambio, todas las formas de prueba deben implementarse y automatizarse completamente, desde pruebas unitarias hasta pruebas de integración y pruebas funcionales basadas en selenio del sitio real lanzado en configuraciones de prueba reales que imitan el entorno de producción. Ahora está REALMENTE contento de haber automatizado todos sus procesos de implementación, ¿verdad?
fuente
Una solución un poco más simple (!) Es simplemente instalar como lo haría en cualquier otro VPS. He estado ofreciendo una imagen gratis durante algunos años ... últimamente me he concentrado en el nuevo Sydney DC debido a que es local; más detalles en http://www.greengecko.co.nz/magento_on_amazon_ec2 si usted Estás interesado en eso. Prácticamente cero dolor al comenzar: un clic y ya está. Apunte su navegador a la instancia para obtener más detalles. Esto será un buen punto de partida, pero mire y modifique /etc/rc.local si va a construir sobre él.
Lo importante a tener en cuenta es que las instancias tienen poca potencia. Obviamente, arrojar mucho dinero a la aplicación mejora esto, pero incluso para una tienda web moderadamente pequeña, una instancia mediana es un mínimo absoluto, solo para obtener múltiples núcleos, y realmente grande es el más pequeño necesario.
Además, el almacenamiento de Amazon es lento. Debido a eso, es aún más importante de lo habitual entregar todo lo que sea posible desde la memoria: es imprescindible ajustar bases de datos, cachés con respaldo de memoria, etc.
Una vez que lo arreglas, funciona bien. El requisito de ejecutar en una VPC si quieres> 1 dirección IP es realmente molesto (¡especialmente si no te das cuenta de esto cuando comienzas!), y realmente el único problema que encontrarás.
Es simple expandir la plataforma 'sobre la marcha': eventualmente, el único cuello de botella se convierte en la cantidad de potencia de procesamiento disponible para PHP (¡aparte el código ineficiente!), Y ejecutar múltiples 'motores' en paralelo es probablemente la opción más simple: poner extras en línea cuando necesario.
¡Disfrutar!
Steve
fuente
Estamos ejecutando RDS Multi AZ, dos servidores optimizados NGINX, 2 servidores de barniz + ELB y en los mismos servidores de barniz (puerto diferente al barniz) SSL Nginx. Usamos Elasticache e integramos pronto DynamoDB para la gestión de sesiones de Magento. Usamos S3 y Cloudfront también.
Tuve una conversación interesante con una empresa de alojamiento con sede en el Reino Unido con la que tenemos un servidor de £ 700 al mes. Todo lo que hacen es programar Amazon AWS. Con la configuración y optimización correctas en todas las áreas, incluyendo la eliminación de Magento, la desactivación de los módulos, la función de recuento de categorías, etc., etc.
Actualmente podemos obtener entre 2400 y 3000+ visitas por segundo en las páginas de inicio, categoría, producto y CMS (páginas de barniz). Páginas sin barniz, podemos procesar entre 400 y 500 solicitudes por segundo dependiendo de la tienda. Ahora estamos usando RDS Multi con lecturas.
También ponemos Magento Admin en su propio nodo para ejecutar crons y tráfico de administrador. http://administraton.mymagestore.com/admin
Nunca hemos mirado hacia atrás. Estábamos utilizando uno de los mejores anfitriones del Reino Unido, ya sean anfitriones enormemente caros.
fuente
Puede utilizar casi todos los servicios básicos de AWS para que su magento funcione. La situación más sencilla sería utilizar EC2 con Elastic IP y AWS VPC para la configuración de seguridad.
La forma inteligente es tener una implementación de 2 servidores: servidor web + base de datos. El servidor web incluye Magento + Nginx + PHP + back-end Caching (Redis o APC es una buena opción) y un servidor MySQL separado en la misma subred. Estos servidores pueden ser visibles entre sí a través de IP privada en la red privada (configurada a través de VPC). Nginx es el servidor web elegido tan pronto como puede entregar archivos estáticos súper rápido.
El servidor de la base de datos debe estar oculto de cualquier acceso. El servidor web estará visible en los puertos 80 y 443. Es posible asignar Elastic IP al servidor web. Posteriormente, será útil configurar DNS (por ejemplo, a través de AWS Route 53) o el equilibrio de carga de AWS.
Como mencionó, puede ser una molestia hacer tal configuración. Por lo tanto, puede acelerar la configuración a través de Deploy4Me. Configurará toda la seguridad, las máquinas virtuales y las redes mencionadas en minutos.
fuente