Zalecenia dotyczące projektowania pod kątem nadmiarowości

Dotyczy tego zalecenia dotyczącego listy kontrolnej niezawodności platformy Azure Well-Architected Framework:

RE:05 Dodaj nadmiarowość na różnych poziomach, szczególnie w przypadku przepływów krytycznych. Zastosuj nadmiarowość do warstw obliczeniowych, danych, sieci i innych warstw infrastruktury zgodnie ze zidentyfikowanymi celami niezawodności.

Powiązane przewodniki: Projektowanie | wieloregionalne o wysokiej dostępnościprzy użyciu stref dostępności i regionów

W tym przewodniku opisano zalecenia dotyczące dodawania nadmiarowości w przepływach krytycznych w różnych warstwach obciążenia, co optymalizuje odporność. Spełnianie wymagań zdefiniowanych celów dotyczących niezawodności przez zastosowanie odpowiednich poziomów nadmiarowości do warstw obliczeniowych, danych, sieci i innych warstw infrastruktury. Zastosuj tę nadmiarowość, aby zapewnić obciążeniu silną, niezawodną podstawę do budowy. W przypadku tworzenia obciążenia bez nadmiarowości infrastruktury występuje duże ryzyko wydłużenia przestoju z powodu potencjalnych awarii.

Definicje

Okres Definicja
Nadmiarowość Implementacja wielu identycznych wystąpień składnika obciążenia.
Trwałość uniwersalna Koncepcja używania różnych technologii magazynowania przez tę samą aplikację lub rozwiązanie w celu skorzystania z najlepszych możliwości każdego składnika.
Spójność danych Miara synchronizacji lub braku synchronizacji danego zestawu danych znajduje się w wielu magazynach.
Partycjonowanie Proces fizycznego dzielenia danych na oddzielne magazyny danych.
Shard Strategia partycjonowania w poziomie bazy danych, która obsługuje wiele wystąpień magazynu ze wspólnym schematem. Dane nie są replikowane we wszystkich wystąpieniach.

Kluczowe strategie projektowania

W kontekście niezawodności użyj nadmiarowości, aby zawierać problemy wpływające na pojedynczy zasób i zapewnić, że te problemy nie wpływają na niezawodność całego systemu. Użyj informacji zidentyfikowanych na temat krytycznych przepływów i celów niezawodności, aby podejmować świadome decyzje, które są wymagane dla nadmiarowości każdego przepływu.

Na przykład może istnieć wiele węzłów serwera internetowego uruchomionych jednocześnie. Krytyczność obsługiwanego przepływu może wymagać, aby wszystkie z nich miały repliki, które są gotowe do akceptowania ruchu, jeśli wystąpi problem, który ma wpływ na całą pulę, na przykład awarię regionalną. Alternatywnie, ponieważ problemy na dużą skalę są rzadkie i kosztowne jest wdrożenie całego zestawu replik, można wdrożyć ograniczoną liczbę replik, aby przepływ działał w stanie obniżonej wydajności, dopóki nie rozwiążesz problemu.

Podczas projektowania nadmiarowości w kontekście wydajności rozłóż obciążenie między wiele nadmiarowych węzłów, aby upewnić się, że każdy węzeł działa optymalnie. W kontekście niezawodności utwórz oszczędzoną pojemność w celu absorbowania awarii lub awarii, które mają wpływ na co najmniej jeden węzeł. Upewnij się, że pojemność zapasowa może pochłaniać awarie przez cały czas potrzebny do odzyskania węzłów, których dotyczy problem. Mając to na uwadze, obie strategie muszą współpracować. Jeśli ruch jest rozłożony na dwa węzły pod kątem wydajności, a oba działają na poziomie 60 procent, a jeden węzeł ulegnie awarii, pozostały węzeł będzie narażony na przeciążenie, ponieważ nie może działać w 120 procentach. Rozłożenie obciążenia za pomocą innego węzła w celu zapewnienia, że cele dotyczące wydajności i niezawodności są podtrzymane.

Kompromisy:

  • Większa nadmiarowość obciążeń odpowiada większej nakładów pracy. Starannie rozważ dodanie nadmiarowości i regularne przeglądanie architektury, aby upewnić się, że zarządzasz kosztami, szczególnie w przypadku korzystania z nadmiernej aprowizacji. Jeśli używasz nadmiernej aprowizacji jako strategii odporności, zrównoważ ją ze dobrze zdefiniowaną strategią skalowania , aby zminimalizować nieefektywność kosztów.
  • W przypadku kompilacji w wysokim stopniu nadmiarowości mogą wystąpić kompromisy w zakresie wydajności. Na przykład zasoby rozłożone w różnych strefach dostępności lub regionach mogą mieć wpływ na wydajność, ponieważ trzeba wysyłać ruch przez połączenia o dużym opóźnieniu między nadmiarowymi zasobami, takimi jak serwery internetowe lub wystąpienia bazy danych.
  • Różne przepływy w ramach tego samego obciążenia mogą mieć różne wymagania dotyczące niezawodności. Projekty nadmiarowości specyficzne dla przepływu mogą potencjalnie wprowadzać złożoność do ogólnego projektu.

