.

Jak poradzić sobie z równoważeniem obciążenia serwera dużej strony internetowej?

Współczesne strony internetowe o dużym natężeniu ruchu muszą obsługiwać setki tysięcy, a nawet miliony jednoczesnych żądań od użytkowników lub klientów i zwracać prawidłowe elementy na stronie, a wszystko to wykonywać szybko i niezawodnie. Dla serwerów obsługujących daną stronę to próba wytrzymałości czy w danym momencie właściwie obsłużą ruch tak, aby użytkownik końcowy miał nieprzerwany i komfortowy dostęp do usługi.

Co to jest równoważenie obciążenia serwera i dlaczego jest ważne dla złożonych stron?

W infrastrukturze IT load balancer (system równoważenia obciążenia) znajduje się krok przed serwerami, tak aby mógł automatycznie rozdzielać żądania użytkowników na wszystkie serwery gotowe do realizacji tych żądań w sposób, który maksymalizuje szybkość i wykorzystanie zasobów oraz zapewnia, że żaden serwer nie jest niedostępny lub w złej kondycji (co mogłoby obniżyć wydajność). W przypadku awarii jednego serwera system równoważenia obciążenia kieruje ruch na pozostałe serwery. W momencie dodania nowego serwera, load balancer zaczyna wysyłać do niego żądania. Proces dodawania lub usuwania serwerów jest zautomatyzowany i przeprowadzany inteligentnie, co zapewnia elastyczność i oszczędność kosztów.

Schemat przedstawia rozkład ruchu sieciowego z wykorzystaniem systemu równoważenia obciążenia

Źródło: NGINX

Load balancer pomaga serwerom zoptymalizować wykorzystanie zasobów i zapobiega przeciążeniom serwerów. Dla złożonych stron internetowych ma to duże znaczenie, ponieważ wszystkie elementy strony, czyli tekst, grafiki, animacje, wideo lub dane aplikacji, muszą być przesłane w jak najkrótszym czasie, a będzie to możliwe dzięki optymalnie dostarczonym zasobom.

Co to jest duża strona z perspektywy devopsowej?

Technologie internetowe zmieniają się w błyskawicznym tempie na przestrzeni lat. Podobnie zmieniają się oczekiwania użytkowników Internetu, a co za tym idzie nastawienie firm na jak najlepszą reklamę swoich produktów i usług. Statyczna strona internetowa już dawno stała się mitem i została wyparta przez dynamiczne i pełne regularnie zmieniających się treści serwisy, które obciążają serwer zapytaniami w mniej przewidywalny sposób niż zwykłe pliki statyczne. Wśród takich przykładów można wymienić m.in. serwisy informacyjne, blogi, aplikacje webowe oraz sklepy internetowe. Często takie strony mają wiele zależności, są połączone z różnymi API, zawierają wewnętrzne i zewnętrzne integracje, a także odwołują się do innych systemów. Złożoność wpływa na wydajność i czas odpowiedzi strony na zapytania użytkowników. Dodatkowo jeśli strona staje się popularna, cechuje ją duży ruch, który powoduje zwiększenie wartości wcześniej wymienionych czynników.

Równoważenie obciążenia serwera złożonej strony

Z punktu widzenia infrastruktury, złożone strony mają większe wymagania hostingowe, ponieważ muszą obsłużyć duży ruch, reagować na nieregularny zwiększony ruch na stronie, ale także zapewnić rozwiązanie awaryjne w przypadku incydentu. Oprócz tego pojawia się kwestia architektury całego rozwiązania. Zakładając, że elementy deweloperskie, tj. prawidłowa optymalizacja strony, uruchomione skrypty, pluginy czy kompresja plików, są właściwie skonfigurowane, pozostają elementy devopsowe, które powinny iść ze sobą w parze. Złożone strony internetowe mogą posiadać więcej “naczyń połączonych” niż standardowe i proste ich odpowiedniki. Rozbudowany serwis może, między innymi, korzystać z kilku różnych typów baz danych jednocześnie, pobierać w ciągu sekundy ogromną ilość danych z API, a także zarządzać wieloma zależnymi od siebie sieciami.

System równoważenia obciążenia

Systemy równoważenia obciążenia to gwarancja, że przychodzące żądania dostępu są przydzielane do serwera, który jest w stanie je optymalnie obsłużyć. Poza tym umożliwiają efektywne kosztowo skalowanie rozwiązań, a także zapewniają wysoką dostępność usług.

