Magento'yu AWS Ortamında Çalıştırmak


54

Magento, herkesin bildiği gibi, diğer PHP uygulamalarını barındırmaktan hoşlanmaz. Magento’yu 2013’te Amazon Web Servisleri ortamında çalıştırmak ne kadar mümkün?

Magento ile kullanmak için hangi AWS servislerinin sihirli kombinasyonu mantıklı geliyor? Bir "değirmen işletmesi" deposu için varsayılan değerler hangi seviyelerdir? (evet, biliyorum, değirmen mağazaları işletilmiyor)

Hangileri (EBS?) Kaçınılmalıdır?

Haftalarca süren acıyı önlemek için herhangi bir ipucu, püf noktası, uygulama stratejisi

Yanıtlar:


44

Magento’ya 2011’den 2013’e kadar AWS’de ev sahipliği yapıyordum. Geleneksel özel veya paylaşımlı barındırma yerine bulut altyapısını kullanmaktan kazandığınız şeylerin çoğu, AWS’ye özel olmayan ancak daha kolay etkinleştirilebilen DevOps başlığı altında daha alakalı bir şekilde anlatılıyor. kullanımı.

  • Kapasite planlamanızı eksiksiz ve esnek bir şekilde kontrol edin - pazarlama etkinliklerinin önüne geçin, Elastic Beanstalk ile dinamik sunum yapın, düşük hacimli dönemlerde küçültün, birkaç hafta içinde bir siteyi çevirin, yıkın ve atın.
  • Kolayca dev / test / staging ortamları kurun ve bunlar arasındaki değişiklikleri kopyalayın.
  • Yönetici sayfalarınızı ayrı bir ana bilgisayarda barındırın.
  • Oturum yönetimi için DynamoDB'yi ve ek işlemler yapmaksızın önbelleğe almak için ElastiCache'yi kullanın; ElastiCache'in VPC'de şu anda çalışmadığını unutmayın.
  • ELB'leri yük dengeleme için kullanın, ancak isteklerin 60 saniyeden uzun sürmesi durumunda dikkatli olun
  • E-posta göndermek için AmazonSES kullanın (artık düzenli SMTP yoluyla daha da kolay), ancak yine de sıçramaları / şikayetleri izleme için boşluklar var
  • Medya barındırmak için AmazonS3 kullanın ve CDN için Cloudfront kullanın.
  • Zamanında geri yükleme, otomatik yük devretme, otomatik yedeklemeler ve otomatik yükseltmeler içeren RDS ile düşük işlem maliyeti.
  • DNS yönetimi, Route53'te çok kolaydır, ancak genellikle dengeleyicileri yüklemek için alt alan adlarının eşlenmesi kolaylığı için önerilir.
  • Tüm makinelerinizi kendi özel ağlarına yerleştirmek için VPC, daha ayrıntılı bir denetime sahip olmak ve kendi VPN tünellerinize uygun olduğunu düşündüğünüz şekilde erişimi göstermek için.
  • CloudWatch ve SNS ile kolay performans ölçümleri ve uyarı (bellek kullanımı ve disk kullanımı dışında)

Minimal ayak izi, 1 adet ELB, ayrı AZ'lerde 2 adet EC2 web sunucusu, 1 adet çok az RDS, alan için barındırılan Route53 olacaktır. Başlangıçta, oturum yönetimini daha basit tutmak için ELB'deki yapışkan oturumları kullanabilirsiniz, ancak trafiğiniz arttıkça, medyayı bir CDN'ye (S3 ve CloudFront) taşımak ve ayrı ayrı makinelerden oturum açmak isteyeceksiniz.

Bakmadığım ama hala umut vaat ettiğim alanlar: Magento yığınının daha kolay konuşlandırılması için CloudFormation komut dosyaları, DynamoDB aracılığıyla sipariş oluşturma ve daha fazla ödeme işlemi için işçi kuyrukları boşaltılması Son zamanlarda) ve Route53 ile gecikme bazlı yönlendirmeyle çok bölgeli bir varlığın kurulması.

Sanırım bulut konusunda bir nevi evangelistim. AWS'ye özel, c3.large, üretim web sunucuları için iyi bir örnek büyüklüğüdür, ancak her örnek sınıfının en küçüğü ile başlayıp performansı ölçtüm ve uygun gördüğünüz gibi kodu ölçeklendirip veya optimize ettim, bu yüzden herkese sürekli xhgui .


Aslında önermek istiyorum değil veritabanı için RDS kullanarak. Magento'nun ihtiyacı olan sunucunun optimizasyonu üzerinde hiçbir kontrolünüz yok. Magento'nun MySql'in ayarlanması ile ilgili detayları gösteren bir istif ayarında kullandığı bir beyaz sayfa var. Temel olarak yüksek hızda ölçeklendirme yapmayı veya beklemeyi düşünüyorsanız , kendi veritabanı sunucunuzu çalıştırmanız gerekir .
davidalger

