Udostępnij za pośrednictwem


Modelowanie kondycji dla obciążeń o krytycznym znaczeniu

Monitorowanie aplikacji i infrastruktury jest ważną częścią każdego wdrożenia infrastruktury. W przypadku obciążenia o krytycznym znaczeniu monitorowanie jest krytyczną częścią wdrożenia. Monitorowanie kondycji aplikacji i kluczowych metryk zasobów platformy Azure pomaga zrozumieć, czy środowisko działa zgodnie z oczekiwaniami.

Aby w pełni zrozumieć te metryki i ocenić ogólną kondycję obciążenia, wymaga całościowego zrozumienia wszystkich monitorowanych danych. Model kondycji może pomóc w ocenie ogólnego stanu kondycji, wyświetlając wyraźne wskazanie kondycji obciążenia zamiast nieprzetworzonych metryk. Stan jest często przedstawiany jako wskaźniki "światła drogowego", takie jak czerwony, zielony lub żółty. Reprezentacja modelu kondycji z jasnymi wskaźnikami ułatwia operatorowi zrozumienie ogólnej kondycji obciążenia i szybkie reagowanie na pojawiające się problemy.

Modelowanie kondycji można rozszerzyć na następujące zadania operacyjne dla wdrożenia o krytycznym znaczeniu:

  • Application Usługa kondycji — składnik aplikacji w klastrze obliczeniowym, który udostępnia interfejs API w celu określenia kondycji sygnatury.

  • Monitorowanie — zbieranie liczników wydajności i aplikacji, które oceniają kondycję i wydajność aplikacji i infrastruktury.

  • Alerty — alerty z możliwością działania dotyczące problemów lub awarii w infrastrukturze i aplikacji.

  • Analiza niepowodzeń — podział i analiza wszelkich awarii, w tym dokumentacja głównej przyczyny.

Te zadania stanowią kompleksowy model kondycji infrastruktury o krytycznym znaczeniu. Opracowywanie modelu kondycji może i powinno być wyczerpującą i integralną częścią każdego wdrożenia o znaczeniu krytycznym.

Aby uzyskać więcej informacji, zobacz Modelowanie kondycji i obserwowanie obciążeń o znaczeniu krytycznym na platformie Azure.

Usługa kondycji aplikacji

Aplikacja Usługa kondycji (HealthService) to składnik aplikacji, który znajduje się z usługą katalogu (CatalogService) i procesorem w tle (BackgroundProcessor) w klastrze obliczeniowym. Usługa HealthService udostępnia interfejs API REST dla usługi Azure Front Door do wywołania w celu określenia kondycji sygnatury. HealthService to złożony składnik, który odzwierciedla stan zależności, oprócz własnego.

Gdy klaster obliczeniowy nie działa, usługa kondycji nie odpowie. Gdy usługi są uruchomione, przeprowadza okresowe kontrole względem następujących składników w infrastrukturze:

  • Próbuje wykonać zapytanie względem usługi Azure Cosmos DB.

  • Próbuje wysłać komunikat do usługi Event Hubs. Komunikat jest filtrowany przez proces roboczy w tle.

  • Wyszukuje plik stanu na koncie magazynu. Ten plik może służyć do wyłączania regionu, nawet jeśli inne testy nadal działają poprawnie. Ten plik może służyć do komunikowania się z innymi procesami. Jeśli na przykład sygnatura ma zostać opuszczona do celów konserwacji, plik można usunąć, aby wymusić stan złej kondycji i przekierować ruch.

  • Wysyła zapytanie do modelu kondycji, aby określić, czy wszystkie metryki operacyjne znajdują się w wstępnie określonych progach. Gdy model kondycji wskazuje, że sygnatura jest w złej kondycji, ruch nie powinien być kierowany do sygnatury, mimo że inne testy, które usługa HealthService wykonuje pomyślnie. Model kondycji ma bardziej pełny widok stanu kondycji.

Wszystkie wyniki kontroli kondycji są buforowane w pamięci przez konfigurowalną liczbę sekund, domyślnie 10. Ta operacja może spowodować dodanie małego opóźnienia w wykrywaniu awarii, ale gwarantuje, że nie każde zapytanie HealthService wymaga wywołań zaplecza, co zmniejsza obciążenie klastra i usług podrzędnych.