Rynek posiada bardzo dużo możliwości wdrożenia takich systemów, począwszy od rozwiązań darmowych (np. HAProxy, Nginx) i komercyjnych (Cisco, F5), przez rozwiązania software’owe, kończąc na opcjach chmurowych.

  • Wybierając rozwiązanie sprzętowe, należy założyć, że niezawodność jest zapewniona w pakiecie od producenta. Z jednej strony pojawia się ograniczenie do tego, co proponuje producent, z drugiej otrzymujemy pełne wsparcie podczas problemów z wydajnością.
  • Rozwiązanie software’owe nie daje możliwości zarządzania sprzętem, funkcjonalności są skupione na możliwościach programowych (np. ilość vCPU, RAM-u, liczba połączeń).
  • Rozwiązanie chmurowe jest połączeniem wcześniejszych opcji. Wtedy to dostawca chmury oferuje nam sprzętowy load balancer, zarządzany przez niego, albo programowy - zarządzany przez nas.

Główni dostawcy chmury publicznej udostępniają usługi równoważenia obciążenia z własnym nazewnictwem. Amazon zapewnia AWS Elastic Load Balancer, Microsoft - Azure Load Balancer, a Google Cloud Platform - Cloud Load Balancing.

Jak sobie poradzić z równoważeniem obciążenia serwera?

Na przestrzeni lat bardzo zmieniło się podejście do hostowania strony. Rzadko do tego celu wykorzystywany jest pojedynczy serwer, nawet w świecie nieograniczonych możliwości serwerów. Load balancer stał się jednym z kluczowych elementów w projektowaniu całej infrastruktury, a jego właściwa realizacja zapewni optymalizację zasobów, zmniejszenie obciążeń i zwiększenie produktywności.

Wybór typu systemu równoważenia obciążenia

Load balancer jest pierwszym elementem infrastruktury, z którym łączy się klient i jedynym, który jest dla niego widoczny, bez znaczenia czy system jest w wersji sprzętowej czy oprogramowania. W opcji sprzętowej zostanie użyty fizyczny serwer, co oczywiście wymaga stosownej inwestycji. Oprogramowanie wykorzystane do równoważenia obciążenia może być zainstalowane na wirtualnej maszynie i może przyjąć rolę kontrolera dostarczania aplikacji. Z kolei rozwiązanie chmurowe jest najbardziej elastycznym wyborem.

Wybór algorytmu

Rozdzielenie ruchu, jaki trafia do load balancera zależy od rodzaju użytego algorytmu. Cztery najbardziej znane algorytmy to Round Robin, Weighted Round Robin, Least Connections i Weighted Least Connections.

  • Round Robin to najprostszy mechanizm, który tworzy kolejkę żądań przychodzących, a zapytania są przydzielane sekwencyjnie, w zależności od dostępności maszyn, bez określonego priorytetu.
  • Weighted Round Robin działa w oparciu o system wagowy, więc ruch zostanie skierowany na serwer, któremu przypisano większą wagę.
  • Algorytm Least Connections kieruje zapytanie do serwera, który ma najmniej aktywnych połączeń.
  • Weighted Least Connections bazuje na liczbie zapytań dla każdej maszyny oraz przydzielonej wadze.

Wykorzystanie load balancera do obsługi HTTPS

W zależności od konfiguracji, load balancer może przejąć odpowiedzialność za obsługę HTTPS. Wówczas certyfikat domeny nie znajduje się na serwerze aplikacyjnym, tylko na load balancerze, który przekazuje zapytania do serwerów aplikacyjnych po HTTP, jednocześnie pozwalając zmniejszyć obciążenie serwerów aplikacji zaplecza.

Przeprowadzenie testów kondycji

Równie ważną funkcją, dostępną w usłudze równoważenia obciążenia, są testy kondycji serwerów. Przesyłanie zapytań do niedostępnych lub wątpliwych pod kątem wydajności hostów nie ma sensu. Systemy równoważenia obciążenia regularnie przeprowadzają kontrole kondycji serwerów, aby upewnić się, że mogą one obsługiwać żądania. Jeśli odpowiedź serwera przekracza kilkukrotnie próg zdefiniowany dla poprawnych odpowiedzi, przyjmuje się, że taki serwer jest w złej kondycji, wycofuje się go z użytku, a przychodzące zapytania nie są do niego przekierowywane.

Równoważenie obciążenia - podsumowanie

System równoważenia obciążenia w ciągu ostatnich lat stał się kluczowym elementem w planowaniu infrastruktury. Oczywiście najważniejsza pozostaje rola rozdzielania ruchu, ale load balancer zapewnia również inne możliwości, włącznie z coraz popularniejszą wysoką dostępnością. Właściwa konfiguracja umożliwia prawidłowe dostarczenie funkcji na stronach WWW i kształtuje pozytywny wizerunek firmy, a użytkownikom końcowym zapewnia komfort użytkowania.

Zastanawiasz się, który system równoważenia obciążenia wybrać i jak poprawnie go skonfigurować? Nasi specjaliści DevOps kompleksowo zajmują się infrastrukturą, dlatego po przeanalizowaniu Twoich potrzeb, doradzą i przygotują najlepsze rozwiązanie.

3. Najlepsze praktyki zespołów programistycznych