Uppgradera Service Fabric-programmet
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.
Kommentar
ApplicationParametersbevaras inte i en programuppgradering. För att bevara aktuella programparametrar bör användaren hämta parametrarna först och skicka dem till uppgraderings-API-anropet 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 steg. I varje steg tillämpas uppgraderingen på en delmängd noder i klustret, som kallas för 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 kompatibelt 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, dvs. om uppgraderingen lyckas uppdateras de till den nya versionen. Om uppgraderingen misslyckas och återställs kommer de att återställas 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. Det vill: inga tjänstspecifika tester görs. 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 sker under en uppgradering innehåller tester för om programpaketet kopierades korrekt, om instansen startades och så vidare.
Programmets hälsotillstånd är en aggregering av programmets underordnade entiteter. I korthet utvärderar Service Fabric programmets hälsa via hälsotillståndet 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 ytterligare hälsotillståndet för programtjänsterna 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 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 att ändra standardtjänster under programuppgradering är följande:
- Standardtjänster i det nya programmanifestet som inte redan finns i klustret skapas.
- Standardtjänster som finns i både föregående 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 uppdatering av en standardtjänst misslyckas.
- 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 sitt gamla tillstånd.
Dricks
Konfigurationsinställningen EnableDefaultServicesUpgrade-kluster måste vara sann för att aktivera regler 2) och 3) ovan (standardserveruppdatering 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 någon av programinstanserna. Om program 1 eller program 2 till exempel båda vill uppgradera 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 möjligt för varje tjänst i varje programinstans.
Om en uppgradering misslyckas med https visas en felvarning med texten "Windows HTTP Server API stöder inte 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.
Nästa steg
När du uppgraderar ditt program med Visual Studio får du hjälp med en programuppgradering med Hjälp av Visual Studio.
När du uppgraderar ditt program med PowerShell får du hjälp med 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 data serialisering.
Lär dig hur du använder avancerade funktioner när du uppgraderar ditt program genom att referera till Avancerade ämnen.
Åtgärda vanliga problem i programuppgraderingar genom att referera till stegen i Felsöka programuppgraderingar.