Jak zapobiec przytuleniu się do śmierci w Instancji EC2?

9

Mam aplikację na iOS w sklepie z aplikacjami i ostatnio otrzymałem ogromny wzrost ruchu do mojej strony docelowej hostowanej na EC2 i spowodowałem, że strona nie reaguje, na szczęście udało mi się ją odzyskać poprzez ponowne uruchomienie i uaktualnienie instancji do t2.medium.

Teraz szukam kogoś, kto wdroży technologię, aby zapobiec tej samej śmierci ponownie. Moje doświadczenie rozciąga się tak daleko, że mogę zrozumieć podstawowe rzeczy devops, ale nie wystarczą do równoważenia obciążenia w AWS, chcę wiedzieć, co jest niedrogą implementacją dla mojej instancji.

Moja strona docelowa i backend aplikacji na iOS są hostowane w tej samej instancji.

Missus
źródło
1
Czy Twoja strona docelowa jest statyczna?
Michael - sqlbot

Odpowiedzi:

8

Jeśli chcesz coś szybko posortować bez większej wiedzy, polecam elastyczną łodygę fasoli. To kolejna aplikacja AWS, która zajmie się konfiguracją modułu równoważenia obciążenia i skalowaniem instancji.

Oprócz modułu równoważenia obciążenia i instancji nie ma żadnych dodatkowych kosztów, więc możesz nadal korzystać z instancji typu t2, ale skalować elastyczną łodygę fasoli tak długo, jak chcesz.

Automatyczne skalowanie nie jest natychmiastowe, a w czasach gwałtownego ruchu może zająć krótki czas, zwykle kilka minut, aby móc obsłużyć skok, ale będzie znacznie lepsze niż ręczne skalowanie wielkości wystąpienia i jest naprawdę łatwe do opanowania z.

Briansbum
źródło
1

Poleciłbym automatyczne skalowanie, jak wspomniano powyżej, z dodatkiem niektórych alarmów CloudWatch, aby rozpocząć proces automatycznego skalowania, gdy określone progi zaczną rosnąć, a nie kiedy jest już za daleko.

Na przykład; skonfiguruj CloudWatch, aby monitorował serwer, gdy procesor ma 50% lub więcej przez 30 sekund lub więcej, rozpocznij proces automatycznego skalowania.

Może to nie być całkowicie bezbłędne, ale łatwo to zrobić za pomocą niektórych przewodników online i wszystkich konfigurowalnych za pomocą GUI.

Ponadto, jeśli strona docelowa jest statyczna, dlaczego nie hostować jej na darmowym poziomie t2.micro i użyć innej bezpłatnej warstwy t2.micro dla swojej aplikacji?

jto
źródło
Automatyczne skalowanie nie jest holistyczną odpowiedzią podczas nagłego wzrostu ruchu. Okno wykrywania automatycznego skalowania trwa od 1 do 5 minut, w zależności od konfiguracji może to również zająć trochę czasu. Zasadniczo poprawną odpowiedzią jest uruchamianie instancji na gorąco, tj .: powyżej poziomu postrzeganego poziomu ruchu i umożliwienie automatycznego skalowania w celu utrzymania tego marginesu.
Matt O.
1

Chciałbym w tym pomóc, jeśli szukasz pomocy. W zależności od strony może nie być wcale potrzebny ec2. Na przykład, jeśli podajesz coś statycznego lub JavaScript, może to być obsługiwane z s3 z dystrybucją chmurową. Lub możemy użyć grupy automatycznego skalowania, jeśli jest to absolutnie konieczne.

użytkownik4564
źródło
1

Istnieją dwie ogólne strategie radzenia sobie z gwałtownymi ruchami: zwiększenie przepustowości i zmniejszenie kosztów.

Zwiększenie pojemności oznacza automatyczne skalowanie, z którego wszyscy byli bardzo podekscytowani, kiedy po raz pierwszy udostępniono chmury publiczne. W najbardziej podstawowym sensie spowoduje to uruchomienie większej liczby serwerów WWW w oparciu o obciążenie i dodanie ich do modułu równoważenia obciążenia, ale ponieważ zarządzanie nimi może być uciążliwe, istnieje również więcej rozwiązań automagicznych, takich jak Elastic Beanstalk.