Ten wzorzec buforowania jest ważny, ponieważ liczba zapytań Usługi kondycji znacznie rośnie w przypadku korzystania z routera globalnego, takiego jak Azure Front Door: każdy węzeł brzegowy w każdym centrum danych platformy Azure, które obsługuje żądania, wywoła Usługa kondycji w celu określenia, czy ma funkcjonalne połączenie zaplecza. Buforowanie wyników zmniejsza dodatkowe obciążenie klastra generowane przez kontrole kondycji.

Konfigurowanie

HealthService i CatalogService mają wspólne ustawienia konfiguracji między składnikami, z wyjątkiem następujących ustawień używanych wyłącznie przez usługę HealthService:

Ustawienie Wartość
HealthServiceCacheDurationSeconds Określa czas wygaśnięcia pamięci podręcznej w sekundach.
HealthServiceStorageConnectionString Parametry połączenia dla konta magazynu, w którym powinien znajdować się plik stanu.
HealthServiceBlobContainerName Kontener magazynu, w którym powinien znajdować się plik stanu.
HealthServiceBlobName Nazwa pliku stanu — sprawdzanie kondycji będzie szukać tego pliku.
HealthServiceOverallTimeoutSeconds Limit czasu dla całego sprawdzania — wartość domyślna to 3 sekundy. Jeśli sprawdzanie nie zostanie zakończone w tym interwale, usługa zgłasza złą kondycję.

Implementacja

Wszystkie kontrole są wykonywane asynchronicznie i równolegle. Jeśli którykolwiek z nich zakończy się niepowodzeniem, cała sygnatura zostanie uznana za niedostępną.

Wyniki sprawdzania są buforowane w pamięci przy użyciu standardowego, nieprostrybuowanego ASP.NET Core MemoryCache. Wygaśnięcie pamięci podręcznej jest kontrolowane przez SysConfig.HealthServiceCacheDurationSeconds program i jest domyślnie ustawione na 10 sekund.

Uwaga

Ustawienie SysConfig.HealthServiceCacheDurationSeconds konfiguracji zmniejsza dodatkowe obciążenie generowane przez kontrole kondycji, ponieważ nie każde żądanie spowoduje wywołanie podrzędne usług zależnych.

Poniższa tabela zawiera szczegółowe informacje na temat kontroli kondycji składników w infrastrukturze:

Składnik Sprawdzanie kondycji
Obiekt blob konta magazynu Sprawdzanie obiektu blob obecnie służy dwóm celom:
1. Przetestuj, czy jest możliwe dotarcie do usługi Blob Storage. Konto magazynu jest używane przez inne składniki w sygnaturze i jest uznawane za krytyczny zasób.
2. Ręcznie "wyłącz" region, usuwając plik stanu.
Podjęto decyzję projektową, że sprawdzanie będzie szukać tylko obecności pliku stanu w określonym kontenerze obiektów blob. Zawartość pliku nie jest przetwarzana. Istnieje możliwość skonfigurowania bardziej zaawansowanego systemu, który odczytuje zawartość pliku i zwraca inny stan na podstawie zawartości pliku.
Przykłady zawartości to DOBRA KONDYCJA, ZŁA KONDYCJA I KONSERWACJA.
Usunięcie pliku stanu spowoduje wyłączenie sygnatury. Upewnij się, że plik kondycji jest obecny po wdrożeniu aplikacji. Brak pliku kondycji spowoduje, że usługa zawsze odpowiada w złej kondycji. Usługa Front Door nie rozpozna zaplecza jako dostępnego.
Plik jest tworzony przez narzędzie Terraform i powinien być obecny po wdrożeniu infrastruktury.
Centrum zdarzeń Raportowanie kondycji usługi Event Hubs jest obsługiwane przez usługę EventHubProducerService. Ta usługa zgłasza dobrą kondycję, jeśli jest w stanie wysłać nową wiadomość do usługi Event Hubs. Do filtrowania ten komunikat ma dodaną właściwość identyfikującą:
HEALTHCHECK=TRUE
ten komunikat jest ignorowany na końcu odbierania. Ustawienie AlwaysOn.BackgroundProcessor.EventHubProcessorService.ProcessEventHandlerAsync() konfiguracji sprawdza właściwość HEALTHCHECK .
Azure Cosmos DB Raportowanie kondycji usługi Azure Cosmos DB jest obsługiwane przez usługę CosmosDbService, która zgłasza dobrą kondycję, jeśli jest to:
1. Możliwość nawiązywania połączenia z bazą danych usługi Azure Cosmos DB i wykonywania zapytania.
2. Możliwość zapisania dokumentu testowego w bazie danych.
Dokument testowy ma krótki zestaw czasu wygaśnięcia, a usługa Azure Cosmos DB automatycznie je usuwa.
Usługa HealthService wykonuje dwie oddzielne sondy. Jeśli usługa Azure Cosmos DB jest w stanie, w którym operacje odczytu i zapisu nie działają, te dwie sondy zapewniają wyzwolenie alertu.