Projekt architektury nadmiarowej

Podczas projektowania architektury nadmiarowej należy wziąć pod uwagę dwa podejścia: aktywny-aktywny lub aktywny-pasywny. Wybierz swoje podejście w zależności od krytycznego podejścia przepływu użytkownika i przepływu systemu obsługiwanego przez składniki infrastruktury. Pod względem niezawodności projekt aktywny-aktywny w wielu regionach pomaga osiągnąć najwyższy możliwy poziom niezawodności, ale jest znacznie droższy niż projekt aktywny-pasywny. Wybór odpowiednich regionów geograficznych staje się kolejnym krytycznym wyborem. Można również użyć tych metod projektowania dla jednego regionu przy użyciu stref dostępności. Aby uzyskać więcej informacji, zobacz Zalecenia dotyczące projektowania w wielu regionach o wysokiej dostępności.

Sygnatury wdrożenia i jednostki skali

Niezależnie od tego, czy wdrażasz w modelu aktywny-aktywny-aktywny-pasywny, postępuj zgodnie ze wzorcem projektowania sygnatur wdrażania , aby upewnić się, że obciążenie jest wdrażane w powtarzalny, skalowalny sposób. Sygnatury wdrożenia to grupy zasobów, które są wymagane do dostarczenia obciążenia do danego podzbioru klientów. Na przykład podzbiór może być podzbiorem regionalnym lub podzbiorem z tymi samymi wymaganiami dotyczącymi prywatności danych co obciążenie. Każdą sygnaturę można traktować jako jednostkę skalowania , którą można duplikować w celu skalowania obciążenia w poziomie lub do wykonywania wdrożeń niebiesko-zielonych. Zaprojektuj obciążenie przy użyciu sygnatur wdrożenia, aby zoptymalizować implementację aktywne-aktywne lub aktywne-pasywne pod kątem odporności i obciążenia związanego z zarządzaniem. Planowanie skalowania w poziomie w wielu regionach jest również ważne, aby wyeliminować potencjalne tymczasowe ograniczenia pojemności zasobów w regionie.

Strefy dostępności w regionach świadczenia usługi Azure

Niezależnie od tego, czy wdrażasz projekt aktywny-aktywny, czy aktywny-pasywny, skorzystaj ze stref dostępności w aktywnych regionach, aby w pełni zoptymalizować odporność. Wiele regionów platformy Azure zapewnia wiele stref dostępności, które są oddzielnymi grupami centrów danych w regionie. W zależności od usługi platformy Azure możesz korzystać ze stref dostępności, wdrażając elementy obciążenia nadmiarowo w różnych strefach lub przypinając elementy do określonych stref. Aby uzyskać więcej informacji, zobacz Zalecenia dotyczące używania stref dostępności i regionów.

Wskazówki dotyczące warstwy infrastruktury