3
@davidalger Üzgünüm ama bu korkunç bir tavsiye. Veri tabanı parametre gruplarını ve kullanımlarını okumalısınız. aws.amazon.com/rds/faqs/#34 Ayrıca, tamamen ödeme işlemlerine odaklanmadığınız sürece, veritabanına yapabileceğiniz herhangi bir şeyden çok daha fazla performans kazancı olur, bu durumda tamamen ödeme işlemlerine odaklanmadığınız sürece github.com/magento-hackathon/MongoDB-OrderTransactions
Ralph Tice

3
Kesinlikle RDS kullanırdım. En fazla sistem fonksiyonları yaratma yeteneğini kaybedersiniz, bu onunla ilgili. Yüksek düzeyde optimize edilmiş, yüksek oranda kullanılabilir ve kopyaları birkaç tıklamayla toplayabilirsiniz. Avantajlar, potansiyel sakıncalardan çok daha ağır basar.
Philwinkle

Peki ya EBS (Blok Depolama)? Neden onu da kurulumuna dahil etmedin? Ayrıca, ortam dizinini birden fazla EC2'de senkronize etmenin önerilen yolu nedir?
Gündüz

1
@Dayson İyi bir soru. Magento, oturum önbellekleme ve önbellek yönetimini bellek önbellekleme sistemlerine devrederken bile, oldukça G / Ç'dir. Bu yüzden EBS'yi düşünmek isteyebilirsiniz. Şu anda AWS'de değiliz, ancak Magento ortamımızı / media dizini gibi CMS depolamasıyla aynı sorunu yaşayabileceğiniz High Available yük dengelenmiş bir yığında çalıştırıyoruz. 2 ay önce web sunucularımıza bir NFS monte ettik ve / home / user dizinlerimizi (tüm web verilerinin depolandığı yer) bu montaj noktasına bağladık. Bir kullanılabilirlik POV'sından bu harika. Performans olarak hala bazı tweaks kullanabilirsiniz.
Jaap Haagmans,

30

Angrybirds İnternet mağazası için yaptığımız şey şu:

Magento'da İngilizce sunum yapmayı düşünün 2012.

Meet Magento'da Almanca sunumu # 6.12

Şu anki Almanca "PHP Magazin" ayrıca 6 sayfalık bir makaleye sahiptir (Almanca olarak).

Fabrizio'nun yukarıda sıralanan tüm sunumlarını defalarca okuduktan sonra, bu cevabın gerçekten en iyisi olduğunu düşünüyorum, ancak daha fazla açıklama ve temel fikirlerin sunumlardan çıkarılmasını kullanabileceğini kabul ediyorum. Bu güncellemeyi gönderdiğim zaman 404'deydi).

Sunumlardaki ana kavramlara ekleyeceğim tek şey AWS / rakip teknolojilerindeki modern gelişmelerin, Cloudfront’un CDN performans iyileştirmeleri için gzip’i desteklediği gerçeği gibi ... CloudFlare'nun sunduğu gibi size ücretsiz SSL sonlandırması veriyor mu ? Onların Route 53 DNS’leri de CloudFlares kadar hızlı veya özellik açısından zengin değil, AWS’nin de hepsi CloudFlare’da sunulan benzer bir Web Uygulaması Güvenlik Duvarı veya DDOS korumasına sahip değil ...

Fabrizio'nun orijinal sunumunu geliştirmenin birkaç olası yolu var, fakat her şeyi bıraksam iyi bir danışman olmazdım, cevapladığım her StackExchange yazısında bildiğim gibi olur mu? Ayrıca, en yeni tekliflerden bazıları, kullanılan farklı seçeneklerle AWS'den daha fazla sıkılsam bile, yine de STILL'in mükemmel performans sunacağı orijinal sunumlardaki önerileri büyük ölçüde değiştirecektir.