Zapytania usługi Azure Cosmos DB

W przypadku zapytania tylko do odczytu używane jest następujące zapytanie, które nie pobiera żadnych danych i nie ma dużego wpływu na ogólne obciążenie:

SELECT GetCurrentDateTime ()

Zapytanie zapisu tworzy manekin ItemRating z minimalną zawartością:

var testRating = new ItemRating()
{
    Id = Guid.NewGuid(),
    CatalogItemId = Guid.NewGuid(), // Create some random (=non-existing) item id
    CreationDate = DateTime.UtcNow,
    Rating = 1,
    TimeToLive = 10 // will be auto-deleted after 10sec
};

await AddNewRatingAsync(testRating);

Monitorowanie

Usługa Azure Log Analytics jest używana jako centralne dzienniki i metryki magazynu dla wszystkich składników aplikacji i infrastruktury. aplikacja systemu Azure Insights jest używana dla wszystkich danych monitorowania aplikacji. Każda sygnatura w infrastrukturze ma dedykowany obszar roboczy usługi Log Analytics i wystąpienie usługi Application Insights. Oddzielny obszar roboczy usługi Log Analytics jest używany dla zasobów udostępnionych globalnie, takich jak usługi Front Door i Azure Cosmos DB.

Wszystkie sygnatury są krótkotrwałe i stale zastępowane każdym nowym wydaniem. Obszary robocze usługi Log Analytics na sygnaturę są wdrażane jako zasób globalny w oddzielnej grupie zasobów monitorowania jako sygnatura zasobów usługi Log Analytics. Te zasoby nie współużytkują cyklu życia sygnatury.

Aby uzyskać więcej informacji, zobacz Ujednolicony ujście danych na potrzeby skorelowanej analizy.

Monitorowanie: źródła danych

  • Ustawienia diagnostyczne: wszystkie usługi platformy Azure używane na potrzeby usługi Azure Mission-Critical są skonfigurowane do wysyłania wszystkich danych diagnostycznych, w tym dzienników i metryk do obszaru roboczego usługi Log Analytics specyficznego dla wdrożenia (globalnego lub sygnatury). Ten proces odbywa się automatycznie w ramach wdrożenia programu Terraform. Nowe opcje zostaną zidentyfikowane automatycznie i dodane w ramach elementu terraform apply.

  • Monitorowanie rozwiązania Kubernetes: ustawienia diagnostyczne służą do wysyłania dzienników i metryk usługi Azure Kubernetes Service (AKS) do usługi Log Analytics. Usługa AKS jest skonfigurowana do używania usługi Container Insights. Usługa Container Insights wdraża moduł OMSAgentForLinus za pośrednictwem zestawu DaemonSet platformy Kubernetes w każdym węźle w klastrach usługi AKS. Narzędzie OMSAgentForLinux może zbierać dodatkowe dzienniki i metryki z klastra Kubernetes i wysyła je do odpowiedniego obszaru roboczego usługi Log Analytics. Te dodatkowe dzienniki i metryki zawierają bardziej szczegółowe dane dotyczące zasobników, wdrożeń, usług i ogólnej kondycji klastra. Aby uzyskać więcej szczegółowych informacji z różnych składników, takich jak ingress-nginx, cert-manager i inne składniki wdrożone na platformie Kubernetes obok obciążenia o krytycznym znaczeniu, można użyć narzędzia Prometheus scraping. Narzędzie Prometheus scraping konfiguruje OMSAgentForLinux do złomowania metryk Rozwiązania Prometheus z różnych punktów końcowych w klastrze.

  • Telemetria usługi Application Insights: usługa Application Insights służy do zbierania danych telemetrycznych z aplikacji. Kod został instrumentowany w celu zbierania danych dotyczących wydajności aplikacji za pomocą zestawu SDK usługi Application Insights. Informacje krytyczne, takie jak wynikowy kod stanu i czas trwania wywołań zależności i liczniki dla nieobsługiwane wyjątki, są zbierane. Te informacje są używane w modelu kondycji i są dostępne do zgłaszania alertów i rozwiązywania problemów.

