Zalecenia dotyczące projektowania z myślą o nadmiarowości
Dotyczy tego zalecenia 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, aby pomóc spełnić cele dotyczące niezawodności. Rozważ przestarzałe składniki infrastruktury, takie jak przetwarzanie i sieci, a także wiele instancji twojego rozwiązania. |
---|
Powiązane przewodniki :Projektowanie wieloregionowe o wysokiej dostępności | Korzystanie ze 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ę redundancję, aby dać swojemu obciążeniu silną, niezawodną podstawę, na której można się oprzeć. Podczas tworzenia obciążenia bez nadmiarowości infrastruktury występuje duże ryzyko wydłużenia przestoju z powodu potencjalnych awarii.
Definicje
Termin | Definicja |
---|---|
Redundancja | Implementacja wielu identycznych wystąpień składnika obciążenia. |
Trwałość wielolotowa | 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 stopnia synchronizacji lub braku synchronizacji danego zestawu danych między różnymi sklepami. |
Partycjonowanie | Proces fizycznego dzielenia danych na oddzielne magazyny danych. |
Odłamek | 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 opanować problemy wpływające na pojedynczy zasób i uniknąć wpływu tych problemów 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. Charakter przepływu, który obsługują, może wymagać, aby każdy z nich posiadał repliki przygotowane do przyjęcia ruchu w przypadku problemu, który wpływa na całą pulę, na przykład w przypadku awarii regionalnej. 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 redundancji w kontekście wydajności systemu, rozłóż obciążenie między wiele nadmiarowych węzłów, aby zapewnić, że każdy węzeł działa optymalnie. W kontekście niezawodności, zbuduj zapasową pojemność do absorbowania awarii, które wpływają na jeden lub więcej węzłów. Upewnij się, że pojemność zapasowa może zaabsorbować awarie przez cały czas potrzebny do odzyskania węzłów dotkniętych awarią. 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ększy nadmiar pracy oznacza większe koszty. Starannie rozważ dodanie nadmiarowości i regularnie przeglądaj architekturę, aby upewnić się, że zarządzasz kosztami, szczególnie gdy korzystasz z nadmiernych zapasów. Jeśli używasz nadprzydziału jako strategii odpornościowej, zrównoważ go z dobrze zdefiniowaną strategią skalowania , aby zminimalizować nieefektywności kosztów.
- W przypadku budowania z wysokim stopniem nadmiarowości mogą pojawić się 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.
Projektowanie redundancji w architekturze
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 krytyczności przepływu użytkownika i przepływu systemu wspieranych przez komponenty 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 o wysokiej dostępności w wielu regionach.
Sygnatury wdrożenia i jednostki skali
Niezależnie od tego, czy wdrażasz w modelu aktywny-aktywny czy aktywny-pasywny, postępuj zgodnie ze wzorcem projektowym Deployment Stamps, aby zapewnić, że obciążenie jest wdrażane w sposób powtarzalny i skalowalny. Jednostki wdrożeniowe to grupy zasobów, które są wymagane do dostarczenia aplikacji przeznaczonej dla 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żdy znaczek można traktować jako jednostkę skalowania, którą można zduplikować w celu horyzontalnego skalowania obciążenia lub do wykonywania wdrożeń blue-green. Zaprojektuj obciążenie przy użyciu pieczęci wdrożeniowych, aby zoptymalizować implementację aktywno-aktywną lub aktywno-pasywną, poprawiając odporność i zmniejszając obciążenie zarządzaniem. Planowanie skalowania w poziomie w wielu regionach jest także istotne, aby przezwyciężyć potencjalne tymczasowe ograniczenia dostępności zasobów w danym 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 z 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.
Wdrożenie redundancji strefowej dla zasobów obliczeniowych
Wybierz odpowiednią usługę obliczeniową dla swojego obciążenia. W zależności od typu obciążenia roboczego, może być kilka dostępnych 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.
Utrzymuj warstwę obliczeniową wolną od jakiegokolwiek stanu, ponieważ poszczególne węzły, które obsługują żą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.
Nadmiarowe przydzielenie krytycznych zasobów w celu złagodzenia awarii nadmiarowych instancji, jeszcze przed rozpoczęciem operacji automatycznego skalowania, aby system nadal działał po awarii elementu. Oblicz akceptowalny efekt błędu, gdy włączasz rezerwowanie nadmiarowe 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 nadmiarowym aprowizowaniem. Nadmierna aprowizacja odnosi się konkretnie do skalowania w poziomie, co oznacza dodanie dodatkowych wystąpień określonego typu zasobu obliczeniowego, a nie zwiększanie 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.
Wdrażanie strefowej nadmiarowości dla zasobów danych
Określ, czy replikacja danych synchronicznych lub asynchronicznych jest niezbędna do działania obciążenia. Aby ułatwić określenie tego, zobacz sekcję 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 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, jak wspiera wasza usługa, aby zminimalizować wpływ geograficznie lokalizowanych awarii.
Replikowanie danych między regionami geograficznymi w celu zapewnienia odporności na awarie regionalne i katastrofalne awarie.
Zautomatyzuj przełączanie awaryjne po awarii instancji 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 swoich danych. Korzystaj z poliglotycznej trwałości lub rozwiązań wykorzystujących różne technologie baz danych. Dane zawierają więcej niż tylko utrwalone dane aplikacji. Obejmuje również dzienniki aplikacji, zdarzenia, komunikaty i pamięci podręczne.
Uwzględnij wymagania dotyczące spójności danych i użyj 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 obsługiwać spójność docelową.
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 część całkowitych transakcji.
Jeśli fragmentowanie nie jest opcją, możesz użyć wzorca Command and Query Responsibility Segregation (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 stanowych usług platformy, których używasz. Aby uzyskać szczegółowe informacje na temat możliwości nadmiarowości usług danych stanowych, zobacz sekcję Powiązane linki.
Wdrożenie nadmiarowości strefowej dla zasobów sieciowych
Zdecyduj się na niezawodną i skalowalną topologię sieci. Użyj modelu hub-and-spoke lub modelu Azure Virtual WAN, aby zorganizować infrastrukturę chmurową w sposób logiczny, co ułatwia projektowanie i skalowanie rozwiązań nadmiarowych.
Wybierz odpowiednią usługę sieciową , aby równoważyć i przekierowywać żądania w obrębie lub w różnych regionach. 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 VPN różni się w zależności od SKU. Obsługa redundancji strefowej jest dostępna tylko dla niektórych SKU równoważnika 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 regionu przy użyciu stref dostępności i oraz nadmiarowości między regionami.
Oferowanie usług równoważenia obciążenia obsługującego replikę, takich jak azure Application Gateway, usługi Azure Front Door i azure Load Balancer.
Oferowanie łatwych do zaimplementowania 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 obsługi zapisów powodujących konflikt. Wybierz najlepszą opcję dla swojego obciążenia pracą.
Oferuje funkcje przywracania do określonego momentu w czasie dla wielu usług danych PaaS.
Ograniczanie wyczerpania portów za pośrednictwem usługi Azure NAT Gateway lub usługi Azure Firewall.
Ułatwienia dotyczące platformy Azure specyficzne dla systemu DNS
W przypadku rozwiązań rozpoznawania nazw wewnętrznych użyj stref prywatnych usługi Azure DNS, które mają wbudowaną nadmiarowość strefy i georedundancję. Aby uzyskać więcej informacji, zobacz niezawodność prywatnej strefy DNS Azure.
W przypadku scenariuszy rozpoznawania nazw zewnętrznych użyj publicznych stref usługi Azure DNS, które mają wbudowaną replikację stref i replikację 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 a chmurowymi należy użyć usługi Azure DNS Private Resolver. Ta usługa obsługuje redundancję strefową, jeśli Twoje obciążenie znajduje się w regionie, który obsługuje strefy dostępności. Awaria całej strefy nie wymaga żadnej akcji podczas odzyskiwania strefy. Usługa automatycznie samonaprawia się i ponownie równoważy, aby korzystać ze zdrowej strefy. Aby uzyskać więcej informacji, zobacz Odporność usługi 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 rozwiązania Azure DNS w odmiennych regionach. Przełączanie awaryjne DNS w scenariuszu przekazywania warunkowego jest osiągane przez przypisanie resolvera jako podstawowego serwera DNS. Przypisz inny resolver DNS w innym regionie jako pomocniczy serwer. Aby uzyskać więcej informacji, zobacz Skonfiguruj przełączanie awaryjne DNS przy użyciu prywatnych rozwiązywaczy.
Przykład
Aby zapoznać się z przykładem wdrożenia nadmiarowego obejmującego wiele regionów, zobacz Podstawowy model wysoce dostępnej strefowo-nadmiarowej aplikacji internetowej.
Na poniższym diagramie przedstawiono inny przykład:
Powiązane linki
Aby dowiedzieć się więcej o redundancji, zapoznaj się z następującymi zasobami.
- przewodnik regionów platformy Azure
- Nadmiarowość Azure Storage
- Magazynowanie z nadmiarowością strefową
- Azure SQL Database aktywna replikacja geograficzna
- Konfigurowanie replikacji między dwoma wystąpieniami zarządzanymi
Lista kontrolna dotycząca niezawodności
Zapoznaj się z pełnym zestawem zaleceń.