EC2 Örneği'nde ölüm kucaklama nasıl önlenir?


9

App store'da bir iOS uygulamam var ve son zamanlarda EC2'de barındırılan açılış sayfama büyük bir trafik dalgası aldım ve sayfanın yanıt vermemesine neden oldum, neyse ki örneği yeniden başlatarak ve t2.medium.

Şimdi aynı ölümü tekrar önlemek için bir teknoloji uygulamak için birini işe almak istiyorum. Deneyimlerim sadece temel devopsileri anlamama izin veriyor, ancak AWS'deki yük dengeleyici için yeterli değil, örneğim için uygun bir uygulamanın ne olduğunu bilmek istiyorum.

Açılış sayfam ve iOS uygulama arka ucum aynı örnekte barındırılıyor.


1
Açılış sayfanız statik mi?
Michael - sqlbot

Yanıtlar:


8

Çok daha fazla bilgi olmadan bu sıralama için hızlı bir şey istiyorsanız elastik beanstalk tavsiye ederim. Yük dengeleyici yapılandırmasını ve örnek ölçeklendirmeyi sizin için halledecek başka bir AWS uygulamasıdır.

Yük dengeleyicisinin ve örneklerin üstünde ekstra bir maliyet yoktur, bu nedenle t2 tipi örnekleri kullanmaya devam edebilirsiniz, ancak yardımcı olmak istediğiniz kadar elastik fasulye suyunun ölçeklenmesine izin verin.

Otomatik ölçeklendirme anlık değildir ve spiking trafiği zamanlarında, ani bir artışla başa çıkabilmek için normalde kısa bir süre gerekir, ancak örnek boyutunu manuel olarak ölçeklemekten çok daha iyi olacaktır ve kavramaları elde etmek gerçekten çok kolay olacaktır ile.


1

Yukarıda belirtildiği gibi otomatik ölçeklendirmeyi, belirli eşikler artmaya başladığında otomatik ölçekleme işlemini başlatmak için bazı CloudWatch alarmlarının eklenmesiyle tavsiye ederim, zaten çoktan gitmediğinde değil.

Örneğin; CloudWatch'u, CPU 30 saniye veya daha uzun bir süre boyunca% 50 veya daha yüksek olduğunda sunucunuzu izleyecek şekilde yapılandırın, otomatik ölçeklendirme işlemini başlatın.

Bu tamamen hatasız olmayabilir, ancak bazı çevrimiçi kılavuzlar aracılığıyla yapılması kolaydır ve hepsi GUI üzerinden yapılandırılabilir.

Ayrıca, açılış sayfanız statikse neden bunu bir ücretsiz t2.micro sürümünde barındırmıyor ve uygulamanız için başka bir t2.micro ücretsiz katmanı kullanmıyorsunuz?


Otomatik ölçeklendirme, ani trafik artışları sırasında bütünsel bir cevap değildir. Otomatik ölçeklendirme algılama penceresi 1-5 dakika arasında bir yerde, provizyonunuza bağlı olarak bu da biraz zaman alabilir. Genel olarak doğru cevap, örnekleri sıcak çalıştırmaktır, yani: algılanan trafik seviyenizin üzerinde olması ve otomatik ölçeklendirmenin bu marjı korumasına izin verir.
Matt O.

1

Biraz yardım arıyorsanız bu konuda size yardımcı olmak isterim. Sayfanıza bağlı olarak, ec2'ye ihtiyacınız olmayabilir. Örneğin, statik veya JavaScript bir şey sunuyorsanız, s3'ten bulut tabanlı bir dağıtımla sunulabilir. Ya da kesinlikle gerekirse otomatik ölçeklendirme grubu kullanabiliriz.


1

Trafik dalgalanmalarıyla başa çıkmanın iki genel stratejisi vardır: kapasiteyi artırmak ve maliyeti azaltmak.

Kapasitenin artırılması, herkese açık bulutların ilk kullanıma sunulmasıyla çok heyecanlanan otomatik ölçeklendirme anlamına gelir. En temel anlamında, bu yüke göre sizin için daha fazla web sunucusu başlatır ve bunları bir yük dengeleyicisine ekler, ancak yönetilmesi gereken bir acı olabileceğinden, Elastik Beanstalk gibi daha fazla otomajik çözümler de vardır.

Otomatik kapasite genişletme ile ilgili sorun, aynı zamanda otomatik fatura genişletme - 10x normal trafik, 10x sunucu, 10x para ödemeniz gerektiği anlamına gelir. Bu nedenle, akılda tutulması yararlı bir strateji olsa da, her zaman ne kadar hile yapabileceğinizi görerek başlamanız gerektiğini düşünüyorum.

