Hälsomodellering för verksamhetskritiska arbetsbelastningar
Övervakning av program och infrastruktur är en viktig del av alla infrastrukturdistributioner. För en verksamhetskritisk arbetsbelastning är övervakning en viktig del av distributionen. Övervakning av programmets hälsa och viktiga mått för Azure-resurser hjälper dig att förstå om miljön fungerar som förväntat.
För att fullt ut förstå dessa mått och utvärdera den övergripande hälsan för en arbetsbelastning krävs en holistisk förståelse av alla data som övervakas. En hälsomodell kan hjälpa till med utvärderingen av den övergripande hälsostatusen genom att visa en tydlig indikation på hälsotillståndet för arbetsbelastningen i stället för råmått. Statusen visas ofta som "trafikljus"-indikatorer som röd, grön eller gul. En representation av en hälsomodell med tydliga indikatorer gör det intuitivt för en operatör att förstå arbetsbelastningens övergripande hälsa och snabbt svara på problem som uppstår.
Hälsomodellering kan utökas till följande operativa uppgifter för den verksamhetskritiska distributionen:
Program Hälsotjänst – Programkomponent i beräkningsklustret som tillhandahåller ett API för att fastställa hälsotillståndet för en stämpel.
Övervakning – Insamling av prestanda- och programräknare som utvärderar programmets och infrastrukturens hälsa och prestanda.
Aviseringar – Åtgärdsbara aviseringar om problem eller avbrott i infrastrukturen och programmet.
Felanalys – Uppdelning och analys av eventuella fel, inklusive dokumentation om rotorsaken.
Dessa uppgifter utgör en omfattande hälsomodell för den verksamhetskritiska infrastrukturen. Utvecklingen av en hälsomodell kan och bör vara en fullständig och integrerad del av alla verksamhetskritiska distributioner.
Mer information finns i Hälsomodellering och observerbarhet för verksamhetskritiska arbetsbelastningar i Azure.
Program Hälsotjänst
Application Hälsotjänst (HealthService) är en programkomponent som finns med katalogtjänsten (CatalogService) och bakgrundsprocessorn (BackgroundProcessor) i beräkningsklustret. HealthService tillhandahåller ett REST-API för Azure Front Door för att anropa för att fastställa hälsotillståndet för en stämpel. HealthService är en komplex komponent som återspeglar beroendens tillstånd, förutom dess egna.
När beräkningsklustret är nere svarar inte hälsotjänsten. När tjänsterna är igång utför den regelbundna kontroller mot följande komponenter i infrastrukturen:
Den försöker göra en fråga mot Azure Cosmos DB.
Den försöker skicka ett meddelande till Event Hubs. Meddelandet filtreras bort av bakgrundsarbetaren.
Den letar upp en tillståndsfil i lagringskontot. Den här filen kan användas för att inaktivera en region, även om de andra kontrollerna fortfarande fungerar korrekt. Den här filen kan användas för att kommunicera med andra processer. Om stämpeln till exempel ska tömmas i underhållssyfte kan filen tas bort för att tvinga fram ett feltillstånd och dirigera om trafiken.
Den frågar hälsomodellen för att avgöra om alla driftsmått ligger inom de förutbestämda tröskelvärdena. När hälsomodellen anger att stämpeln inte är felfri ska trafiken inte dirigeras till stämpeln även om de andra testerna som HealthService utför returnerar korrekt. Hälsomodellen tar en mer fullständig vy över hälsostatusen i beräkningen.
Alla hälsokontrollresultat cachelagras i minnet under ett konfigurerbart antal sekunder, som standard 10. Den här åtgärden lägger potentiellt till en liten svarstid vid identifiering av avbrott, men det säkerställer att inte alla HealthService-frågor kräver serverdelsanrop, vilket minskar belastningen på klustret och underordnade tjänster.
Det här cachelagringsmönstret är viktigt eftersom antalet HealthService-frågor ökar avsevärt när du använder en global router som Azure Front Door: Varje gränsnod i varje Azure-datacenter som hanterar begäranden anropar Hälsotjänst för att avgöra om den har en funktionell serverdelsanslutning. Cachelagring av resultaten minskar extra klusterbelastning som genereras av hälsokontroller.
Konfiguration
HealthService och CatalogService har konfigurationsinställningar som är gemensamma mellan komponenterna, förutom följande inställningar som uteslutande används av HealthService:
Inställning | Värde |
---|---|
HealthServiceCacheDurationSeconds |
Styr förfallotiden för minnescachen i sekunder. |
HealthServiceStorageConnectionString |
Anslutningssträng för lagringskontot där statusfilen ska finnas. |
HealthServiceBlobContainerName |
Lagringscontainer där statusfilen ska finnas. |
HealthServiceBlobName |
Namnet på statusfilen – hälsokontrollen söker efter den här filen. |
HealthServiceOverallTimeoutSeconds |
Timeout för hela kontrollen – standardvärdet är 3 sekunder. Om kontrollen inte slutförs i det här intervallet rapporterar tjänsten feltillstånd. |
Implementering
Alla kontroller utförs asynkront och parallellt. Om någon av dem misslyckas anses hela stämpeln vara otillgänglig.
Kontrollera att resultaten cachelagras i minnet med hjälp av standard, icke-distribuerad ASP.NET Core MemoryCache
. Cache förfallotid styrs av SysConfig.HealthServiceCacheDurationSeconds
och är inställd på 10 sekunder som standard.
Kommentar
Konfigurationsinställningen SysConfig.HealthServiceCacheDurationSeconds
minskar den ytterligare belastning som genereras av hälsokontroller eftersom inte varje begäran resulterar i nedströmsanrop till de beroende tjänsterna.
Följande tabell beskriver hälsokontrollerna för komponenterna i infrastrukturen:
Komponent | Hälsokontroll |
---|---|
Lagringskontoblob | Blobkontrollen har för närvarande två syften: 1. Testa om det är möjligt att nå Blob Storage. Lagringskontot används av andra komponenter i stämpeln och anses vara en kritisk resurs. 2. "Inaktivera" en region manuellt genom att ta bort tillståndsfilen. Ett designbeslut fattades om att kontrollen bara skulle söka efter en tillståndsfil i den angivna blobcontainern. Innehållet i filen bearbetas inte. Det finns en möjlighet att konfigurera ett mer avancerat system som läser innehållet i filen och returnerar olika status baserat på innehållet i filen. Exempel på innehåll är HEALTHY, UNHEALTHY och MAINTENANCE. Borttagning av tillståndsfilen inaktiverar stämpeln. Kontrollera att hälsofilen finns när du har distribuerat programmet. Om hälsofilen saknas svarar tjänsten alltid med UNHEALTHY. Front Door känner inte igen serverdelen som tillgänglig. Filen skapas av Terraform och bör finnas efter infrastrukturdistributionen. |
Händelsehubb | Hälsorapportering för Event Hubs hanteras av EventHubProducerService . Den här tjänsten rapporterar felfri om den kan skicka ett nytt meddelande till Event Hubs. För filtrering har det här meddelandet en identifierande egenskap som lagts till: HEALTHCHECK=TRUE Det här meddelandet ignoreras på mottagarsidan. Konfigurationsinställningen AlwaysOn.BackgroundProcessor.EventHubProcessorService.ProcessEventHandlerAsync() söker HEALTHCHECK efter egenskapen. |
Azure Cosmos DB | Hälsorapportering i Azure Cosmos DB hanteras av CosmosDbService , som rapporterar felfritt om det är: 1. Det går att ansluta till Azure Cosmos DB-databasen och utföra en fråga. 2. Det går att skriva ett testdokument till databasen. Testdokumentet har en kort Time-to-Live-uppsättning, Azure Cosmos DB tar automatiskt bort den. HealthService utför två separata avsökningar. Om Azure Cosmos DB är i ett tillstånd där läsningar fungerar och skrivningar inte fungerar, ser de två avsökningarna till att en avisering utlöses. |
Azure Cosmos DB-frågor
För skrivskyddad fråga används följande fråga, som inte hämtar några data och inte har någon stor effekt på den totala belastningen:
SELECT GetCurrentDateTime ()
Skrivfrågan skapar en dummy ItemRating
med minimalt innehåll:
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);
Övervakning
Azure Log Analytics används som det centrala arkivet för loggar och mått för alla program- och infrastrukturkomponenter. Azure Application Insights används för alla programövervakningsdata. Varje stämpel i infrastrukturen har en dedikerad Log Analytics-arbetsyta och Application Insights-instans. En separat Log Analytics-arbetsyta används för globalt delade resurser som Front Door och Azure Cosmos DB.
Alla stämplar är kortlivade och ersätts kontinuerligt med varje ny version. Log Analytics-arbetsytorna per stämpel distribueras som en global resurs i en separat övervakningsresursgrupp som stämpel för Log Analytics-resurser. Dessa resurser delar inte livscykeln för en stämpel.
Mer information finns i Enhetlig datamottagare för korrelerad analys.
Övervakning: Datakällor
Diagnostikinställningar: Alla Azure-tjänster som används för Azure Mission-Critical är konfigurerade för att skicka alla diagnostikdata, inklusive loggar och mått till den distributionsspecifika (globala eller stämpel) Log Analytics-arbetsytan. Den här processen sker automatiskt som en del av Terraform-distributionen. Nya alternativ identifieras automatiskt och läggs till som en del av
terraform apply
.Kubernetes-övervakning: Diagnostikinställningar används för att skicka Loggar och mått för Azure Kubernetes Service (AKS) till Log Analytics. AKS har konfigurerats för att använda Container Insights. Container Insights distribuerar OMSAgentForLinus via en Kubernetes DaemonSet på varje nod i AKS-klustren. OMSAgentForLinux kan samla in extra loggar och mått inifrån Kubernetes-klustret och skicka dem till motsvarande Log Analytics-arbetsyta. Dessa extra loggar och mått innehåller mer detaljerade data om poddar, distributioner, tjänster och övergripande klusterhälsa. Om du vill få mer insikter från de olika komponenterna, till exempel ingress-nginx, cert-manager och andra komponenter som distribuerats till Kubernetes bredvid den verksamhetskritiska arbetsbelastningen, är det möjligt att använda Prometheus-skrapning. Prometheus-skrapning konfigurerar OMSAgentForLinux för att skrapa Prometheus-mått från olika slutpunkter i klustret.
Application Insights-telemetri: Application Insights används för att samla in telemetridata från programmet. Koden har instrumenterats för att samla in data om programmets prestanda med Application Insights SDK. Viktig information, till exempel den resulterande statuskoden och varaktigheten för beroendeanrop och räknare för ohanterade undantag samlas in. Den här informationen används i hälsomodellen och är tillgänglig för aviseringar och felsökning.
Övervakning: Application Insights-tillgänglighetstester
För att övervaka tillgängligheten för enskilda stämplar och den övergripande lösningen utifrån , konfigureras Application Insights-tillgänglighetstester på två platser:
Regionala tillgänglighetstester: Dessa tester konfigureras i de regionala Application Insights-instanserna och används för att övervaka tillgängligheten för stämplarna. Dessa tester riktar sig direkt till klustren och statiska lagringskonton för stämplarna. Om du vill anropa ingresspunkterna i klustren direkt måste begäranden ha rätt Front Door-ID-huvud, annars avvisas de av ingresskontrollanten.
Globalt tillgänglighetstest: Dessa tester konfigureras i den globala Application Insights-instansen och används för att övervaka tillgängligheten för den övergripande lösningen genom att pinga Front Door. Två tester används: Ett för att testa ett API-anrop mot CatalogService och ett för att testa webbplatsens startsida.
Övervakning: Frågor
Azure Mission-Critical använder olika KQL-frågor (Kusto-frågespråk) för att implementera anpassade frågor som funktioner för att hämta data från Log Analytics. Dessa frågor lagras som enskilda filer i vår kodlagringsplats, avgränsade för globala distributioner och stämpeldistributioner. De importeras och tillämpas automatiskt via Terraform som en del av varje infrastrukturpipelinekörning.
Den här metoden skiljer frågelogik från visualiseringsskiktet. Log Analytics-frågorna anropas direkt från kod, till exempel från HealthService-API:et. Ett annat exempel är från ett visualiseringsverktyg som Azure-instrumentpaneler, övervaka arbetsböcker eller Grafana.
Övervakning: Visualisering
För att visualisera resultatet av våra Log Analytics-hälsofrågor har vi använt Grafana i vår referensimplementering. Grafana används för att visa resultatet av Log Analytics-frågor och innehåller ingen logik i sig. Grafana-stacken är inte en del av lösningens distributionslivscykel, utan släpps separat.
Mer information finns i Visualisering.
Aviseringar
Aviseringar är en viktig del av den övergripande driftsstrategin. Proaktiv övervakning, till exempel användning av instrumentpaneler, bör användas med aviseringar som ger omedelbar uppmärksamhet åt problem.
Dessa aviseringar utgör ett tillägg till hälsomodellen genom att avisera operatorn om en ändring i hälsotillståndet, antingen till degraderat/gult tillstånd eller till felfritt/rött tillstånd. Genom att ställa in aviseringen på rotnoden i hälsomodellen är operatorn omedelbart medveten om alla affärsnivåer som påverkar lösningens tillstånd: Rotnoden blir trots allt gul eller röd om någon av de underliggande användarflödena eller resurserna rapporterar gula eller röda mått. Operatorn kan rikta sin uppmärksamhet mot visualiseringen Hälsomodell för felsökning.
Mer information finns i Automatiserad incidenthantering.
Felanalys
Att skapa felanalysen är främst en teoretisk planeringsövning. Den här teoretiska övningen ska användas som indata för automatiserade felinmatningar som ingår i den kontinuerliga valideringsprocessen. Genom att simulera de fellägen som definieras här kan vi verifiera lösningens återhämtning mot dessa fel för att säkerställa att de inte leder till avbrott.
I följande tabell visas exempel på felfall för de olika komponenterna i referensimplementeringen för Azure Mission-Critical.
Tjänst | Risk | Effekt/minskning/kommentar | Avbrott |
---|---|---|---|
Microsoft Entra ID | Microsoft Entra-ID blir otillgängligt. | För närvarande finns ingen möjlig åtgärd på plats. En metod för flera regioner minskar inte eventuella avbrott eftersom det är en global tjänst. Den här tjänsten är ett hårt beroende. Microsoft Entra-ID används för kontrollplansåtgärder som att skapa nya AKS-noder, hämta containeravbildningar från ACR eller för att få åtkomst till Key Vault vid poddstart. Det förväntas att befintliga komponenter som körs ska kunna fortsätta köras när Problem med Microsoft Entra-ID:t uppstår. Det är troligt att nya poddar eller AKS-noder inte kan skapa. Vid skalningsåtgärder som krävs under den här tiden kan det leda till en minskad användarupplevelse och potentiellt till avbrott. | Delvis |
Azure DNS | Azure DNS blir otillgängligt och DNS-matchningen misslyckas. | Om Azure DNS blir otillgängligt kommer DNS-matchningen för användarbegäranden och mellan olika komponenter i programmet sannolikt att misslyckas. För närvarande finns ingen möjlig åtgärd för det här scenariot. En metod för flera regioner minskar inte eventuella avbrott eftersom det är en global tjänst. Azure DNS är ett hårt beroende. Externa DNS-tjänster som säkerhetskopiering skulle inte hjälpa, eftersom alla PaaS-komponenter som används förlitar sig på Azure DNS. Att kringgå DNS genom att växla till IP är inte ett alternativ. Azure-tjänster har inte statiska, garanterade IP-adresser. | Fullständig |
Ytterdörr | Allmänt frontdörrsavbrott. | Om Front Door går ner helt, finns det ingen åtgärd. Den här tjänsten är ett hårt beroende. | Ja |
Ytterdörr | Konfigurationsfel för routning/klientdel/serverdel. | Kan inträffa på grund av matchningsfel i konfigurationen vid distribution. Bör fångas i teststeg. Klientdelskonfiguration med DNS är specifik för varje miljö. Åtgärd: Återställning till tidigare konfiguration bör åtgärda de flesta problem.. Eftersom ändringar tar ett par minuter i Front Door att distribueras orsakar det ett avbrott. | Fullständig |
Ytterdörr | Hanterat TLS/SSL-certifikat tas bort. | Kan inträffa på grund av matchningsfel i konfigurationen vid distribution. Bör fångas i teststeg. Tekniskt sett skulle webbplatsen fortfarande fungera, men TLS/SSL-certifikatfel hindrar användare från att komma åt den. Åtgärd: Det kan ta cirka 20 minuter att utfärda certifikatet igen, samt att åtgärda och köra pipelinen igen.. | Fullständig |
Azure Cosmos DB | Databasen/samlingen har bytt namn. | Kan inträffa på grund av matchningsfel i konfigurationen vid distribution – Terraform skulle skriva över hela databasen, vilket kan leda till dataförlust. Dataförlust kan förhindras med hjälp av lås på databas-/insamlingsnivå. Programmet kommer inte att kunna komma åt några data. Appkonfigurationen måste uppdateras och poddar startas om. | Ja |
Azure Cosmos DB | Regionalt avbrott | Azure Mission-Critical har skrivningar i flera regioner aktiverade. Om det uppstår ett fel vid läsning eller skrivning försöker klienten utföra den aktuella åtgärden igen. Alla framtida åtgärder dirigeras permanent till nästa region i prioritetsordning. Om inställningslistan hade en post (eller var tom) men kontot har andra tillgängliga regioner dirigeras den till nästa region i kontolistan. | Nej |
Azure Cosmos DB | Omfattande begränsning på grund av brist på RU:er. | Beroende på antalet RU:er och belastningsutjämningen som används på Front Door-nivån kan vissa stämplar köras frekvent på Azure Cosmos DB-användning medan andra stämplar kan hantera fler begäranden. Åtgärd: Bättre belastningsfördelning eller fler RU:er. | Nej |
Azure Cosmos DB | Partitionen är full | Storleksgränsen för logisk partition i Azure Cosmos DB är 20 GB. Om data för en partitionsnyckel i en container når den här storleken misslyckas ytterligare skrivbegäranden med felet "Partitionsnyckeln har nått maximal storlek". | Partiell (DB-skrivningar inaktiverade) |
Azure Container Registry | Regionalt avbrott | Containerregistret använder Traffic Manager för redundansväxling mellan replikregioner. Alla begäranden bör omdirigeras automatiskt till en annan region. I värsta fall kan Docker-avbildningar inte hämtas på några minuter av AKS-noder medan DNS-redundansväxling sker. | Nej |
Azure Container Registry | Avbildningar har tagits bort | Inga bilder kan hämtas. Det här avbrottet bör endast påverka nyligen skapade/omstartade noder. Befintliga noder bör ha avbildningarna cachelagrade. **Åtgärd: Om det upptäcks att de senaste byggpipelines snabbt körs igen bör avbildningarna komma tillbaka till registret. | Nej |
Azure Container Registry | Begränsning | Begränsning kan fördröja utskalningsåtgärder som kan leda till en tillfälligt försämrad prestanda. Åtgärd: Azure Mission-Critical använder Premium SKU som tillhandahåller 10 000 läsåtgärder per minut. Containeravbildningar är optimerade och har bara ett litet antal lager. ImagePullPolicy är inställt på IfNotPresent för att använda lokalt cachelagrade versioner först. Kommentar: Att hämta en containeravbildning består av flera läsåtgärder, beroende på antalet lager. Antalet läsåtgärder per minut är begränsat och beror på ACR SKU-storleken. | Nej |
Azure Kubernetes Service | Klusteruppgradering misslyckas | AKS Node-uppgraderingar bör ske vid olika tidpunkter mellan stämplarna. Om en uppgradering misslyckas ska det andra klustret inte påverkas. Klusteruppgraderingar bör distribueras löpande över noderna för att förhindra att alla noder blir otillgängliga. | Nej |
Azure Kubernetes Service | Programpodden avlivas vid serveringsbegäran. | Detta kan leda till att slutanvändaren får fel och dålig användarupplevelse. Åtgärd: Kubernetes tar som standard bort poddar på ett graciöst sätt. Poddar tas först bort från tjänster och arbetsbelastningen tar emot en SIGTERM med en respitperiod för att slutföra öppna begäranden och skriva data innan de avslutas. Programkoden måste förstå SIGTERM och respitperioden kan behöva justeras om arbetsbelastningen tar längre tid att stänga av. | Nej |
Azure Kubernetes Service | Beräkningskapaciteten är inte tillgänglig i regionen för att lägga till fler noder. | Uppskalnings-/utskalningsåtgärder misslyckas, men det bör inte påverka befintliga noder och deras åtgärd. Helst bör trafiken flyttas automatiskt till andra regioner för belastningsutjämning. | Nej |
Azure Kubernetes Service | Prenumerationen når CPU-kärnkvoten för att lägga till nya noder. | Uppskalnings-/utskalningsåtgärder misslyckas, men det bör inte påverka befintliga noder och deras åtgärd. Helst bör trafiken flyttas automatiskt till andra regioner för belastningsutjämning. | Nej |
Azure Kubernetes Service | Let's Encrypt TLS/SSL-certifikat kan inte utfärdas/förnyas. | Klustret bör rapportera felfritt mot Front Door och trafiken bör övergå till andra stämplar. Åtgärd: Undersöka rotorsaken till problem/förnya fel. | Nej |
Azure Kubernetes Service | När resursbegäranden/-gränser har konfigurerats felaktigt kan poddar nå 100 % processoranvändning och felbegäranden. Mekanismen för återförsök av program bör kunna återställa misslyckade begäranden. Återförsök kan orsaka en längre varaktighet för begäran, utan att felet visas för klienten. För hög belastning orsakar till slut fel. | Nej (om belastningen inte är för hög) | |
Azure Kubernetes Service | Containeravbildningar från tredje part/register är inte tillgängliga | Vissa komponenter som cert-manager och ingress-nginx kräver nedladdning av containeravbildningar och helm-diagram från externa containerregister (utgående trafik). Om en eller flera av dessa lagringsplatser eller bilder inte är tillgängliga kan det hända att nya instanser på nya noder (där avbildningen inte redan är cachelagrad) inte kan starta. Möjlig åtgärd: I vissa scenarier kan det vara bra att importera containeravbildningar från tredje part till containerregistret per lösning. Detta ger ytterligare komplexitet och bör planeras och operationaliseras noggrant. | Delvis (under skalnings- och uppdaterings-/uppgraderingsåtgärder) |
Händelsehubb | Meddelanden kan inte skickas till Händelsehubbar | Stämpeln blir oanvändbar för skrivåtgärder. Hälsotjänsten bör automatiskt identifiera detta och ta bort stämpeln från rotationen. | Nej |
Händelsehubb | Meddelanden kan inte läsas av BackgroundProcessor | Meddelanden placeras i kö. Meddelanden bör inte gå förlorade eftersom de sparas. Det här felet omfattas för närvarande inte av Hälsotjänst. Det bör finnas övervakning/aviseringar på plats för arbetaren för att identifiera fel vid läsning av meddelanden. Åtgärd: Stämpeln ska inaktiveras manuellt tills problemet har åtgärdats. | Nej |
Lagringskonto | Lagringskontot blir oanvändbart av arbetaren för Händelsehubbar-kontroll som pekar | Stämpeln bearbetar inte meddelanden från Event Hubs. Lagringskontot används också av HealthService. Det är förväntat att problem med lagring ska identifieras av HealthService och stämpeln ska tas bort från rotationen. Det kan förväntas att andra tjänster i stämpeln påverkas samtidigt. | Nej |
Lagringskonto | Statisk webbplats stöter på problem. | Om servering av den statiska webbplatsen stöter på problem bör det här felet identifieras av Front Door. Trafik skickas inte till det här lagringskontot. Cachelagring på Front Door kan också lindra det här problemet. | Nej |
Key Vault | Key Vault är inte tillgängligt för GetSecret åtgärder. |
I början av nya poddar hämtar AKS CSI-drivrutinen alla hemligheter från Key Vault och misslyckas. Poddar kan inte starta. Det finns en automatisk uppdatering var 5:e minut. Uppdateringen misslyckas. Fel bör visas i kubectl describe pod men podden fortsätter att fungera. |
Nej |
Key Vault | Key Vault är inte tillgängligt för GetSecret eller SetSecret åtgärder. |
Det går inte att köra nya distributioner. Det här felet kan för närvarande leda till att hela distributionspipelinen stoppas, även om endast en region påverkas. | Nej |
Key Vault | Begränsning av Key Vault | Key Vault har en gräns på 1 000 åtgärder per 10 sekunder. På grund av den automatiska uppdateringen av hemligheter kan du i teorin nå den här gränsen om du hade många (tusentals) poddar i en stämpel. Möjlig åtgärd: Minska uppdateringsfrekvensen ytterligare eller inaktivera den helt. | Nej |
Program | Felaktig konfiguration | Felaktiga anslutningssträng eller hemligheter som matas in i appen. Bör minimeras genom automatisk distribution (pipelinen hanterar konfigurationen automatiskt) och den blågröna distributionen av uppdateringar. | Nej |
Program | Utgångna autentiseringsuppgifter (stämpelresurs) | Om till exempel SAS-token för händelsehubben eller lagringskontonyckeln ändrades utan att de uppdaterades korrekt i Key Vault så att poddarna kan använda dem, kommer respektive programkomponent att misslyckas. Det här felet bör sedan påverka Hälsotjänst och stämpeln ska tas ur rotation automatiskt. Åtgärd: Använd Microsoft Entra ID-baserad autentisering för alla tjänster som stöder det. AKS kräver poddar för att autentisera med microsoft entra-arbetsbelastnings-ID (förhandsversion). Användning av poddidentitet övervägdes i referensimplementeringen. Det konstaterades att poddidentiteten för närvarande inte var tillräckligt stabil och beslutades mot användning för den aktuella referensarkitekturen. Poddidentitet kan vara en lösning i framtiden. | Nej |
Program | Utgångna autentiseringsuppgifter (globalt delad resurs) | Om till exempel Azure Cosmos DB API-nyckeln ändrades utan att uppdatera den korrekt i alla stämpelnyckelvalv så att poddarna kan använda dem, kommer respektive programkomponenter att misslyckas. Det här felet skulle få alla stämplar att stängas av samtidigt och orsaka ett avbrott i hela arbetsbelastningen. En möjlig väg runt behovet av nycklar och hemligheter med Microsoft Entra-autentisering finns i föregående objekt. | Fullständig |
Virtuellt nätverk | Ip-adressutrymmet för undernätet är slut | Om IP-adressutrymmet i ett undernät är uttömt kan inga utskalningsåtgärder, till exempel att skapa nya AKS-noder eller poddar, inträffa. Det leder inte till ett avbrott men kan minska prestanda och påverka användarupplevelsen. Åtgärd: öka IP-utrymmet (om möjligt). Om det inte är ett alternativ kan det bidra till att öka resurserna per nod (större VM-SKU:er) eller per podd (mer CPU/minne), så att varje podd kan hantera mer trafik, vilket minskar behovet av utskalning. | Nej |
Nästa steg
Distribuera referensimplementeringen för att få en fullständig förståelse för de resurser och deras konfiguration som används i den här arkitekturen.