Udostępnij za pośrednictwem


Zalecenia dotyczące projektowania nadmiarowości

Dotyczy tego zalecenia listy kontrolnej dotyczącej 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: Projekt | wieloregionowy o wysokiej dostępności przy 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łnij wymagania zdefiniowanych celów dotyczących niezawodności, stosując odpowiednie poziomy 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 poszczególnych składników.
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.
Fragment 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. Skorzystaj z informacji zidentyfikowanych na temat krytycznych przepływów i celów dotyczących 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ępuje 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 wychłonąć 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ć. W przypadku rozłożenia ruchu między 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ć na poziomie 120 procent. Rozłóż obciążenie przy użyciu innego węzła, aby upewnić się, że cele dotyczące wydajności i niezawodności zostały utrzymane.

Kompromisy:

  • Większa nadmiarowość obciążeń odpowiada większym kosztom. 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 w celu zminimalizowania nieefektywności 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 powodować złożoność ogólnego projektu.

Projekt architektury nadmiarowej

Podczas projektowania nadmiarowej architektury 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 wdrażania to grupy zasobów, które są wymagane do dostarczenia obciążenia do danego podzestawu klientów. Na przykład podzbiór może być podzbiorem regionalnym lub podzbiorem zawierającym wszystkie te same wymagania dotyczące prywatności danych co obciążenie. Każda sygnatura jest jednostką skalowania , którą można zduplikować 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 przezwyciężyć 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 projektu obciążenia 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 najlepiej dopasowane do usług obliczeniowych IaaS (infrastructure as a service). W przypadku aplikacji konteneryzowanej określ konkretne funkcje, które należy kontrolować, aby określić, czy należy używać usługi 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 zestawom skalowania maszyn wirtualnych możesz automatycznie równomiernie rozłożyć zasoby obliczeniowe 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 wyeliminowania błędów wystąpień nadmiarowych, nawet przed rozpoczęciem operacji skalowania automatycznego, więc system nadal działa po awarii składnika. Oblicz akceptowalny wpływ błędu podczas dołączania nadmiernej aprowizacji do projektu nadmiarowości. Podobnie jak w przypadku procesu podejmowania decyzji dotyczących nadmiarowości, cele dotyczące niezawodności i decyzje dotyczące kompromisów finansowych 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 zamiast zwiększania 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 warstwy wyższej.

  • Wdrażanie usług 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

  • Określ, czy replikacja danych synchronicznych lub asynchronicznych jest niezbędna do działania obciążenia. Aby ułatwić określenie tej decyzji, zobacz Zalecenia dotyczące korzystania ze stref dostępności i regionów.

  • Weź pod uwagę wskaźnik wzrostu danych. W przypadku planowania pojemności zaplanuj wzrost 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 zlokalizowanych geograficznie awarii.

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

  • Automatyzowanie trybu failover po niepowodzeniu 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.

  • Weź pod uwagę wymagania dotyczące spójności danych i używaj spójności ostatecznej, gdy zezwalają na to wymagania. Gdy dane są dystrybuowane, użyj odpowiedniej koordynacji, aby wymusić silne gwarancje spójności. Koordynacja może zmniejszyć przepływność i ściśle połączyć systemy, 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 podzbiór łącznej liczby 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 używanych usług platformy stanowej. 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żyj 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ń adresową 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 być skalowana w granicach portów wybranej platformy hostingu 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 różni się w zależności od jednostki SKU. Obsługa nadmiarowości stref 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 myślą o odporności i obsłudze nadmiarowej infrastruktury.

Ułatwienia platformy Azure

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

  • Zapewnienie wbudowanej nadmiarowości z wieloma rozwiązaniami PaaS i oprogramowaniem jako usługą (SaaS), z których niektóre można konfigurować.

  • Umożliwia projektowanie i implementowanie nadmiarowości wewnątrz regionów przy użyciu stref dostępności i nadmiarowości między regionami.

  • Oferowanie usług równoważenia obciążenia obsługującego replikę, takich jak aplikacja systemu Azure Gateway, Azure Front Door i Azure Load Balancer.

  • Oferuje łatwe zaimplementowanie rozwiązań replikacji geograficznej, takich jak aktywna replikacja geograficzna dla usługi Azure SQL Database. Zaimplementuj dystrybucję globalną i przezroczystą replikację przy użyciu usługi Azure Cosmos DB. Usługa Azure Cosmos DB oferuje dwie opcje obsługi zapisów powodujących konflikt. Wybierz najlepszą opcję dla obciążenia.

  • Oferuje możliwości przywracania do punktu w czasie dla wielu usług danych PaaS.

  • Ograniczanie wyczerpania portów za pośrednictwem bramy translatora adresów sieciowych platformy Azure lub usługi Azure Firewall.

Ułatwienia dotyczące 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ść strefy 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 Azure DNS 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 chmurowymi należy użyć usługi Rozpoznawanie prywatne usługi Azure DNS. Ta usługa obsługuje nadmiarowość stref, jeśli obciążenie znajduje się w regionie obsługującym strefy dostępności. Awaria całej strefy nie wymaga żadnej akcji podczas odzyskiwania strefy. Usługa automatycznie samodzielnie leczy 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 aplikacji internetowej strefowo nadmiarowej o wysokiej dostępności.

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ń.