Zasoby obliczeniowe

  • Wybierz odpowiednią usługę obliczeniową dla obciążenia. W zależności od typu obciążenia, które projektujesz, może być dostępnych kilka opcji. Zbadaj dostępne usługi i dowiedz się, które typy obciążeń najlepiej sprawdzają się w danej usłudze obliczeniowej. Na przykład obciążenia SAP są zwykle najbardziej odpowiednie dla usług obliczeniowych IaaS (infrastruktura jako usługa). W przypadku aplikacji konteneryzowanej określ konkretne funkcje, które należy kontrolować, aby określić, czy należy używać rozwiązania Azure Kubernetes Service (AKS), czy rozwiązania typu "platforma jako usługa" (PaaS). Platforma w chmurze w pełni zarządza usługą PaaS.

  • Jeśli zezwalają na to wymagania, użyj opcji obliczeniowych PaaS. Platforma Azure w pełni zarządza usługami PaaS, co zmniejsza obciążenie związane z zarządzaniem, a udokumentowany stopień nadmiarowości jest wbudowany.

  • Użyj usługi Azure Virtual Machine Scale Sets, jeśli musisz wdrożyć maszyny wirtualne. Dzięki Virtual Machine Scale Sets możesz automatycznie rozłożyć zasoby obliczeniowe równomiernie w różnych strefach dostępności.

  • Zachowaj czystą warstwę obliczeniową dowolnego stanu , ponieważ poszczególne węzły obsługujące żądania mogą zostać usunięte, uszkodzone lub zastąpione w dowolnym momencie.

  • Używaj usług strefowo nadmiarowych, jeśli jest to możliwe, aby zapewnić większą odporność bez zwiększania obciążenia operacyjnego.

  • Nadmierna aprowizacja krytycznych zasobów w celu ograniczenia awarii wystąpień nadmiarowych, nawet przed rozpoczęciem operacji skalowania automatycznego, więc system nadal działa po awarii składnika. Oblicz akceptowalny efekt błędu w przypadku uwzględnienia nadmiernej aprowizacji w projekcie nadmiarowości. Podobnie jak w przypadku procesu podejmowania decyzji dotyczących nadmiarowości, cele dotyczące niezawodności i decyzje dotyczące kompromisu finansowego określają zakres, w jakim dodajesz pojemność zapasową z nadmierną aprowizowaniem. Nadmierna aprowizacja odnosi się konkretnie do skalowania w poziomie, co oznacza dodanie dodatkowych wystąpień danego typu zasobu obliczeniowego, a nie zwiększenie możliwości obliczeniowych dowolnego pojedynczego wystąpienia. Jeśli na przykład zmienisz maszynę wirtualną z jednostki SKU niższej warstwy na jednostkę SKU wyższej warstwy.

  • Wdróż usługi IaaS ręcznie lub za pośrednictwem automatyzacji w każdej strefie dostępności lub regionie, w którym zamierzasz zaimplementować rozwiązanie. Niektóre usługi PaaS mają wbudowane funkcje, które są automatycznie replikowane w różnych strefach dostępności i regionach.

Zasoby danych

  • Ustal, czy replikacja danych synchronicznych czy asynchronicznych jest niezbędna do działania obciążenia. Aby ułatwić określenie tego rozwiązania, zobacz Zalecenia dotyczące używania stref dostępności i regionów.

  • Weź pod uwagę wskaźnik wzrostu danych. W przypadku planowania pojemności zaplanuj wzrost ilości danych, przechowywanie danych i archiwizowanie, aby zapewnić spełnienie wymagań dotyczących niezawodności w miarę wzrostu ilości danych w rozwiązaniu.  

  • Dystrybuuj dane geograficznie, obsługiwane przez usługę, aby zminimalizować wpływ awarii zlokalizowanych geograficznie.

  • Replikowanie danych między regionami geograficznymi w celu zapewnienia odporności na awarie regionalne i katastrofalne awarie.

  • Automatyzowanie trybu failover po awarii wystąpienia bazy danych. Automatyczne przechodzenie w tryb failover można skonfigurować w wielu usługach danych PaaS platformy Azure. Automatyczne przechodzenie w tryb failover nie jest wymagane w przypadku magazynów danych obsługujących zapisy w wielu regionach, takich jak usługa Azure Cosmos DB. Aby uzyskać więcej informacji, zobacz Zalecenia dotyczące projektowania strategii odzyskiwania po awarii.

  • Użyj najlepszego magazynu danych dla Twoich danych. Korzystaj z trwałości wielolotowej lub rozwiązań korzystających z różnych technologii magazynu danych. Dane zawierają więcej niż tylko utrwalone dane aplikacji. To także dzienniki, zdarzenia, komunikaty i pamięci podręczne aplikacji.

  • Należy wziąć pod uwagę wymagania dotyczące spójności danych i używać spójności ostatecznej , gdy zezwalają na to wymagania. Gdy dane są dystrybuowane, należy użyć odpowiedniej koordynacji, aby wymusić silne gwarancje spójności. Koordynacja może zmniejszyć przepływność i sprawić, że systemy są ściśle powiązane, co może sprawić, że będą bardziej kruche. Jeśli na przykład operacja aktualizuje dwie bazy danych, zamiast umieszczać ją w jednym zakresie transakcji, lepiej jest, jeśli system może pomieścić spójność ostateczną.

  • Partycjonowanie danych pod kątem dostępności. Partycjonowanie bazy danych zwiększa skalowalność i może również zwiększyć dostępność. Jeśli jeden fragment ulegnie awarii, pozostałe fragmenty są nadal osiągalne. Awaria jednego fragmentu zakłóca tylko podzestaw wszystkich transakcji.

  • Jeśli fragmentowanie nie jest opcją, możesz użyć wzorca Segregacja odpowiedzialności poleceń i zapytań (CQRS), aby oddzielić modele danych tylko do odczytu i zapisu. Dodaj więcej nadmiarowych wystąpień bazy danych tylko do odczytu, aby zapewnić większą odporność.  

  • Zapoznaj się z wbudowanymi możliwościami replikacji i nadmiarowości usług platformy stanowej, których używasz. Aby uzyskać szczegółowe możliwości nadmiarowości usług danych stanowych, zobacz Powiązane linki.

