Skalowalne aplikacje internetowe wysokiej dostępności Dariusz Dwornikowski 22.05.2010
Plan wykładu Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [1/37] Skalowalność, Niezawodność i dostępność, Studium przypadku
Definicja skalowalności Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [2/37] Skalowalność systemu oznacza jego zdolność do obsłużenia rosnącej ilości żądań do zasobów. Skalowalność oznacza łatwość rozbudowy systemu, tak aby mógł obsłużyc rosnące wymagania.
Skalowalność w pionie Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [3/37] Skalowanie w pionie: zwiększenie zasobów sprzętowych w ramach serwera (RAM, Dysk, drugi procesor). zwiększenie ilości procesów np. serwera HTTP, zwiększenie ilości maszyn wirtualnych w ramach węzła fizycznego.
Skalowalność w pionie Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [4/37] Wady: Prawo Moore a, Niezawodność, Szybkie wysycenie, I/O dysku się nie skaluje, problematyczność.
Skalowalność w poziomie Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [5/37] Skalowalność w poziomie: dodanie dodatkowego komponentu (serwera, urządzenia) Wady: Koszt, System rozproszony, Większa złożoność, Nie wszystko się da.
Niezawodność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [6/37] Niezawodność jest własnością systemu, mówiącą o tym, czy pracuje on poprawnie przez wymagany czas. Formalnie jest to prawdopodbieństwo, że system będzie działał poprawnie w danym przedziale czasu. R(t) = P (t τ) R(t) niezawodność t czas pracy bez awarii τ założony czas bez awarii
Niezawodność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [7/37] MTBF (ang. Mean time between failures) średni czas pomiędzy awariami MTTF (ang. Mean time to failure) średni czas do awarii MTTR (ang. Mean time to recovery) średni czas do naprawy
Niezawodność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [7/37] MTBF (ang. Mean time between failures) średni czas pomiędzy awariami MTTF (ang. Mean time to failure) średni czas do awarii MTTR (ang. Mean time to recovery) średni czas do naprawy MT BF = MT T F + MT T R
Niezawodność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [8/37]
Dostępność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [9/37] Dostępność to bezawaryjne działanie systemy w trakcie całego czasu jego działania.
Dostępność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [9/37] Dostępność to bezawaryjne działanie systemy w trakcie całego czasu jego działania. λ = 1 MT T F i µ = 1 MT T R
Dostępność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [9/37] Dostępność to bezawaryjne działanie systemy w trakcie całego czasu jego działania. λ = 1 MT T F i µ = 1 MT T R λ P up = µ P down
Dostępność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [9/37] Dostępność to bezawaryjne działanie systemy w trakcie całego czasu jego działania. A = P up = µ µ+λ = λ = 1 MT T F i µ = 1 MT T R λ P up = µ P down 1/MT T R 1/MT T R+1/MT T F = MT T F MT T F +MT T R = R(t)dt
Klasy dostępności Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [10/37] Klasa Dostępność Niedostępny (min/rok) Typ systemu 1 90% 52560 Niezarządzany 2 99% 5256 Zarządzany 3 99,9% 526 Dobrze zarządzany 4 99,99% 52,6 Odporny na awarie 5 99,999% 5,3 Wysoko dostępny 6 99,9999% 0,53 Bardzo wysoko dostępny 7 99,99999% 0.0053 Ultra dostępny
Modelowanie, planowanie Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [11/37] wydajnościowe algebry procesów, teoria kolejek, sieci Petriego, predykcja, prognozowanie, modele matematyczne.
Umowy SLA Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [12/37] Umowa SLA (ang. Service Level Agreement) to wynegocjowany poziom świadczenia usługi. Umowa pomiędzy dostawcą, a odbiorcą.
Umowy SLA Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [12/37] Umowa SLA (ang. Service Level Agreement) to wynegocjowany poziom świadczenia usługi. Umowa pomiędzy dostawcą, a odbiorcą. 1 Dostawca łącza gwarantuje minimalną przepustowość łącza na poziomie 2Mbit w okresie 99,9%. 2 Dostawca usługi gwarantuje czas odpowiedzi nie wyższy niż 30ms w okresie 99%. 3 Usługa hostingu gwarantuje dostępność na poziomie 99%. UWAGA Pamiętajmy o tabelce!!
Skalowalność aplikacji Web Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [13/37] Prosta aplikacja wszystko na jednym węźle fizycznym.
Skalowalność aplikacji Web Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [14/37] Wydzielamy bazę danych na drugi węzeł. Skalujemy, a co z niezawodnością?
Skalowalność aplikacji Web Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [15/37] Wydzielamy bazę danych na drugi węzeł. Skalujemy, a co z niezawodnością?
Skalowalność aplikacji Web Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [16/37] Nasza baza danych działa dobrze, nigdy jeszcze nam nie padła. Jednak serwer WWW nie daje rady. CO ROBIĆ?
Skalowalność aplikacji Web Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [16/37] Nasza baza danych działa dobrze, nigdy jeszcze nam nie padła. Jednak serwer WWW nie daje rady. CO ROBIĆ? Oczywiście dokładamy kolejny serwer WWW.
Równoważenie obciążeń Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [17/37] Wysyłanie żądań do dwóch lub więcej serwerów, Poziom DNS: kilka adresów IP dla jednej domeny, Poziom HTTP (serwer Reverse Proxy), Transparentne dla użytkownika, Stanowe / Bezstanowe, Algorytmy dystryucji żądań: round robin, weighted round robin, oparte na klasie użytkownika, oparte na historii, oparte na pomiarach.
Load balancer Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [18/37]
Load balancer Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [19/37]
Skalowalność aplikacji Web Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [20/37] Mamy już dość sensowne rozwiązanie. O serwery WWW jesteśmy spokojni. A co z bazą danych?
Skalowalność bazy danych Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [21/37] W przypadku baz danych (oraz innych aplikacji stanowych) sytuacja nie jest tak prosta. W grę wchodzi spójność danych, nie możemy dystrybuować żądań pomiędzy kilka osobnych baz. Na szczęście można ten problem rozwiązać dostawcy baz danych dostarczają rozwiązania do klastrowania.
Klaster Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [22/37] Klaster jest systemem złożonym z wielu węzłów, jednakże dla użytkownika wydaje się jedną maszyną, systemem operacyjnym. Klaster jest systemem rozproszonym zasoby współdzielone są poprzez komunikację. Przykłady: rozproszone systemy plików, sieciowe pamięci masowe, bazy danych, klastry obliczeniowe, serwery aplikacyjne.
Klaster wysokiej dostępności Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [23/37] Klaster wysokiej dostępności (HA cluter) składa się z 2 lub więcej węzłów, realizujących ten sam cel przetwarzania. Może pracować w trybach: Aktywny / Aktywny węzły pracują jednocześnie i obsługują żądania, Aktywny / Pasywny (lub Master Slave) jeden węzeł pracuje, drugi jest w zapasie. Oczywiście można to uogólnić na n węzłów: Active / (n-1) Active, (n/2) Active / (n/2) Passive, (n-f) Active / f Passive.
Klaster typu Active / Passive Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [24/37] Mechanizm detekcji awarii bicie serca (heartbeat). Passive sprawdza czy Active działa jeśli nie przejmuje jego rolę. Strategie po tym jak Active wstanie są dowolne. W jednych Active synchronizuje się z Passive i odzyskuje dawną rolę, w innych zostaje Passivem.
Klaster typu Active / Passive Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [25/37]
Klaster typu Active / Passive Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [26/37]
Klaster typu Active / Passive Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [27/37]
Niezawodność + skalowalność Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [28/37]
Gotowe środowisko Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [29/37] Posiadamy niezawodne, skalowalne środowisko. Nasz portal ma miejsce by obsłużyć więcej użytkowników, a administratorzy mogą spać spokojnie. Występuje jednak pewien problem. Okazuje się, że większość stron WWW portalu nie jest często zmieniania, niepotrzebnie generujemy je za każdym razem, niepotrzebnie też przesyłamy materiały statyczne przy każdym żądaniu (zdjęcia, pliki CSS, pliki JavaScript, itd).
Gotowe środowisko Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [29/37] Posiadamy niezawodne, skalowalne środowisko. Nasz portal ma miejsce by obsłużyć więcej użytkowników, a administratorzy mogą spać spokojnie. Występuje jednak pewien problem. Okazuje się, że większość stron WWW portalu nie jest często zmieniania, niepotrzebnie generujemy je za każdym razem, niepotrzebnie też przesyłamy materiały statyczne przy każdym żądaniu (zdjęcia, pliki CSS, pliki JavaScript, itd). Sięgamy po rozwiązania z zakresu optymalizacji wydajnościowej aplikacji WWW. Jednym z nich jest caching.
Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [30/37] W naszym przypadku możemy użyć kilku rodzajów cachowania. 1 Cache na poziomie obiektów w aplikacji (memcache)
Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [30/37] W naszym przypadku możemy użyć kilku rodzajów cachowania. 1 Cache na poziomie obiektów w aplikacji (memcache) 2 Cache na poziomie serwera aplikacji (akceleratory)
Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [30/37] W naszym przypadku możemy użyć kilku rodzajów cachowania. 1 Cache na poziomie obiektów w aplikacji (memcache) 2 Cache na poziomie serwera aplikacji (akceleratory) 3 Cache na poziomie żądań HTTP (serwer Proxy Cache)
Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [30/37] W naszym przypadku możemy użyć kilku rodzajów cachowania. 1 Cache na poziomie obiektów w aplikacji (memcache) 2 Cache na poziomie serwera aplikacji (akceleratory) 3 Cache na poziomie żądań HTTP (serwer Proxy Cache) 4 Cache na poziomie przeglądarki klienta (delegowanie cachowania do klienta)
Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [30/37] W naszym przypadku możemy użyć kilku rodzajów cachowania. 1 Cache na poziomie obiektów w aplikacji (memcache) 2 Cache na poziomie serwera aplikacji (akceleratory) 3 Cache na poziomie żądań HTTP (serwer Proxy Cache) 4 Cache na poziomie przeglądarki klienta (delegowanie cachowania do klienta) 5 Cache geograficzny (wyspecjalizowane rozwiązania, np. Akamai)
Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [31/37] Cache na poziomie obiektów w aplikacji (memcache)
Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [32/37] Cache na poziomie serwera aplikacji. języki interpretowane (PHP, Python) każde odwołanie to interpretacja i wykonania koszt akceleratory kompilują do formy wykonywalnej przy pierwszym odwołaniu np. PHP Xcache, PHP eaccellerator, mechanizmy w Django dla Javy wbudowane w serwery aplikacyjne przede wszystkim oszczędza CPU i skraca czas potrzebny na obsłużenie żądania
Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [33/37] Cache na poziomie żądań HTTP (serwer Proxy Cache) działa jak serwer proxy HTTP, strona raz wygenerowana zapamiętana w cache.
Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [34/37] Cache na poziomie przeglądarki korzystając z nagłówków HTTP ustawiamy przesłanki dla przeglądarki (max-age, Cache-Control, Expires, ETag) przeglądarki wstawiają odpowiednie elementy do cachu lokalnego trzeba bardzo uważać z tym mechanizmem, bo nie mamy nad nim kontroli obejście: <a href= zdjecie.png?v2 >
Cache Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [35/37] Cache geograficzny CDN (ang. Content Delivery Network) materiały statyczne widoczne są pod innymi adresami URL, korzystanie z zewnętrznych dostawców przestrzeni Amazon, Akamai,... zalety to szybsze otwieranie się strony (przeglądarka otwiera 2 połączenia na URI) geograficznie rozproszony otrzymujemy treści z bliższej lokalizacji wadą może być niekiedy koszt (łącz, użytkowania)
Gotowe środowisko Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [36/37]
Dziękuję Dariusz Dwornikowski Skalowalne aplikacje internetowe wysokiej dostępności [37/37]?