Monitorowanie: testy dostępności usługi Application Insights

Aby monitorować dostępność poszczególnych sygnatur i ogólnego rozwiązania z zewnątrz, testy dostępności usługi Application Insights są konfigurowane w dwóch miejscach:

  • Regionalne testy dostępności: te testy są konfigurowane w regionalnych wystąpieniach usługi Application Insights i są używane do monitorowania dostępności sygnatur. Te testy dotyczą klastrów i kont magazynu statycznego sygnatur bezpośrednio. Aby bezpośrednio wywołać punkty ruchu przychodzącego klastrów, żądania muszą mieć prawidłowy nagłówek identyfikatora usługi Front Door. W przeciwnym razie są one odrzucane przez kontroler ruchu przychodzącego.

  • Globalny test dostępności: te testy są konfigurowane w globalnym wystąpieniu usługi Application Insights i służą do monitorowania dostępności ogólnego rozwiązania przez wysyłanie poleceń ping do usługi Front Door. Używane są dwa testy: jeden do testowania wywołania interfejsu API względem usługi CatalogService i jednego do testowania strony głównej witryny internetowej.

Monitorowanie: zapytania

Usługa Azure Mission-Critical używa różnych zapytań język zapytań Kusto (KQL) do implementowania niestandardowych zapytań jako funkcji do pobierania danych z usługi Log Analytics. Te zapytania są przechowywane jako pojedyncze pliki w naszym repozytorium kodu, oddzielone wdrożeniami globalnymi i sygnaturami. Są one importowane i stosowane automatycznie za pośrednictwem narzędzia Terraform w ramach każdego uruchomienia potoku infrastruktury.

Takie podejście oddziela logikę zapytania od warstwy wizualizacji. Zapytania usługi Log Analytics są wywoływane bezpośrednio z kodu, na przykład z interfejsu API usługi HealthService. Innym przykładem jest narzędzie do wizualizacji, takie jak pulpity nawigacyjne platformy Azure, skoroszyty monitora lub narzędzie Grafana.

Monitorowanie: wizualizacja

Aby wizualizować wyniki zapytań dotyczących kondycji usługi Log Analytics, użyliśmy narzędzia Grafana w naszej implementacji referencyjnej. Aplikacja Grafana służy do wyświetlania wyników zapytań usługi Log Analytics i nie zawiera żadnej logiki. Stos Grafana nie jest częścią cyklu życia wdrożenia rozwiązania, ale został wydany oddzielnie.

Aby uzyskać więcej informacji, zobacz Wizualizacja.

Generowanie alertów

Alerty są ważną częścią ogólnej strategii operacji. Proaktywne monitorowanie, takie jak korzystanie z pulpitów nawigacyjnych, powinno być używane z alertami, które zwracają natychmiastową uwagę na problemy.

Te alerty tworzą rozszerzenie modelu kondycji, ostrzegając operatora o zmianie stanu kondycji na obniżoną/żółtą lub w złej kondycji/czerwonym stanie. Ustawiając alert w węźle głównym modelu kondycji, operator natychmiast zdaje sobie sprawę z dowolnego poziomu biznesowego, który ma wpływ na stan rozwiązania: Po tym wszystkim ten węzeł główny zmieni kolor na żółty lub czerwony, jeśli którykolwiek z podstawowych przepływów użytkownika lub zasobów raportuje żółtą lub czerwoną metrykę. Operator może zwrócić uwagę na wizualizację Modelu kondycji na potrzeby rozwiązywania problemów.

Aby uzyskać więcej informacji, zobacz Automatyczna odpowiedź na zdarzenia.

Analiza niepowodzeń