Sieć

  • Zdecyduj się na niezawodną i skalowalną topologię sieci. Użyj modelu piasty i szprych lub modelu usługi Azure Virtual WAN, aby ułatwić organizowanie infrastruktury chmury w wzorcach logicznych, które ułatwiają tworzenie i skalowanie projektu nadmiarowości.

  • Wybierz odpowiednią usługę sieciową , aby równoważyć i przekierowywać żądania w obrębie lub między regionami. Używaj globalnych lub strefowo nadmiarowych usług równoważenia obciążenia, jeśli jest to możliwe, aby spełnić cele dotyczące niezawodności.

  • Upewnij się, że przydzielono wystarczającą przestrzeń adresów IP w sieciach wirtualnych i podsieciach, aby uwzględnić planowane użycie, w tym wymagania dotyczące skalowania w poziomie.

  • Upewnij się, że aplikacja może skalować się w granicach portów wybranej platformy hostingowej aplikacji. Jeśli aplikacja inicjuje kilka wychodzących połączeń TCP lub UDP, może wyczerpać wszystkie dostępne porty i spowodować niską wydajność aplikacji.

  • Wybierz jednostki SKU i skonfiguruj usługi sieciowe, które mogą spełniać wymagania dotyczące przepustowości i dostępności. Przepływność bramy sieci VPN zależy od ich jednostki SKU. Obsługa nadmiarowości strefy jest dostępna tylko dla niektórych jednostek SKU modułu równoważenia obciążenia.

  • Upewnij się, że projekt obsługi systemu DNS został utworzony z naciskiem na odporność i obsługuje nadmiarową infrastrukturę.

Ułatwienia platformy Azure

Platforma Azure pomaga zoptymalizować odporność obciążenia i dodać nadmiarowość przez:

Ułatwienia dla platformy Azure specyficzne dla systemu DNS

  • W przypadku scenariuszy rozpoznawania nazw wewnętrznych użyj stref prywatnych usługi Azure DNS, które mają wbudowaną nadmiarowość stref i nadmiarowość geograficzną. Aby uzyskać więcej informacji, zobacz Odporność strefy prywatnej usługi Azure DNS.

  • W przypadku scenariuszy rozpoznawania nazw zewnętrznych użyj stref publicznych usługi Azure DNS, które mają wbudowaną nadmiarowość stref i nadmiarowość geograficzną.

  • Publiczne i prywatne usługi DNS platformy Azure to usługi globalne, które są odporne na awarie regionalne, ponieważ dane strefy są globalnie dostępne.

  • W przypadku scenariuszy rozpoznawania nazw hybrydowych między środowiskami lokalnymi i w chmurze użyj usługi Azure DNS Private Resolver. Ta usługa obsługuje nadmiarowość stref, jeśli obciążenie znajduje się w regionie obsługującym strefy dostępności. Awaria w całej strefie nie wymaga żadnej akcji podczas odzyskiwania strefy. Usługa automatycznie leczy się i ponownie równoważy, aby korzystać ze strefy w dobrej kondycji. Aby uzyskać więcej informacji, zobacz Odporność w usłudze Azure DNS Private Resolver.

  • Aby wyeliminować pojedynczy punkt awarii i osiągnąć bardziej odporne rozpoznawanie nazw hybrydowych w różnych regionach, wdróż co najmniej dwa prywatne narzędzia rozpoznawania nazw usługi Azure DNS w różnych regionach. Tryb failover DNS w scenariuszu przekazywania warunkowego jest osiągany przez przypisanie rozpoznawania nazw jako podstawowego serwera DNS. Przypisz inny program rozpoznawania nazw w innym regionie jako pomocniczy serwer DNS. Aby uzyskać więcej informacji, zobacz Konfigurowanie trybu failover DNS przy użyciu prywatnych rozpoznawania nazw.

Przykład

Aby zapoznać się z przykładem wdrożenia nadmiarowego w wielu regionach, zobacz Punkt odniesienia wysoce dostępnej aplikacji internetowej strefowo nadmiarowej.

Na poniższym diagramie przedstawiono inny przykład:

Diagram przedstawiający architekturę implementacji referencyjnej.

Aby dowiedzieć się więcej na temat nadmiarowości, zobacz następujące zasoby:

Lista kontrolna dotycząca niezawodności

Zapoznaj się z pełnym zestawem zaleceń.