Anahtar Kavramların Özeti :

  1. Darboğazlarınızı Tanıyın : ve uygun şekilde optimize edin. Yığının her katmanı belirli darboğazlara (bant genişliği, işlemci, veritabanı) sahiptir ve her kattaki darboğazları çözmek, her bir zorluk için optimize edilmiş farklı bir çözüm gerektirir, ancak gerçekte önbellekleme, her seviyede ortak önbellek ...

  2. Her Şeyi Önbelleğe Al: Mümkün olduğu durumlarda AWS sistemlerinden yararlanın (Redis / Memcache türü veri önbelleğe alma için Elasticache, CDN aracılığıyla son kullanıcılara en yakın önbellek görüntüsü, js ve css varlıkları için CDfront) ve ilk varlık seviyesine sunucu örneği yanıtlarını hızlandırmak için Vernik CDN'den gelen önbellek istekleri. Ayrıca, dağıtım sistemlerinizi CDN’lere dağıtmadan ÖNCE sıkıştırıp küçültmeyi de unutmayın.

  3. Otomatik ölçeklendirme Temeldir : Talep, manuel olarak izleyebileceğiniz ve tepki verdiğinizden daha sık ve daha hızlı değişir. Bu değişikliklere gerçek zamanlı olarak adapte olmak, bu göreve en uygun sistemin parçalarını döndürmek için AWS'de bulunan Otomatik Ölçeklendirme Grupları gibi otomasyon araçlarının kullanılmasını gerektirir. AWS bunu CloudFront CDN, Route 53 DNS, Elastik Yük Dengeleyicileri ve S3 Kovaları için şeffaf bir şekilde ele alıyor, EC2 Örnekleri için boyutlandırma ve otomatik ölçeklendirme ve sadece RDS ve Elasticache katmanları için boyutlandırma / ayarlama yaparak halletmeniz gerekiyor.

  4. Bunları etkin bir şekilde bir araya getirmenin tek yolu otomasyondur : bazıları dağıtım zamanında, bazıları dağıtımdan hemen sonra başlatılması gereken birçok birbiriyle ilişkili bileşenle, optimum performans için ayarlanmış bir sistemi yönetmek otomasyon gerektirir. Önbellek temizliği, önbellek ısınması, görüntü işleme vb. İçin dağıtım ve sistem otomasyonunu kullanmak, bu birçok farklı alt sistemi yönetmenin ve onları iyi yağlanmış ve sorunsuz tutmanın tek makul yoludur.

  5. Ancak test otomasyonu olmadan bu mümkün bile değil : Bu hareketli parçalarla bir şey neredeyse her türlü değişikliğe neden olacak. Ve Magento ve AWS'deki gelişmelere ayak uydurmak için değişiklik yapmanız gerekecek. Ve bunlar OFTEN olacak . Bu nedenle, değişim maliyetini minimuma indirmek için, tüm test formlarının hem uygulamalı hem de otomatikleştirilmesi gerekir - ünite testlerinden entegrasyon testine, üretim ortamını taklit eden fiili test yapılandırmalarında başlatılan asıl sitenin Selenyum bazlı fonksiyonel testlerine kadar. Artık tüm dağıtım işlemlerinizi otomatikleştirdiğinize sevindiniz, değil mi?


2
bir demet bağlantı olduğu için downvoting
Ralph Tice

9
@RalphTice Burada azınlıkta olabilirim, ama özellikle fbmc kadar alakalı olduklarında çok sayıda bağlantı iyidir Herkesin içeriğini bir kamuya açık alana / creative-commons'a bir StackExchange cevabını bırakarak koymak istemez.
Alan Storm,

4
@AlanStorm Herkesin reddetmesi gerektiğini kastetmiyorum çünkü bu bir sürü bağlantı, ancak sadece neden reddetmeyi seçtiğim hakkında bir açıklama bıraktı. Bir SE sitesine geldiğimde içeriğe bağlantı vermekten daha çok içerik almayı tercih ederim ve özellikle video ve ingilizce olmayan içerikten kaçınmak için SE kullanıyorum.
Ralph Tice

