Uppgradering av Service Fabric-program

Ett Azure Service Fabric-program är en samling tjänster. Under en uppgradering jämför Service Fabric det nya programmanifestet med den tidigare versionen och avgör vilka tjänster i programmet som kräver uppdateringar. Service Fabric jämför versionen i tjänstmanifesten med versionen i den tidigare versionen. Om tjänstversionen inte har ändrats uppgraderas inte tjänsten.

Anteckning

ApplicationParametersbevaras inte i en programuppgradering. För att bevara aktuella programparametrar bör användaren hämta parametrarna först och skicka dem till API-uppgraderingsanropet som nedan:

$myApplication = Get-ServiceFabricApplication -ApplicationName fabric:/myApplication
$appParamCollection = $myApplication.ApplicationParameters

$applicationParameterMap = @{}
foreach ($pair in $appParamCollection)
{
    $applicationParameterMap.Add($pair.Name, $pair.Value);
}

Start-ServiceFabricApplicationUpgrade -ApplicationName fabric:/myApplication -ApplicationTypeVersion 2.0.0 -ApplicationParameter $applicationParameterMap -Monitored -FailureAction Rollback

Översikt över löpande uppgraderingar

I en löpande programuppgradering utförs uppgraderingen i etapper. I varje steg tillämpas uppgraderingen på en delmängd av noderna i klustret, som kallas en uppdateringsdomän. Därför förblir programmet tillgängligt under uppgraderingen. Under uppgraderingen kan klustret innehålla en blandning av gamla och nya versioner.

Därför måste de två versionerna vara framåt- och bakåtkompatibla. Om de inte är kompatibla ansvarar programadministratören för att mellanlagring av en uppgradering med flera faser för att upprätthålla tillgängligheten. I en uppgradering med flera faser är det första steget att uppgradera till en mellanliggande version av programmet som är kompatibel med den tidigare versionen. Det andra steget är att uppgradera den slutliga versionen som bryter kompatibiliteten med förhandsuppdateringsversionen, men som är kompatibel med den mellanliggande versionen.

Uppdateringsdomäner anges i klustermanifestet när du konfigurerar klustret. Uppdateringsdomäner tar inte emot uppdateringar i en viss ordning. En uppdateringsdomän är en logisk distributionsenhet för ett program. Med uppdateringsdomäner kan tjänsterna ha hög tillgänglighet under en uppgradering.

Icke-löpande uppgraderingar är möjliga om uppgraderingen tillämpas på alla noder i klustret, vilket är fallet när programmet bara har en uppdateringsdomän. Den här metoden rekommenderas inte eftersom tjänsten slutar fungera och inte är tillgänglig vid tidpunkten för uppgraderingen. Dessutom ger Azure inga garantier när ett kluster har konfigurerats med endast en uppdateringsdomän.

När uppgraderingen är klar kommer alla tjänster och repliker (instanser) att finnas kvar i samma version, d.v.s. om uppgraderingen lyckas uppdateras de till den nya versionen. Om uppgraderingen misslyckas och återställs återställs de till den gamla versionen.

Hälsokontroller under uppgraderingar

För en uppgradering måste hälsoprinciper anges (eller standardvärden kan användas). En uppgradering kallas lyckad när alla uppdateringsdomäner uppgraderas inom de angivna tidsgränserna och när alla uppdateringsdomäner anses vara felfria. En felfri uppdateringsdomän innebär att uppdateringsdomänen har godkänt alla hälsokontroller som anges i hälsoprincipen. En hälsoprincip kan till exempel kräva att alla tjänster i en programinstans måste vara felfria, eftersom hälsa definieras av Service Fabric.

Hälsoprinciper och kontroller under uppgraderingen av Service Fabric är tjänst- och programagnostiska. Inga tjänstspecifika tester görs alltså. Din tjänst kan till exempel ha ett dataflödeskrav, men Service Fabric har inte den information som krävs för att kontrollera dataflödet. Se hälsoartiklarna för de kontroller som utförs. Kontrollerna som utförs under en uppgradering omfattar tester för om programpaketet kopierades korrekt, om instansen startades och så vidare.

Programmets hälsa är en aggregering av programmets underordnade entiteter. I korthet utvärderar Service Fabric hälsotillståndet för programmet via det hälsotillstånd som rapporteras i programmet. Den utvärderar också hälsotillståndet för alla tjänster för programmet på det här sättet. Service Fabric utvärderar programtjänsternas hälsotillstånd ytterligare genom att aggregera hälsotillståndet för deras underordnade, till exempel tjänstrepliken. När programmets hälsoprincip är uppfylld kan uppgraderingen fortsätta. Om hälsoprincipen överträds misslyckas programuppgradningen.