Hile demek istediğim, önbellek, çoğu zaman kullanıcılara biraz güncel olmayan veriler verebileceğiniz ve fark etmeyecekleri fikrine dayanan ve bu da size büyük miktarda zaman kazandırabilecek. Güncelleştirilmesinin beş saniye sürdüğüne karar verdiğiniz bir sayfaya sahip olduğunuzu ve 20 talep / sn aldığını düşünün. Önbelleğe alma olmadan, bu hesaplamayı dakikada 1200 kez çalıştırırken, önbelleğe alma ile sadece 12 olur. Bunun nasıl muazzam bir fark yaratabileceğini görebilirsiniz.

Elbette birçok önbellekleme türü vardır ve başarılı bir web sitesi birkaçını kullanır. Ancak kullanım durumunuz için iki oldukça iyi ve kolay seçenek var.

Birincisi, siteyi tamamen statik hale getirmektir. Bu, bunu yapabileceğinizi varsayar, ancak eğer yapabilirseniz, Nginx'in doğrudan html'yi sunmasını sağlarsınız ve ter olmadan tonlarca istek sunabilir .

Bir düzeyde dinamikliğe ihtiyacınız varsa, tam sayfa önbellekleme yapmak iyi bir seçenektir. Nginx'in bunu yapmak için bazı yetenekleri var, ancak esnekliği nedeniyle Verniği gerçekten çok seviyorum.

Hangi seçeneğe veya seçeneğe sahip olursanız olun, doğru şekilde ayarladığınızı doğrulamak için yük testi yaptığınızdan emin olun; bazen bir noktayı düzeltmek yeni bir darboğaz ortaya çıkarır.


0

Deneyimlerimizi AWS ile paylaşmak istiyorum. Uygulamamızı EC2'ye yerleştirdik ve aynı sorun ve yüksek maliyetle karşı karşıya kaldık. Biz başvurumuzu konuşlanmış Amazon EC2 Konteyner Servisi bizim uygulama monolitik olmasına rağmen, ama biz elde

  • Kullanılabilirlik
  • Uygun Maliyetli
  • Ölçeklenebilirlik

Uygulama yük dengeleyici trafiği işleyecek ve trafiği sağlıklı örneğe yönlendirecek ve yükü ölçeklendirme ve dengeleme endişesi duymadan aynı hizmetlerin birden fazla görevini çalıştırabilirsiniz.

Bu mimari, hata izolasyonunu uygulamayı kolaylaştırır. Sağlık kontrolü, önbellekleme, bölmeler veya devre kesiciler gibi teknikler, arızalı bir bileşenin patlama yarıçapını azaltmanıza ve belirli bir uygulamanın Genel kullanılabilirliğini geliştirmenize olanak tanır.


Orada ayrı bir fiyatlandırma için ECS sadece altta yatan EC2 kaynakları etkili ECS artık maliyet kullanılarak bu yüzden nasıl? Kapsayıcıları kendiniz yönetiyor veya Amazon'un yapmasına izin veriyorsanız, aynı miktarda kaynağı tüketmelidir.
Xiong Chiamiov

konteynerde 5mb ve ec2 olan alp kullanıyorsanız, 2GB olan ubuntu kullanıyorsunuz? hangisi en iyisi? t2 micro'da, trafiğin temelinde ölçek giriş ve çıkışlı 5 php konteyner çalıştırabilirsiniz .. ölçek giriş ve çıkış ile ec2'de çalışabilir misiniz?
Adiii

Ec2 bulut sunucuları için Ubuntu kullanmak zorunda değilsiniz; bir Alpine görüntüsü yükleyebilir ve isterseniz bunu kullanabilirsiniz. ECS ile çalışan her şeyi elde ettiyseniz, bu harika ve geri dönmek isteyeceksiniz, ancak amacım sadece ECS'ye taşınmanın bir uygulamayı daha ölçeklenebilir veya uygun maliyetli hale getirmemesi; uygulama, altyapı ve mimaride aynı anda yaptığınız diğer değişiklikler.
Xiong Chiamiov

0

Bu, belirli mimariye çok bağlıdır, ancak örneğin:

  • Ana bilgisayardaki yükü azaltmak için web sitenizi CloudFront ile önden yükleyin
  • Ölçek için S3 gibi bir şeyde istemci tarafı barındırma hizmetini kullanın
  • Otomatik Ölçeklendirme ile Elastik Yük Dengeleyici
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.