Uaktualnianie aplikacji usługi Service Fabric
Aplikacja usługi Azure Service Fabric to kolekcja usług. Podczas uaktualniania usługa Service Fabric porównuje nowy manifest aplikacji z poprzednią wersją i określa, które usługi w aplikacji wymagają aktualizacji. Usługa Service Fabric porównuje wersję w manifeście usługi z wersją w poprzedniej wersji. Jeśli wersja usługi nie została zmieniona, ta usługa nie zostanie uaktualniona.
Uwaga
Parametryaplikacji nie są zachowywane w ramach uaktualnienia aplikacji. Aby zachować bieżące parametry aplikacji, użytkownik powinien najpierw pobrać parametry i przekazać je do wywołania interfejsu API uaktualniania, jak pokazano poniżej:
$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
Omówienie uaktualnień stopniowego
W ramach uaktualnienia aplikacji stopniowej uaktualnienie jest wykonywane na etapach. Na każdym etapie uaktualnienie jest stosowane do podzestawu węzłów w klastrze nazywanego domeną aktualizacji. W związku z tym aplikacja pozostaje dostępna w trakcie uaktualniania. Podczas uaktualniania klaster może zawierać kombinację starych i nowych wersji.
Z tego powodu dwie wersje muszą być zgodne z poprzednimi wersjami. Jeśli nie są one zgodne, administrator aplikacji jest odpowiedzialny za przemieszczanie uaktualnienia wielofazowego w celu zachowania dostępności. W ramach uaktualnienia wielofazowego pierwszy krok polega na uaktualnieniu do wersji pośredniej aplikacji zgodnej z poprzednią wersją. Drugim krokiem jest uaktualnienie wersji końcowej, która przerywa zgodność z wersją wstępną aktualizacji, ale jest zgodna z wersją pośrednią.
Domeny aktualizacji są określane w manifeście klastra podczas konfigurowania klastra. Domeny aktualizacji nie odbierają aktualizacji w określonej kolejności. Domena aktualizacji jest jednostką logiczną wdrożenia aplikacji. Domeny aktualizacji umożliwiają usługom zachowanie wysokiej dostępności podczas uaktualniania.
Uaktualnienia niestopniowego są możliwe, jeśli uaktualnienie jest stosowane do wszystkich węzłów w klastrze, co jest w przypadku, gdy aplikacja ma tylko jedną domenę aktualizacji. Takie podejście nie jest zalecane, ponieważ usługa nie działa i nie jest dostępna w momencie uaktualniania. Ponadto platforma Azure nie zapewnia żadnych gwarancji, gdy klaster jest skonfigurowany tylko z jedną domeną aktualizacji.
Po zakończeniu uaktualniania wszystkie usługi i repliki (wystąpienia) pozostaną w tej samej wersji, tj. jeśli uaktualnienie zakończy się pomyślnie, zostaną zaktualizowane do nowej wersji; Jeśli uaktualnienie zakończy się niepowodzeniem i zostanie wycofane, zostaną one wycofane ze starej wersji.
Kontrole kondycji podczas uaktualniania
W przypadku uaktualnienia należy ustawić zasady kondycji (lub można użyć wartości domyślnych). Uaktualnienie jest określane pomyślnie, gdy wszystkie domeny aktualizacji zostaną uaktualnione w określonych limitach czasu, a wszystkie domeny aktualizacji zostaną uznane za w dobrej kondycji. Domena aktualizacji w dobrej kondycji oznacza, że domena aktualizacji przeszła wszystkie kontrole kondycji określone w zasadach kondycji. Na przykład zasady kondycji mogą wymagać, aby wszystkie usługi w wystąpieniu aplikacji mogły być w dobrej kondycji, ponieważ kondycja jest definiowana przez usługę Service Fabric.
Zasady kondycji i kontrole podczas uaktualniania przez usługę Service Fabric są niezależne od usługi i aplikacji. Oznacza to, że nie są wykonywane żadne testy specyficzne dla usługi. Na przykład usługa może mieć wymaganie dotyczące przepływności, ale usługa Service Fabric nie ma informacji do sprawdzania przepływności. Zapoznaj się z artykułami dotyczącymi kondycji, aby zapoznać się z testami, które są wykonywane. Testy wykonywane podczas uaktualniania obejmują testy, czy pakiet aplikacji został poprawnie skopiowany, czy wystąpienie zostało uruchomione itd.
Kondycja aplikacji to agregacja jednostek podrzędnych aplikacji. Krótko mówiąc, usługa Service Fabric ocenia kondycję aplikacji za pośrednictwem kondycji zgłoszonej w aplikacji. Ocenia również kondycję wszystkich usług dla aplikacji w ten sposób. Usługa Service Fabric dodatkowo ocenia kondycję usług aplikacji przez agregowanie kondycji ich elementów podrzędnych, takich jak replika usługi. Po spełnieniu zasad kondycji aplikacji uaktualnienie może kontynuować. Jeśli zasady kondycji są naruszone, uaktualnienie aplikacji zakończy się niepowodzeniem.
Tryby uaktualniania
Tryb zalecany do uaktualnienia aplikacji to tryb monitorowany, który jest często używanym trybem. Tryb monitorowany wykonuje uaktualnienie w jednej domenie aktualizacji, a wszystkie testy kondycji są przekazywane (zgodnie z określonymi zasadami), przechodzi do następnej domeny aktualizacji automatycznie. Jeśli sprawdzanie kondycji nie powiedzie się i/lub limity czasu zostaną osiągnięte, uaktualnienie zostanie wycofane dla domeny aktualizacji lub tryb zostanie zmieniony na niemonitorowany ręcznie. Uaktualnienie można skonfigurować tak, aby wybrać jeden z tych dwóch trybów dla nieudanych uaktualnień.
Niemonitorowany tryb ręczny wymaga interwencji ręcznej po każdym uaktualnieniu w domenie aktualizacji, aby rozpocząć uaktualnianie w następnej domenie aktualizacji. Nie są wykonywane żadne kontrole kondycji usługi Service Fabric. Administrator przeprowadza kontrole kondycji lub stanu przed rozpoczęciem uaktualniania w następnej domenie aktualizacji.
Uaktualnianie usług domyślnych
Niektóre domyślne parametry usługi zdefiniowane w manifeście aplikacji można również uaktualnić w ramach uaktualnienia aplikacji. W ramach uaktualnienia można zmienić tylko parametry usługi, które obsługują zmianę za pomocą polecenia Update-ServiceFabricService . Zachowanie zmiany usług domyślnych podczas uaktualniania aplikacji jest następujące:
- Usługi domyślne w nowym manifeście aplikacji, które nie istnieją jeszcze w klastrze, są tworzone.
- Zaktualizowane są usługi domyślne, które istnieją zarówno w poprzednich, jak i nowych manifestach aplikacji. Parametry usługi domyślnej w nowym manifeście aplikacji zastępują parametry istniejącej usługi. Uaktualnienie aplikacji zostanie wycofane automatycznie w przypadku niepowodzenia aktualizacji usługi domyślnej.
- Domyślne usługi, które nie istnieją w nowym manifeście aplikacji, są usuwane, jeśli istnieją w klastrze. Należy pamiętać, że usunięcie usługi domyślnej spowoduje usunięcie stanu tej usługi i nie można jej cofnąć.
Po wycofaniu uaktualnienia aplikacji domyślne parametry usługi zostaną przywrócone do starych wartości przed rozpoczęciem uaktualniania, ale usuniętych usług nie można ponownie utworzyć ze swoim starym stanem.
Napiwek
Ustawienie konfiguracji klastra EnableDefaultServicesUpgrade musi mieć wartość true, aby włączyć reguły 2) i 3) powyżej (domyślna aktualizacja i usuwanie usługi). Ta funkcja jest obsługiwana od wersji 5.5 usługi Service Fabric.
Uaktualnianie wielu aplikacji przy użyciu punktów końcowych HTTPS
Należy zachować ostrożność, aby nie używać tego samego portu dla różnych wystąpień tej samej aplikacji podczas korzystania z protokołu HTTPS. Przyczyną jest to, że usługa Service Fabric nie będzie mogła uaktualnić certyfikatu dla jednego z wystąpień aplikacji. Jeśli na przykład aplikacja 1 lub aplikacja 2 chcą uaktualnić certyfikat 1 do certyfikatu 2. W przypadku uaktualniania usługa Service Fabric mogła wyczyścić rejestrację certyfikatu 1 przy użyciu http.sys, mimo że druga aplikacja nadal jej używa. Aby temu zapobiec, usługa Service Fabric wykrywa, że istnieje już inne wystąpienie aplikacji zarejestrowane na porcie przy użyciu certyfikatu (z powodu http.sys) i kończy się niepowodzeniem operacji.
W związku z tym usługa Service Fabric nie obsługuje uaktualniania dwóch różnych usług przy użyciu tego samego portu w różnych wystąpieniach aplikacji. Innymi słowy, nie można użyć tego samego certyfikatu w różnych usługach na tym samym porcie. Jeśli potrzebujesz certyfikatu współużytkowanego na tym samym porcie, upewnij się, że usługi są umieszczane na różnych komputerach z ograniczeniami umieszczania. Możesz też rozważyć użycie portów dynamicznych usługi Service Fabric, jeśli jest to możliwe dla każdej usługi w każdym wystąpieniu aplikacji.
Jeśli uaktualnienie nie powiedzie się przy użyciu protokołu HTTPS, zostanie wyświetlone ostrzeżenie o błędzie z informacją "Interfejs API serwera HTTP systemu Windows nie obsługuje wielu certyfikatów dla aplikacji, które współużytkujące port".
Schemat blokowy uaktualniania aplikacji
Schemat blokowy po tym akapicie może ułatwić zrozumienie procesu uaktualniania aplikacji usługi Service Fabric. W szczególności przepływ opisuje, w jaki sposób limity czasu, w tym HealthCheckStableDuration, HealthCheckRetryTimeout i UpgradeHealthCheckInterval, pomagają kontrolować, kiedy uaktualnienie w jednej domenie aktualizacji jest uznawane za powodzenie lub niepowodzenie.
Następne kroki
Uaktualnianie aplikacji przy użyciu programu Visual Studio przeprowadzi Cię przez proces uaktualniania aplikacji przy użyciu programu Visual Studio.
Uaktualnianie aplikacji przy użyciu programu PowerShell przeprowadzi Cię przez proces uaktualniania aplikacji przy użyciu programu PowerShell.
Kontrolowanie sposobu uaktualniania aplikacji przy użyciu parametrów uaktualniania.
Uściślij zgodność aplikacji, ucząc się, jak używać serializacji danych.
Dowiedz się, jak używać zaawansowanych funkcji podczas uaktualniania aplikacji, korzystając z tematów zaawansowanych.
Rozwiąż typowe problemy z uaktualnieniami aplikacji, korzystając z kroków opisanych w temacie Rozwiązywanie problemów z uaktualnieniami aplikacji.