Uppgraderingslägen

Det läge som vi rekommenderar för programuppgradering är övervakat läge, vilket är det vanliga läget. Övervakat läge utför uppgraderingen på en uppdateringsdomän och om alla hälsokontroller godkänns (enligt den angivna principen) går du vidare till nästa uppdateringsdomän automatiskt. Om hälsokontroller misslyckas och/eller tidsgränser nås återställs uppgraderingen antingen för uppdateringsdomänen eller så ändras läget till oövervakad manuell. Du kan konfigurera uppgraderingen så att den väljer något av dessa två lägen för misslyckade uppgraderingar.

Oövervakat manuellt läge behöver manuella åtgärder efter varje uppgradering på en uppdateringsdomän för att starta uppgraderingen på nästa uppdateringsdomän. Inga Hälsokontroller av Service Fabric utförs. Administratören utför hälso- eller statuskontrollerna innan uppgraderingen påbörjas i nästa uppdateringsdomän.

Uppgradera standardtjänster

Vissa standardtjänstparametrar som definierats i programmanifestet kan också uppgraderas som en del av en programuppgradering. Endast de tjänstparametrar som stöder ändring via Update-ServiceFabricService kan ändras som en del av en uppgradering. Beteendet för att ändra standardtjänster under programuppgradering är följande:

  1. Standardtjänster i det nya programmanifestet som inte redan finns i klustret skapas.
  2. Standardtjänster som finns i både tidigare och nya programmanifest uppdateras. Parametrarna för standardtjänsten i det nya programmanifestet skriver över parametrarna för den befintliga tjänsten. Programuppgradningen återställs automatiskt om uppdateringen av en standardtjänst misslyckas.
  3. Standardtjänster som inte finns i det nya programmanifestet tas bort om de finns i klustret. Observera att om du tar bort en standardtjänst tas alla tjänstens tillstånd bort och kan inte ångras.

När en programuppgradering återställs återställs standardtjänstparametrarna till sina gamla värden innan uppgraderingen startade, men borttagna tjänster kan inte återskapas med det gamla tillståndet.

Tips

Inställningen EnableDefaultServicesUpgrade-klusterkonfiguration måste vara sann för att aktivera regler 2) och 3) ovan (standardtjänstuppdatering och borttagning). Den här funktionen stöds från och med Service Fabric version 5.5.

Uppgradera flera program med HTTPS-slutpunkter

Du måste vara noga med att inte använda samma port för olika instanser av samma program när du använder HTTPS. Anledningen är att Service Fabric inte kan uppgradera certifikatet för en av programinstanserna. Om program 1 eller program 2 till exempel båda vill uppgradera sitt certifikat 1 till certifikat 2. När uppgraderingen sker kan Service Fabric ha rensat cert 1-registreringen med http.sys även om det andra programmet fortfarande använder det. För att förhindra detta identifierar Service Fabric att det redan finns en annan programinstans registrerad på porten med certifikatet (på grund av http.sys) och misslyckas med åtgärden.

Därför stöder Inte Service Fabric uppgradering av två olika tjänster med samma port i olika programinstanser. Med andra ord kan du inte använda samma certifikat på olika tjänster på samma port. Om du behöver ha ett delat certifikat på samma port måste du se till att tjänsterna placeras på olika datorer med placeringsbegränsningar. Eller överväg att använda dynamiska Service Fabric-portar om det är möjligt för varje tjänst i varje programinstans.

Om en uppgradering misslyckas med https visas en felvarning om att Windows HTTP Server-API:et inte stöder flera certifikat för program som delar en port.

Flödesschema för programuppgradering

Flödesschemat som följer det här stycket kan hjälpa dig att förstå uppgraderingsprocessen för ett Service Fabric-program. I synnerhet beskriver flödet hur tidsgränserna, inklusive HealthCheckStableDuration, HealthCheckRetryTimeout och UpgradeHealthCheckInterval, hjälper till att kontrollera när uppgraderingen i en uppdateringsdomän anses vara en lyckad eller ett fel.

Uppgraderingsprocessen för ett Service Fabric-program

Nästa steg

När du uppgraderar ditt program med Visual Studio går vi igenom en programuppgradering med Visual Studio.

När du uppgraderar ditt program med PowerShell går vi igenom en programuppgradering med hjälp av PowerShell.

Kontrollera hur programmet uppgraderas med hjälp av uppgraderingsparametrar.

Gör dina programuppgraderingar kompatibla genom att lära dig hur du använder dataserialisering.

Lär dig hur du använder avancerade funktioner när du uppgraderar ditt program med hjälp av Avancerade ämnen.

Åtgärda vanliga problem i programuppgraderingar med hjälp av stegen i Felsöka programuppgraderingar.