3
Yalnız bağlantı kötü bir cevap olarak kabul edilir ( sss'e bakınız ) çünkü kendisi tarafından anlamsızdır ve hedef kaynağın gelecekte canlı olacağının garantisi yoktur . Cevabın temel kısımlarını buraya dahil etmek ve referans için bağlantıyı sağlamak tercih edilir.
J0K

2
İlk bağlantı artık var görünmüyor. Muhtemelen bu yerini alabilir: slideshare.net/aoemedia/angrybirds-magento-cloud-deployment
ermannob

4

Biraz daha basit (!) Bir çözüm, diğer VPS'lerde yaptığınız gibi kurulur. Daha fazla bilgi at - Son zamanlarda nedeniyle yerel olmak üzere yeni Sidney DC konsantre ettik ... şimdi birkaç yıldır ücretsiz bir görüntü sunan oldum http://www.greengecko.co.nz/magento_on_amazon_ec2 eğer bununla ilgileniyorum. Neredeyse sıfır ağrı başlıyor - bir tıklamayla oradasınız. Daha fazla ayrıntı için tarayıcınızı bu örneğe yönlendirin. Bu iyi bir başlangıç ​​noktası oluşturacaktır - ancak üzerine inşa edecekseniz /etc/rc.local dosyasına bakın ve değiştirin.

Gerçekleşmesi gereken önemli hususlar, örneklerin oldukça düşük güçte olmasıdır. Açıkçası uygulamada çok fazla para atmak bunu iyileştiriyor, ancak orta derecede küçük bir web mağazasında bile, orta bir örnek yalnızca çok sayıda çekirdek elde etmek için mutlak bir asgari, ve gerçekten de en küçük gerekli.

Ayrıca, Amazon depolama yavaş. Bu nedenle, bellekten alabileceğiniz her şeyi sunmak normalden daha önemlidir: veritabanlarını ayarlamak, bellek destekli önbellekleri, vb.

Sıraladığınızda, sorun değil. > 1 IP adresi istiyorsanız VPC'de çalıştırma zorunluluğu gerçekten can sıkıcıdır (özellikle başladığınızda bunu farketmezseniz!) ve gerçekten karşılaşacağınız tek şey budur.

'Anında' platformu genişletmek kolaydır - sonunda tek tıkanıklık PHP'nin kullanabileceği işlem gücü miktarıdır (verimsiz kod bir yana!) Ve paralel olarak birden fazla 'motor' çalıştırmak muhtemelen en basit seçenektir; gerekli.

Keyfini çıkarın!

Steve


VPC şimdi yeni AWS hesapları için varsayılan olarak. aws.typepad.com/aws/2013/03/…
Ralph Tice

4

RDS Multi AZ, İki NGINX Optimize edilmiş Sunucu, 2 Vernik Sunucusu + ELB ve aynı Vernik Sunucusu (Varnish'ten farklı port) SSL Nginx kullanıyoruz. Elasticache kullanıyoruz ve yakında Magento oturum yönetimi için DynamoDB'yi entegre ediyoruz. Biz de S3 ve Cloudfront kullanıyoruz.

İngiltere merkezli bir hosting firması ile ayda 700 sterlinlik bir sunucumuz olan ilginç bir sohbetim vardı. Tek yaptıkları, kayrak Amazon AWS. Magento geri şeritleme, modülleri devre dışı bırakma, kategori sayma işlevi vb. Dahil tüm alanlarda doğru kurulum ve optimizasyonla (NGINX ve Varnish Sunucularını, dengeyi yükleyen Veritabanı sunucusunun önüne oturtmak için ince ayar yaptık).

Şu anda ev, kategori, ürün ve CMS sayfalarında (cila sayfalarında) saniyede 2400 - 3000 + isabet alabiliriz. Vernik olmayan sayfalarda, mağazaya bağlı olarak saniyede 400 - 500 istek işleyebilir. Şu anda Reads ile RDS Multi kullanıyoruz.

Ayrıca Magento Yöneticisi'ni, düğümleri ve yönetici trafiğini çalıştırmak için kendi Düğümüne koyduk. http://administraton.mymagestore.com/admin

Asla geriye bakmadık. İngiltere'nin en iyilerinden birini kullanıyorduk, hepsi pahalı olacaktı.


1
Dikkatli olun - yönetici oturumları, boyutları nedeniyle DynamoDB ile çalışmaz. Dikkatlice test ederdim - DynamoDB maksimum ürün büyüklüğünü 64KB'den 256KB'ye çıkardı, ancak bu hala yeterince büyük olmayabilir. Yalnızca bir yönetici düğümü ve birçok ön uç düğümü bulunduğundan ve böylece yönetici vs web ön uç için ayrı local.xml dosyasını kullandığım için dosya oturumları kullanarak bu sorunu çözdüm.
Ralph Tice,

2

Magento'nuzun çalışması için neredeyse tüm temel AWS Servislerini kullanabilirsiniz. En basit senaryo, güvenlik yapılandırması için EC2'yi Elastic IP ve AWS VPC ile kullanmak olacaktır.

Akıllı yol 2 sunucu dağıtımına sahip olmaktır: Web Sunucusu + Veritabanı. Web sunucusu, Magento + Nginx + PHP + arka uç Önbelleğe Alma (Redis veya APC iyi bir seçenek) ve aynı alt ağdaki ayrı bir MySQL sunucusunu içerir. Bu sunucular, özel ağdaki özel IP ile birbirlerine görülebilir (VPC ile yapılandırılmıştır). Nginx, statik dosyaları süper hızlı bir şekilde sunabileceği anda seçilen web sunucusudur.

Veritabanı sunucusu, herhangi bir erişimden gizlenmelidir. Web sunucusu 80 ve 443 portlarında görünecektir. Elastik IP'yi web sunucusuna tahsis etmek mümkündür. Daha sonra DNS (örneğin AWS Rota 53 üzerinden) veya AWS yük dengelemeyi yapılandırmak faydalı olacaktır.

Bahsettiğiniz gibi bu tür bir yapılandırma yapmak için bir acı olabilir. Böylece, kurulumu Deploy4Me ile hızlandırabilirsiniz. Bahsedilen tüm güvenliği, VM'leri ve ağı birkaç dakika içinde yapılandıracak.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.