Problem ze zautomatyzowanym zwiększaniem pojemności polega na tym, że także zautomatyzowane rozszerzanie rachunków - 10-krotny normalny ruch oznacza 10-krotność serwerów oznacza 10-krotność pieniędzy, które musisz zapłacić. Dlatego, mimo że jest to przydatna strategia, o której należy pamiętać, myślę, że zawsze powinieneś zacząć od sprawdzenia, ile możesz oszukiwać.

Przez cheat rozumiem pamięć podręczną, która opiera się na założeniu, że przez większość czasu możesz podawać użytkownikom nieco nieaktualne dane i nie zauważą ich, a to może zaoszczędzić ogromną ilość czasu. Wyobraź sobie, że masz stronę, która według ciebie jest w porządku, jeśli jest nieaktualna o pięć sekund i dostaje 20 req / s. Bez buforowania obliczenia są przeprowadzane 1200 razy na minutę, podczas gdy z buforowaniem jest tylko 12. Możesz zobaczyć, jak może to zrobić ogromną różnicę.

Istnieje oczywiście wiele rodzajów buforowania, a odnosząca sukcesy strona internetowa wykorzysta kilka z nich. Ale w twoim przypadku użycia są dwie całkiem dobre i łatwe opcje.

Pierwszym z nich jest uczynienie witryny całkowicie statyczną. Zakłada się, że możesz to zrobić, ale jeśli możesz, to po prostu Nginx podaje bezpośrednio html i może obsłużyć mnóstwo żądań bez potu.

Jeśli potrzebujesz pewnego poziomu dynamiki, dobrym rozwiązaniem jest buforowanie całej strony. Nginx ma taką możliwość, ale bardzo podoba mi się Lakier ze względu na jego elastyczność.

Bez względu na to, z której opcji korzystasz, upewnij się, że wykonałeś test ładowania, aby sprawdzić, czy poprawnie go skonfigurowałeś; czasami naprawienie jednego miejsca powoduje pojawienie się nowego wąskiego gardła.

Xiong Chiamiov
źródło
0

Chciałbym podzielić się naszym doświadczeniem z AWS. Wdrożyliśmy naszą aplikację na EC2 i napotykamy ten sam problem, a także wysokie koszty. Wdrożyliśmy naszą aplikację Amazon EC2 Container Service, chociaż nasza aplikacja była monolityczna, ale udało się

  • Dostępność
  • Efektywność kosztowa
  • Skalowalność

Moduł równoważenia obciążenia aplikacji poradzi sobie z ruchem i przekieruje ruch do zdrowej instancji, umożliwiając wykonywanie wielu zadań tych samych usług bez obawy o skalowanie i równoważenie obciążenia.

Ta architektura ułatwia wdrożenie izolacji awarii. Techniki takie jak sprawdzanie stanu, buforowanie, grodzie lub wyłączniki automatyczne pozwalają zmniejszyć promień wybuchu uszkodzonego elementu i poprawić ogólną dostępność danej aplikacji.

Adii
źródło
Nie ma osobnych cen dla ECS , tylko podstawowe zasoby EC2, więc w jaki sposób korzystanie z ECS było bardziej opłacalne? Powinien zużywać tę samą ilość zasobów, niezależnie od tego, czy sam zarządzasz kontenerami, czy pozwalasz Amazonowi to zrobić.
Xiong Chiamiov
w kontenerze, jeśli używasz alpejskiego, który jest 5mb i ec2, używasz ubuntu, który jest 2GB? która rzecz jest najlepsza? w t2 micro można uruchomić pojemnik 5 php ze skalowaniem do i z powrotem na podstawie ruchu. Czy można uruchomić w ec2 z skalowaniem i skalowaniem?
Adiii
Nie musisz używać Ubuntu do instancji ec2; możesz przesłać obraz alpejski i użyć go, jeśli chcesz. Jeśli masz już wszystko, co działa z ECS, to świetnie, i jest mało prawdopodobne, że będziesz chciał wrócić, ale chodzi mi o to, że samo przejście do ECS nie czyni aplikacji bardziej skalowalną ani opłacalną; to inne zmiany wprowadzone w aplikacji, infrastrukturze i architekturze jednocześnie.
Xiong Chiamiov
0

Zależy to w dużej mierze od konkretnej architektury, ale na przykład:

  • Załaduj stronę z CloudFront, aby zmniejszyć obciążenie hosta
  • Użyj usługi hostingowej po stronie klienta w coś takiego jak S3 na skalę
  • Elastyczny moduł równoważenia obciążenia z grupą skalowania automatycznego
Henz
źródło