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.
Odpowiedzi:
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.
źródło
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?
źródło
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.
źródło
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.
źródło
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ę
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.
źródło
Zależy to w dużej mierze od konkretnej architektury, ale na przykład:
źródło