Uaktualnianie aplikacji usługi Service Fabric przy użyciu programu PowerShell
Najczęściej używane i zalecane podejście do uaktualniania to monitorowane uaktualnienie stopniowe. Usługa Azure Service Fabric monitoruje kondycję uaktualnianej aplikacji na podstawie zestawu zasad kondycji. Po uaktualnieniu domeny aktualizacji usługa Service Fabric ocenia kondycję aplikacji i przechodzi do następnej domeny aktualizacji lub kończy się niepowodzeniem uaktualniania w zależności od zasad kondycji.
Monitorowane uaktualnienie aplikacji można wykonać przy użyciu zarządzanych lub natywnych interfejsów API, programu PowerShell, interfejsu wiersza polecenia platformy Azure, języka Java lub REST. Aby uzyskać instrukcje dotyczące przeprowadzania uaktualnienia przy użyciu programu Visual Studio, zobacz Uaktualnianie aplikacji przy użyciu programu Visual Studio.
W przypadku monitorowanych uaktualnień stopniowego usługi Service Fabric administrator aplikacji może skonfigurować zasady oceny kondycji używane przez usługę Service Fabric do określenia, czy aplikacja jest w dobrej kondycji. Ponadto administrator może skonfigurować akcję, która ma zostać podjęta w przypadku niepowodzenia oceny kondycji (na przykład automatycznego wycofywania). W tej sekcji przedstawiono monitorowane uaktualnianie dla jednego z przykładów zestawu SDK korzystających z programu PowerShell.
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
Krok 1. Kompilowanie i wdrażanie przykładowych obiektów wizualnych
Skompiluj i opublikuj aplikację, klikając prawym przyciskiem myszy projekt aplikacji, VisualObjectsApplication i wybierając polecenie Publikuj . Aby uzyskać więcej informacji, zobacz Samouczek uaktualniania aplikacji usługi Service Fabric. Alternatywnie możesz użyć programu PowerShell do wdrożenia aplikacji.
Uwaga
Przed użyciem dowolnego polecenia usługi Service Fabric w programie PowerShell należy najpierw nawiązać połączenie z klastrem Connect-ServiceFabricCluster
przy użyciu polecenia cmdlet . Podobnie zakłada się, że klaster został już skonfigurowany na komputerze lokalnym. Zobacz artykuł dotyczący konfigurowania środowiska programistycznego usługi Service Fabric.
Po utworzeniu projektu w programie Visual Studio możesz użyć polecenia Programu PowerShell Copy-ServiceFabricApplicationPackage , aby skopiować pakiet aplikacji do magazynu obrazów. Jeśli chcesz zweryfikować pakiet aplikacji lokalnie, użyj polecenia cmdlet Test-ServiceFabricApplicationPackage . Następnym krokiem jest zarejestrowanie aplikacji w środowisku uruchomieniowym usługi Service Fabric przy użyciu polecenia cmdlet Register-ServiceFabricApplicationType . Poniższy krok polega na uruchomieniu wystąpienia aplikacji przy użyciu polecenia cmdlet New-ServiceFabricApplication . Te trzy kroki są podobne do używania elementu menu Wdróż w programie Visual Studio. Po zakończeniu aprowizacji należy wyczyścić skopiowany pakiet aplikacji z magazynu obrazów, aby zmniejszyć ilość wykorzystanych zasobów. Jeśli typ aplikacji nie jest już wymagany, powinien być wyrejestrowany z tego samego powodu. Aby uzyskać więcej informacji, zobacz Wdrażanie i usuwanie aplikacji przy użyciu programu PowerShell .
Teraz możesz użyć narzędzia Service Fabric Explorer, aby wyświetlić klaster i aplikację. Aplikacja ma usługę internetową, którą można przejść do programu Internet Explorer, wpisując http://localhost:8081/visualobjects
na pasku adresu. Na ekranie powinny pojawić się przestawne obiekty wizualne. Ponadto możesz użyć polecenia Get-ServiceFabricApplication , aby sprawdzić stan aplikacji.
Krok 2. Aktualizowanie przykładu obiektów wizualnych
Możesz zauważyć, że w przypadku wersji wdrożonej w kroku 1 obiekty wizualne nie obracają się. Uaktualnijmy tę aplikację do tej aplikacji, do której również obracają się obiekty wizualne.
Wybierz projekt VisualObjects.ActorService w rozwiązaniu VisualObjects i otwórz plik StatefulVisualObjectActor.cs. W tym pliku przejdź do metody MoveObject
, oznacz jako komentarz this.State.Move()
i usuń komentarz this.State.Move(true)
. Ta zmiana obraca obiekty po uaktualnieniu usługi.
Musimy również zaktualizować plik ServiceManifest.xml (w obszarze PackageRoot) projektu VisualObjects.ActorService. Zaktualizuj pakiet CodePackage i wersję usługi do wersji 2.0 oraz odpowiednie wiersze w pliku ServiceManifest.xml . Możesz użyć opcji Edytuj pliki manifestu programu Visual Studio po kliknięciu prawym przyciskiem myszy rozwiązania, aby wprowadzić zmiany w pliku manifestu.
Po wprowadzeniu zmian manifest powinien wyglądać podobnie do następującego (wyróżnione fragmenty pokazują zmiany):
<ServiceManifestName="VisualObjects.ActorService" Version="2.0" xmlns="http://schemas.microsoft.com/2011/01/fabric" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance">
<CodePackageName="Code" Version="2.0">
Teraz plik ApplicationManifest.xml (znaleziony w projekcie VisualObjects w rozwiązaniu VisualObjects) został zaktualizowany do wersji 2.0 projektu VisualObjects.ActorService. Ponadto wersja aplikacji jest aktualizowana do wersji 2.0.0.0 z wersji 1.0.0.0. ApplicationManifest.xml powinien wyglądać podobnie do następującego fragmentu kodu:
<ApplicationManifestxmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" ApplicationTypeName="VisualObjects" ApplicationTypeVersion="2.0.0.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">
<ServiceManifestRefServiceManifestName="VisualObjects.ActorService" ServiceManifestVersion="2.0" />
Teraz skompiluj projekt, wybierając tylko projekt ActorService , a następnie klikając prawym przyciskiem myszy i wybierając opcję Kompilacja w programie Visual Studio. W przypadku wybrania opcji Odbuduj wszystko należy zaktualizować wersje dla wszystkich projektów, ponieważ kod uległby zmianie. Następnie spakujmy zaktualizowaną aplikację, klikając prawym przyciskiem myszy pozycję VisualObjectsApplication, wybierając menu usługi Service Fabric i wybierając pozycję Pakiet. Ta akcja tworzy pakiet aplikacji, który można wdrożyć. Zaktualizowana aplikacja jest gotowa do wdrożenia.
Krok 3. Podjęcie decyzji o zasadach kondycji i parametrach uaktualniania
Zapoznaj się z parametrami uaktualniania aplikacji i procesem uaktualniania, aby uzyskać dobrą wiedzę na temat różnych parametrów uaktualnienia, limitów czasu i kryterium kondycji. W tym przewodniku kryterium oceny kondycji usługi jest ustawione na wartości domyślne (i zalecane), co oznacza, że wszystkie usługi i wystąpienia powinny być w dobrej kondycji po uaktualnieniu.
Zwiększmy jednak parametr HealthCheckStableDuration do 180 sekund (aby usługi były w dobrej kondycji przez co najmniej 120 sekund, zanim uaktualnienie przejdzie do następnej domeny aktualizacji). Ustawmy również wartość UpgradeDomainTimeout na 1200 sekund, a wartość UpgradeTimeout na 3000 sekund.
Na koniec ustawmy również opcję UpgradeFailureAction na wycofanie. Ta opcja wymaga, aby usługa Service Fabric wycofała aplikację do poprzedniej wersji, jeśli wystąpią jakiekolwiek problemy podczas uaktualniania. W związku z tym podczas uruchamiania uaktualnienia (w kroku 4) określono następujące parametry:
FailureAction = Wycofywanie
HealthCheckStableDurationSec = 180
UpgradeDomainTimeoutSec = 1200
UpgradeTimeout = 3000
Krok 4. Przygotowanie aplikacji do uaktualnienia
Teraz aplikacja jest skompilowana i gotowa do uaktualnienia. Jeśli otworzysz okno programu PowerShell jako administrator i wpiszesz polecenie Get-ServiceFabricApplication, poinformuj Cię, że jest to aplikacja typu 1.0.0.0 obiektów VisualObject, które zostały wdrożone.
Pakiet aplikacji jest przechowywany w następującej ścieżce względnej, w której zestaw SDK usługi Service Fabric został zdekompresowany: Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug. W tym katalogu powinien znajdować się folder "Pakiet", w którym jest przechowywany pakiet aplikacji. Sprawdź znaczniki czasu, aby upewnić się, że jest to najnowsza kompilacja (może być konieczne odpowiednie zmodyfikowanie ścieżek).
Teraz skopiujmy zaktualizowany pakiet aplikacji do magazynu obrazów usługi Service Fabric (gdzie pakiety aplikacji są przechowywane przez usługę Service Fabric). Parametr ApplicationPackagePathInImageStore informuje usługę Service Fabric, gdzie można znaleźć pakiet aplikacji. Zaktualizowana aplikacja została umieszczona w ciągu "VisualObjects_V2" za pomocą następującego polecenia (może być konieczne ponowne zmodyfikowanie ścieżek).
Copy-ServiceFabricApplicationPackage -ApplicationPackagePath .\Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug\Package -ApplicationPackagePathInImageStore "VisualObjects\_V2"
Następnym krokiem jest zarejestrowanie tej aplikacji w usłudze Service Fabric, którą można wykonać za pomocą polecenia Register-ServiceFabricApplicationType :
Register-ServiceFabricApplicationType -ApplicationPathInImageStore "VisualObjects\_V2"
Jeśli poprzednie polecenie nie powiedzie się, prawdopodobnie potrzebujesz ponownej kompilacji wszystkich usług. Jak wspomniano w kroku 2, może być również konieczne zaktualizowanie wersji usługi sieci Web.
Zaleca się usunięcie pakietu aplikacji po pomyślnym zarejestrowaniu aplikacji. Usuwanie pakietów aplikacji z magazynu obrazów zwalnia zasoby systemowe. Przechowywanie nieużywanych pakietów aplikacji zużywa magazyn dysku i prowadzi do problemów z wydajnością aplikacji.
Remove-ServiceFabricApplicationPackage -ApplicationPackagePathInImageStore "VisualObjects\_V2" -ImageStoreConnectionString fabric:ImageStore
Krok 5. Rozpoczęcie uaktualniania aplikacji
Teraz wszystko jest gotowe do uruchomienia uaktualnienia aplikacji przy użyciu polecenia Start-ServiceFabricApplicationUpgrade :
Start-ServiceFabricApplicationUpgrade -ApplicationName fabric:/VisualObjects -ApplicationTypeVersion 2.0.0.0 -HealthCheckStableDurationSec 60 -UpgradeDomainTimeoutSec 1200 -UpgradeTimeout 3000 -FailureAction Rollback -Monitored
Nazwa aplikacji jest taka sama jak opisana w pliku ApplicationManifest.xml . Usługa Service Fabric używa tej nazwy do identyfikowania aplikacji, która jest uaktualniana. Jeśli ustawisz limity czasu na zbyt krótkie, może wystąpić komunikat o błędzie informujący o problemie. Zapoznaj się z sekcją rozwiązywania problemów lub zwiększ limity czasu.
Teraz, gdy uaktualnianie aplikacji będzie kontynuowane, możesz monitorować je za pomocą narzędzia Service Fabric Explorer lub za pomocą polecenia Get-ServiceFabricApplicationUpgrade programu PowerShell:
Get-ServiceFabricApplicationUpgrade fabric:/VisualObjects
W ciągu kilku minut stan otrzymany przy użyciu poprzedniego polecenia programu PowerShell powinien określać, że wszystkie domeny aktualizacji zostały uaktualnione (ukończone). I powinno się okazać, że obiekty wizualne w oknie przeglądarki zaczęły obracać się!
Możesz spróbować przeprowadzić uaktualnienie z wersji 2 do wersji 3 lub z wersji 2 do wersji 1 jako ćwiczenia. Przejście z wersji 2 do wersji 1 jest również uznawane za uaktualnienie. Graj z limitami czasu i zasadami dotyczącymi kondycji, aby zapoznać się z nimi. Podczas wdrażania w klastrze platformy Azure należy odpowiednio ustawić parametry. Dobrze jest ustawić limity czasu konserwatywnie.
Następne kroki
Uaktualnianie aplikacji przy użyciu programu Visual Studio przeprowadzi Cię przez proces uaktualniania aplikacji przy użyciu programu Visual Studio.
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 instrukcji opisanych w temacie Rozwiązywanie problemów z uaktualnieniami aplikacji.