Wysoka dostępność - SLA
Wysoka dostępność - SLA
1) Warunki i związek z biznesem
SLI (Service Level Indicator) - zmierzony wskaźnik usługi (na przykład odsetek udanych żądań 2xx/3xx ≤ T ms).
SLO (Cel poziomu usług) - docelowa wartość SLI (np. "99. 95% wniosków ≤ 300 ms").
SLA (umowa o poziomie usług) - zobowiązanie umowne wobec klienta (grzywny/kredyty w przypadku naruszenia).
HA (Wysoka Dostępność) - środki architektoniczne i operacyjne, które pozwalają na wykonanie SLO/SLA.
Zasada: SLA opiera się na SLO i SLO opiera się na zaobserwowanych SLIs. Nie możesz obiecać w SLA tego, czego nie mierzysz.
2) „Dziewiątki” i matematyka dostępności
Dostępność na okres = 'work _ time/total _ time'. Poziomy odniesienia (rocznie):Skład dostępności
Ciąg sekwencyjny (zależność od czerwonej ścieżki): 'A _ total = Α A_i' (każdy składnik zmniejsza całkowitą wartość).
Równoległe węzły aktywów: „A _ razem = 1 − (1 − A_i)” (łączne zwiększenie rezerwy).
3) Co dokładnie zmierzyć (poprawne SLI)
Widok użytkownika: pomyślne zakończenie kluczowych operacji (login, deposit, check-out) i ich opóźnienia p99.
Korytarz czasowy: kruszywo przez przesuwane okna (5/30/60 min) i region.
Wyjątki: „zaplanowane okna” są liczone w SLO, a w SLA tylko wtedy, gdy umowa tak mówi.
- Dostępność: wskaźnik sukcesu ≤ T.
- Jakość: p95/p99 opóźnienie.
- Złożony: "udział udanych depozytów ≤ 5 s'.
4) Budżet błędu i wskaźnik spalania
Budżet błędu = '1 − SLO'. Za 99. 95% miesięczne okno daje 0. 05% błędów/przestojów.
Szybkość spalania: prędkość zużycia w budżecie (np. 4 × oznacza, że w ciągu 6 godzin zjesz limit dzienny).
Polityka: z szybkim spalaniem - zwolnienia zatrzymać, skupić się na stabilizacji, funkcje zamrożenia.
5) Architektura HA: węzeł do regionu
5. 1 węzeł/usługa
N + 1: co najmniej jedna nadmiarowa replika (rozmieszczenie ≥ 2, PDB, anty-powinowactwo).
Izolacja zasobów: limity CPU/RAM/IO, priorytety (klasa ).
Graceful shutdown/drain: no request break on restart.
5. 2 Strefa/region
Multi-AZ: repliki w różnych strefach, równoważenie poprzeczne, niezależne zasilanie/sieć.
Multi-region: aktywa-aktywa (trudniejsze: dane/spójność) lub aktywa-zobowiązania (prostsze: powyżej RPO).
Dane: CP dla pieniędzy/zamówień (kworum/RAFT), EC/AP dla buforów/sklepów.
5. 3 Warstwa sieciowa i obwód
Kontrole zdrowotne w zakresie L7-LB, powtarzanie/skracanie czasu/łamanie obwodów.
GSLB/DNS/Anycast dla globalnego ruchu, krótki TTL.
Sterowanie Egress i kanały odporne na uszkodzenia do zewnętrznych PSP/dostawców.
6) Degradacja zamiast spadania
Funkcja kill-switch (flagi funkcji): wyłączyć non-critical, zapisać „czerwoną ścieżkę”.
Przejście na ścieżki uproszczone: synchroniczne → asynchroniczne/kolejka, „akceptowane do przetwarzania”.
Limit stawek/kwoty: lepiej ograniczyć ruch niż zrzucić wszystkich.
Tryby Stale: dać dane pamięci podręcznej/statycznej, gdy pochodzenie jest niedostępne.
7) Zarządzanie ograniczeniami
Mapa serwisowa: bezpośrednia/transitive, krytyczność, SLO każdego.
Podatne linki: zewnętrzny dostawca bez SLA - zamienia się w pamięć podręczną/kolejkę/duplikat.
Izolacja grodziowa: różne puli połączeń/kwoty dla wolnych tras.
Timeouts> Retries: krótkie czasy, maksymalnie 1 przekaźnik dla operacji idempotent.
8) Operacje i zmiany
Zarządzanie zmianą: wydania za pośrednictwem kanarów/niebiesko-zielone, bramy SLO, automatyczne rolki.
Zaplanowane okna: standaryzacja - długość, częstotliwość, komunikacja.
Incydenty: role (IC/Comms/Tech/DB), runbook'i, pośmiertne działania naprawcze.
Zdarzenia zabezpieczające: w przypadku zagrożenia „tryb paniki” (tylko do odczytu/żetony/obrót/blokowanie).
9) Obserwowalność i ostrzeganie
Model RED (wskaźnik, błędy, czas trwania) dla każdej trasy.
Deski rozdzielcze SLI: dostępność/opóźnienie według regionu i segmentu klienta.
Alerty spalania: szybko (1h, 14. 4 ×), powolny (6h, 2 ×) - sygnał przed awarią SLO.
Przykłady-przełączniki z metryki do wyrównań trace_id.
Syntetyka: próbki z zewnętrznych punktów (obwód, przepływ płatności).
10) Badania tolerancji uszkodzeń
Dni gry: scenariusze wyłączania AZ/regionów, degradacja bazy danych/pamięci podręcznej, awaria zewnętrznych dostawców.
Narzędzia chaosu: fałdy sieciowe (opóźnienie/utrata), kill-strs, przeciążenie procesora/IO.
DR-wiertarki: rozwój RTO/RPO dla systemów Tier-0 (patrz „Kopie zapasowe i DR”).
11) Projekt SLA
Definicja „dostępności”: co liczy się jako incydent (5xx, czas> T, błędy domeny).
Okno obliczeniowe: miesiąc/kwartał; włączenie/wyłączenie planowanych działań.
Kredyty/kary: skala (np. 99. 9–99. 99% - X%, niższy - Y%).
Obowiązki klienta: integracja, przekwalifikowanie w rozsądnych granicach, ograniczenia.
Powiadomienia i procedura clymes: terminy, format, podstawa dowodowa (dzienniki/mierniki).
Siła wyższa: brzmienie i granice prawne.
- "Dostępność API przez SLI "powodzenie ≤ 500 ms" wynosi co najmniej 99. 95% w miesiącu kalendarzowym. Wykluczone są zaplanowane okna (do 60 min/miesiąc ogłoszone w 48 godzin). O 99. 90–99. 95% - pożyczka 5%; 99. 80–99. 90% — 10%; <99. 80% — 25%.»
12) Gospodarka dziewięciu
Każda dodatkowa „dziewięć” nie zwiększa kosztów liniowo (podwójne regiony, kworum, duplikaty dostawców, 24 × 7). Użyj wielopoziomowego SLO:- Tier-0 (pieniądze/zlecenia): 99. 95–99. 99%, multi-AZ, DR gotowy.
- Tier-1 (podstawowe cechy): 99. 9–99. 95%, multi-AZ.
- Tier-2 (nieistotne): 99. 5–99. 9%, rozkład/zatrzymanie jest dozwolone w przypadku incydentów.
13) wzory HA według warstwy
Obwód: CDN/edge, multi-CDN lub GSLB, WAF, tempo-limit.
Równoważenie: L7 z wytryskiem z zewnątrz, timeouts/retrays, lepki/spójny-hash.
Zastosowania: skala pozioma, gotowość/los, PDB, rozprzestrzenianie się topologii.
Dane: lider + repliki, kworum dla CP, pamięci podręcznej L2, idempotencja, PITR.
Kolejki: lusterko/wielokrotność, dedup, DLQ.
Sekrety/konfiguracje: GitOps, migawki atomowe, rollback.
14) Anty-wzory
SLA bez przyrządów pomiarowych i syntetyki zewnętrznej.
Pojedyncza strefa/klaster jako SPOF.
Niekontrolowane retrasy → „self-DDoS”.
Długie transakcje/muteksy na gorącym torze.
„Ciężkie” migracje/uwolnienia bez kanarów i plan rolki.
Brak książki startowej i komunikacji z zainteresowanymi stronami w przypadku incydentu.
15) Lista kontrolna realizacji (0-60 dni)
0-15 dni
Zdefiniuj krytyczne SLIs użytkownika, ustaw SLO według Tier-0/1/2 poziomów.
Uwzględnij alerty spalania, deski rozdzielcze SLO, syntetyczne kontrole obwodów.
Usuń SPOF: ≥ 2 repliki, PDB, multi-AZ dla frontów i krytycznych baz danych.
16-40 dni
Wprowadzenie kanaryjskich wersji z SLO-gating i auto-rollback.
Mapa zależności + kwoty/pule/timeouts/PB dla każdej „czerwonej ścieżki”.
Regulacja planowanych okien i komunikatów, szablony komunikatów incydentów.
41-60 dni
Dzień gry: odłączenie AZ, awaria zewnętrznego dostawcy, „pęknięcie” ruchu.
Ponowne obliczenie SLA i rzeczywistych kredytów, publikacja raportów dla klientów.
Rewizja „kosztu” i ponowne położenie na galerii strzelaniny.
16) Wskaźniki zapadalności
≥ 95% tras krytycznych posiada ostrzeżenia o SLI/SLO i szybkości spalania.
Błędom SLO towarzyszy automatyczne zamrażanie wersji (polityka).
Zasięg multi-AZ Tier-0 = 100%, udane ćwiczenia DR ≥ 1/kwartał.
„Wykrywanie → łagodzenie” czas p50 <5 min, p95 <15 min.
Korelacja „uwalniająca” - utrzymywana i zmniejszona (szybkość wsteczna na wałek).
Publiczny raport o zdarzeniach/kredytach - w ciągu dni roboczych N.
17) Przykłady i snippety
Alerty spalania (idea reguły):- Szybko: "SLO 99. 95%, okno 1 h, oparzenie ≥ 14. 4 × → strona dyżuru"
- Powolny: „okno 6 h, oparzenie ≥ 2 × → bilet & monitoring”.
yaml circuit_breakers:
thresholds:
- max_connections: 200 max_pending_requests: 100 max_requests: 1000 max_retries: 1 outlier_detection:
consecutive_5xx: 5 interval: 5s base_ejection_time: 30s max_ejection_percent: 50
Canary z analizą SLO (Argo Rollouts, idea):
yaml analysis:
templates:
- name: slo-burn metrics:
- name: error-rate successCondition: result < 0. 005 provider: prometheus
Przykład preparatu SLI:
SLI: fraction_of_good_requests = good(HTTP 2xx/3xx ≤ 500ms) / all(requests)
SLO: ≥ 99. 95% per calendar month, per region
18) Wniosek
Wysoka dostępność to nie tylko klastry i repliki, ale spójny zestaw architektury, procesów i metryk: jasne SLI/SLO, realistyczne SLA, dziewiątki ekonomii, degradacja zamiast spadku, dyscyplina czasowa/kwotowa, wydania kanaryjskie, regularne ćwiczenia i przejrzysta komunikacja. Sprawić, aby przystępność była mierzalna i zarządzana - i staje się przewagą konkurencyjną, a nie loterią.