Tworzenie analizy niepowodzeń jest głównie teoretycznym ćwiczeniem planowania. To ćwiczenie teoretyczne powinno być używane jako dane wejściowe dla automatycznych iniekcji błędów, które są częścią procesu ciągłej walidacji. Symulując tryby awarii zdefiniowane w tym miejscu, możemy zweryfikować odporność rozwiązania na te błędy, aby upewnić się, że nie doprowadzą one do awarii.

W poniższej tabeli wymieniono przykładowe przypadki awarii różnych składników implementacji referencyjnej Azure Mission-Critical.

Usługa Ryzyko Wpływ/Środki zaradcze/Komentarz Awaria
Tożsamość Microsoft Entra Identyfikator Entra firmy Microsoft staje się niedostępny. Obecnie nie ma możliwości ograniczenia ryzyka. Podejście obejmujące wiele regionów nie ogranicza przestojów, ponieważ jest to usługa globalna. Ta usługa jest twardą zależnością. Identyfikator Entra firmy Microsoft jest używany do wykonywania operacji płaszczyzny sterowania, takich jak tworzenie nowych węzłów usługi AKS, ściąganie obrazów kontenerów z usługi ACR lub uzyskiwanie dostępu do usługi Key Vault podczas uruchamiania zasobnika. Oczekuje się, że istniejące, uruchomione składniki powinny być w stanie nadal działać, gdy występują problemy z identyfikatorem Entra firmy Microsoft. Prawdopodobnie nowe zasobniki lub węzły usługi AKS nie będą mogły się zduplikować. W przypadku operacji skalowania w tym czasie może to prowadzić do zmniejszenia środowiska użytkownika i potencjalnie awarii. Częściowe
Usługa DNS platformy Azure Usługa Azure DNS stanie się niedostępna, a rozpoznawanie nazw DNS kończy się niepowodzeniem. Jeśli usługa Azure DNS stanie się niedostępna, rozpoznawanie nazw DNS dla żądań użytkowników i między różnymi składnikami aplikacji prawdopodobnie zakończy się niepowodzeniem. Obecnie nie ma możliwego ograniczenia ryzyka dla tego scenariusza. Podejście obejmujące wiele regionów nie ogranicza przestojów, ponieważ jest to usługa globalna. Usługa Azure DNS jest twardą zależnością. Zewnętrzne usługi DNS jako kopia zapasowa nie pomogłyby, ponieważ wszystkie składniki PaaS używane w usłudze Azure DNS. Pomijanie systemu DNS przez przełączenie na adres IP nie jest opcją. Usługi platformy Azure nie mają statycznych, gwarantowanych adresów IP. Pełny
Drzwi Ogólna awaria usługi Front Door. Jeśli usługa Front Door ulegnie całkowitej awarii, nie ma środków zaradczych. Ta usługa jest twardą zależnością. Tak
Drzwi Błędy konfiguracji routingu/frontonu/zaplecza. Może się zdarzyć z powodu niezgodności konfiguracji podczas wdrażania. Należy przechwycić etapy testowania. Konfiguracja frontonu z systemem DNS jest specyficzna dla każdego środowiska. Środki zaradcze: Wycofywanie z poprzedniej konfiguracji powinno rozwiązać większość problemów. W miarę jak zmiany w usłudze Front Door mogą potrwać kilka minut, spowoduje to awarię. Pełny
Drzwi Zarządzany certyfikat TLS/SSL jest usuwany. Może się zdarzyć z powodu niezgodności konfiguracji podczas wdrażania. Należy przechwycić etapy testowania. Technicznie witryna będzie nadal działać, ale błędy certyfikatu TLS/SSL uniemożliwią użytkownikom dostęp do niej. Środki zaradcze: Ponowne wystawianie certyfikatu może potrwać około 20 minut, a także naprawienie i ponowne uruchomienie potoku. Pełny
Azure Cosmos DB Nazwa bazy danych/kolekcji została zmieniona. Może się zdarzyć z powodu niezgodności konfiguracji podczas wdrażania — program Terraform zastąpi całą bazę danych, co może spowodować utratę danych. Można zapobiec utracie danych przy użyciu blokad na poziomie bazy danych/kolekcji. Aplikacja nie będzie mogła uzyskać dostępu do żadnych danych. Należy zaktualizować konfigurację aplikacji i ponownie uruchomić zasobniki. Tak
Azure Cosmos DB Awaria regionalna Usługa Azure Mission-Critical ma włączone zapisy w wielu regionach. Jeśli wystąpi błąd podczas odczytu lub zapisu, klient ponawia próbę bieżącej operacji. Wszystkie przyszłe operacje są trwale kierowane do następnego regionu w kolejności preferencji. Jeśli lista preferencji miała jeden wpis (lub był pusty), ale konto ma dostępne inne regiony, zostanie przekierowany do następnego regionu na liście kont. Nie.
Azure Cosmos DB Duże ograniczanie przepustowości spowodowane brakiem jednostek RU. W zależności od liczby jednostek RU i równoważenia obciążenia stosowanego na poziomie usługi Front Door niektóre sygnatury mogą być uruchamiane gorąco przy użyciu usługi Azure Cosmos DB, podczas gdy inne sygnatury mogą obsługiwać więcej żądań. Środki zaradcze: Lepszy rozkład obciążenia lub więcej jednostek RU. Nie.
Azure Cosmos DB Pełna partycja Limit rozmiaru partycji logicznej usługi Azure Cosmos DB wynosi 20 GB. Jeśli dane klucza partycji w kontenerze osiągną ten rozmiar, dodatkowe żądania zapisu kończą się niepowodzeniem z powodu błędu "Klucz partycji osiągnął maksymalny rozmiar". Częściowe (zapisy bazy danych są wyłączone)
Azure Container Registry Awaria regionalna Rejestr kontenerów używa usługi Traffic Manager do przełączania w tryb failover między regionami repliki. Każde żądanie powinno zostać automatycznie przekierowane do innego regionu. Najgorsze obrazy platformy Docker nie mogą być ściągane przez kilka minut przez węzły usługi AKS, podczas gdy odbywa się tryb failover usługi DNS. Nie.
Azure Container Registry Usunięte obrazy Nie można ściągnąć żadnych obrazów. Ta awaria powinna mieć wpływ tylko na nowo zduplikowane/ponownie uruchomione węzły. Istniejące węzły powinny mieć obrazy buforowane. **Środki zaradcze: jeśli wykryto szybkie ponowne uruchomienie najnowszych potoków kompilacji, powinno przywrócić obrazy do rejestru. Nie.
Azure Container Registry Ograniczanie przepływności Ograniczanie przepustowości może opóźniać operacje skalowania w poziomie, co może spowodować tymczasowe obniżenie wydajności. Środki zaradcze: Usługa Azure Mission-Critical używa jednostki SKU w warstwie Premium, która zapewnia 10 000 operacji odczytu na minutę. Obrazy kontenerów są zoptymalizowane i mają tylko niewielką liczbę warstw. Właściwość ImagePullPolicy jest ustawiona na IfNotPresent, aby najpierw używać lokalnie buforowanych wersji. Komentarz: Ściąganie obrazu kontenera składa się z wielu operacji odczytu w zależności od liczby warstw. Liczba operacji odczytu na minutę jest ograniczona i zależy od rozmiaru jednostki SKU usługi ACR. Nie.
Azure Kubernetes Service Uaktualnianie klastra kończy się niepowodzeniem Uaktualnienia węzła usługi AKS powinny występować w różnych momentach w sygnaturach. Jeśli jedno uaktualnienie zakończy się niepowodzeniem, inny klaster nie powinien mieć wpływu. Uaktualnienia klastra powinny być wdrażane w sposób stopniowy w węzłach, aby zapobiec niedostępności wszystkich węzłów. Nie.
Azure Kubernetes Service Zasobnik aplikacji jest zabijany podczas obsługi żądania. Może to spowodować, że użytkownik końcowy napotka błędy i słabe środowisko użytkownika. Środki zaradcze: Platforma Kubernetes domyślnie usuwa zasobniki w sposób bezproblemowy. Zasobniki są najpierw usuwane z usług, a obciążenie otrzymuje sigTERM z okresem prolongaty w celu zakończenia otwartych żądań i zapisywania danych przed zakończeniem. Kod aplikacji musi zrozumieć SIGTERM, a okres prolongaty może być konieczne dostosowanie, jeśli zamknięcie obciążenia trwa dłużej. Nie.
Azure Kubernetes Service Pojemność obliczeniowa jest niedostępna w regionie, aby dodać więcej węzłów. Skalowanie operacji w górę/w poziomie zakończy się niepowodzeniem, ale nie powinno mieć wpływu na istniejące węzły i ich operacje. W idealnym przypadku ruch powinien być automatycznie przesuwany do innych regionów na potrzeby równoważenia obciążenia. Nie.
Azure Kubernetes Service Subskrypcja osiąga limit przydziału rdzeni procesora CPU, aby dodać nowe węzły. Skalowanie operacji w górę/w poziomie zakończy się niepowodzeniem, ale nie powinno mieć wpływu na istniejące węzły i ich operacje. W idealnym przypadku ruch powinien być automatycznie przesuwany do innych regionów na potrzeby równoważenia obciążenia. Nie.
Azure Kubernetes Service Nie można wystawiać/odnawiać certyfikatów TLS/SSL. Klaster powinien zgłaszać złą kondycję w kierunku usługi Front Door, a ruch powinien przechodzić do innych sygnatur. Środki zaradcze: Zbadaj główną przyczynę problemu/niepowodzenia odnawiania. Nie.
Azure Kubernetes Service Gdy żądania/limity zasobów są niepoprawnie skonfigurowane, zasobniki mogą osiągnąć 100% wykorzystania procesora CPU i żądań niepowodzenia. Mechanizm ponawiania prób aplikacji powinien mieć możliwość odzyskania żądań, które zakończyły się niepowodzeniem. Ponawianie prób może spowodować dłuższy czas trwania żądania bez wystąpienia błędu dla klienta. Nadmierne obciążenie ostatecznie spowoduje awarię. Nie (jeśli obciążenie nie jest nadmierne)
Azure Kubernetes Service Obrazy kontenerów innych firm / rejestr jest niedostępny Niektóre składniki, takie jak cert-manager i ingress-nginx, wymagają pobrania obrazów kontenerów i wykresów helm z zewnętrznych rejestrów kontenerów (ruchu wychodzącego). W przypadku niedostępności co najmniej jednego z tych repozytoriów lub obrazów nowe wystąpienia w nowych węzłach (gdzie obraz nie jest jeszcze buforowany) mogą nie być w stanie uruchomić. Możliwe ograniczenie ryzyka: w niektórych scenariuszach warto zaimportować obrazy kontenerów innych firm do rejestru kontenerów dla poszczególnych rozwiązań. Zwiększa to dodatkową złożoność i powinno być starannie zaplanowane i zoperacjonalizowane. Częściowo (podczas operacji skalowania i aktualizacji/uaktualniania)
Centrum zdarzeń Nie można wysyłać komunikatów do usługi Event Hubs Sygnatura staje się bezużyteczna dla operacji zapisu. Usługa kondycji powinna automatycznie wykryć to i wyjąć sygnaturę z rotacji. Nie.
Centrum zdarzeń Komunikaty nie mogą być odczytywane przez element BackgroundProcessor Komunikaty będą kolejki w górę. Wiadomości nie powinny być utracone, ponieważ są one utrwalane. Obecnie ten błąd nie jest objęty Usługa kondycji. Powinno istnieć monitorowanie/alerty dotyczące procesu roboczego w celu wykrywania błędów podczas odczytywania komunikatów. Środki zaradcze: sygnatura powinna zostać ręcznie wyłączona, dopóki problem nie zostanie rozwiązany. Nie.
Konto magazynu Konto magazynu staje się bezużyteczne przez proces roboczy dla punktu kontrolnego usługi Event Hubs Sygnatura nie będzie przetwarzać komunikatów z usługi Event Hubs. Konto magazynu jest również używane przez usługę HealthService. Oczekiwano, że problemy z magazynem powinny zostać wykryte przez usługę HealthService, a sygnatura powinna zostać wyjęta z rotacji. Można się spodziewać, że inne usługi w sygnaturze będą miały wpływ jednocześnie. Nie.
Konto magazynu Statyczna witryna internetowa napotyka problemy. Jeśli obsługa statycznej witryny internetowej napotka problemy, ten błąd powinien zostać wykryty przez usługę Front Door. Ruch nie zostanie wysłany do tego konta magazynu. Buforowanie w usłudze Front Door może również złagodzić ten problem. Nie.
Magazyn kluczy Usługa Key Vault jest niedostępna dla GetSecret operacji. Na początku nowych zasobników sterownik AKS CSI pobierze wszystkie wpisy tajne z usługi Key Vault i zakończy się niepowodzeniem. Zasobniki nie będą mogły się uruchomić. Obecnie jest dostępna automatyczna aktualizacja co 5 minut. Aktualizacja zakończy się niepowodzeniem. Błędy powinny być wyświetlane, kubectl describe pod ale zasobnik nadal działa. Nie.
Magazyn kluczy Usługa Key Vault jest niedostępna dla GetSecret operacji lub SetSecret . Nie można wykonać nowych wdrożeń. Obecnie ten błąd może spowodować zatrzymanie całego potoku wdrażania, nawet jeśli dotyczy to tylko jednego regionu. Nie.
Magazyn kluczy Ograniczanie usługi Key Vault Usługa Key Vault ma limit 1000 operacji na 10 sekund. Ze względu na automatyczną aktualizację wpisów tajnych można teoretycznie osiągnąć ten limit, jeśli masz wiele (tysięcy) zasobników w sygnaturze. Możliwe środki zaradcze: Zmniejsz częstotliwość aktualizacji jeszcze bardziej lub wyłącz ją całkowicie. Nie.
Aplikacja Błąd konfiguracji Niepoprawne parametry połączenia lub wpisy tajne wprowadzone do aplikacji. Należy ograniczyć przez automatyczne wdrażanie (potok automatycznie obsługuje konfigurację) i niebiesko-zielone wdrożenie aktualizacji. Nie.
Aplikacja Wygasłe poświadczenia (zasób sygnatury) Jeśli na przykład token SAS centrum zdarzeń lub klucz konta magazynu został zmieniony bez prawidłowego aktualizowania ich w usłudze Key Vault, aby zasobniki mogły ich używać, odpowiedni składnik aplikacji zakończy się niepowodzeniem. Ta awaria powinna następnie wpłynąć na Usługa kondycji, a sygnatura powinna zostać automatycznie wyjęta z rotacji. Środki zaradcze: użyj uwierzytelniania opartego na identyfikatorze Entra firmy Microsoft dla wszystkich usług, które go obsługują. Usługa AKS wymaga uwierzytelnienia zasobników przy użyciu Tożsamość obciążeń Microsoft Entra (wersja zapoznawcza). Użycie tożsamości zasobnika zostało uwzględnione w implementacji referencyjnej. Okazało się, że tożsamość zasobnika nie jest obecnie wystarczająco stabilna i została podjęta przeciwko użyciu dla bieżącej architektury referencyjnej. Tożsamość zasobnika może być rozwiązaniem w przyszłości. Nie.
Aplikacja Wygasłe poświadczenia (zasób udostępniony globalnie) Jeśli na przykład klucz interfejsu API usługi Azure Cosmos DB został zmieniony bez prawidłowego zaktualizowania go we wszystkich magazynach kluczy sygnatury, aby zasobniki mogły ich używać, odpowiednie składniki aplikacji zakończy się niepowodzeniem. Ta awaria spowoduje jednoczesne wyłączenie wszystkich sygnatur i awarię całego obciążenia. Aby uzyskać informacje na temat potrzeb kluczy i wpisów tajnych przy użyciu uwierzytelniania firmy Microsoft Entra, zobacz poprzedni element. Pełny
Sieć wirtualna Wyczerpano przestrzeń adresów IP podsieci Jeśli przestrzeń adresowa IP w podsieci zostanie wyczerpana, mogą wystąpić żadne operacje skalowania w poziomie, takie jak tworzenie nowych węzłów lub zasobników usługi AKS. Nie doprowadzi to do awarii, ale może zmniejszyć wydajność i wpłynąć na środowisko użytkownika. Środki zaradcze: zwiększ przestrzeń adresów IP (jeśli to możliwe). Jeśli nie jest to opcja, może to pomóc zwiększyć zasoby na węzeł (większe jednostki SKU maszyny wirtualnej) lub na zasobnik (więcej procesora CPU/pamięci), aby każdy zasobnik mógł obsługiwać więcej ruchu, zmniejszając w ten sposób potrzebę skalowania w poziomie. Nie.

Następne kroki

Wdróż implementację referencyjną, aby uzyskać pełną wiedzę na temat zasobów i ich konfiguracji używanej w tej architekturze.