Bereitstellen und Entfernen von Anwendungen mit PowerShellDeploy and remove applications using PowerShell


Sobald der Anwendungstyp gepackt wurde, ist die Anwendung für die Bereitstellung in einem Azure Service Fabric-Cluster bereit.Once an application type has been packaged, it's ready for deployment into an Azure Service Fabric cluster. Die Bereitstellung umfasst die folgenden drei Schritte:Deployment involves the following three steps:

  1. Hochladen des Anwendungspakets in den ImagespeicherUpload the application package to the image store.
  2. Registrieren des Anwendungstyps mit dem relativen Pfad des ImagespeichersRegister the application type with image store relative path.
  3. Erstellen Sie die Anwendungsinstanz.Create the application instance.

Sobald die bereitgestellte Anwendung nicht mehr benötigt wird, können Sie die Anwendungsinstanz und deren Anwendungstyp löschen.Once the deployed application is no longer required, you can delete the application instance and its application type. Das vollständige Entfernen einer Anwendung aus dem Cluster umfasst die folgenden Schritte:To completely remove an application from the cluster involves the following steps:

  1. Entfernen (oder Löschen) der ausgeführten AnwendungsinstanzRemove (or delete) the running application instance.
  2. Aufheben der Registrierung des Anwendungstyps, wenn er nicht mehr benötigt wirdUnregister the application type if you no longer need it.
  3. Entfernen des Anwendungspakets aus dem ImagespeicherRemove the application package from the image store.

Wenn Sie Visual Studio zum Bereitstellen und Debuggen von Anwendungen in Ihrem lokalen Entwicklungscluster verwenden, werden alle vorherigen Schritte automatisch über ein PowerShell-Skript ausgeführt.If you use Visual Studio for deploying and debugging applications on your local development cluster, all the preceding steps are handled automatically through a PowerShell script. Dieses Skript befindet sich im Ordner Skripts des Anwendungsprojekts.This script is found in the Scripts folder of the application project. In diesem Artikel wird die grundlegende Funktionsweise dieses Skripts erläutert, sodass Sie die gleichen Vorgänge außerhalb von Visual Studio ausführen können.This article provides background on what that script is doing so that you can perform the same operations outside of Visual Studio.

Eine weitere Möglichkeit zum Bereitstellen einer Anwendung besteht darin, eine externe Bereitstellung zu verwenden.Another way to deploy an application is by using external provision. Das Anwendungspaket kann als sfpkg gepackt und in einen externen Speicher hochgeladen werden.The application package can be packaged as sfpkg and uploaded to an external store. In diesem Fall ist kein Upload in den Imagespeicher erforderlich.In this case, upload to the image store is not needed. Für die Bereitstellung sind die folgenden Schritte erforderlich:Deployment needs the following steps:

  1. Laden Sie die sfpkg in einen externen Speicher hoch.Upload the sfpkg to an external store. Beim externen Speicher kann es sich um einen beliebigen Speicher handeln, der einen HTTP- oder HTTPS-REST-Endpunkt verfügbar macht.The external store can be any store that exposes a REST http or https endpoint.
  2. Registrieren Sie den Anwendungstyp unter Verwendung des Download-URIs für den externen Speicher und der Typinformationen für die Anwendung.Register the application type using the external download URI and the application type information.
  3. Erstellen Sie die Anwendungsinstanz.Create the application instance.

Entfernen Sie zur Bereinigung die Anwendungsinstanzen, und heben Sie die Registrierung des Anwendungstyps auf.For cleanup, remove the application instances and unregister the application type. Da das Paket nicht in den Imagespeicher kopiert wurde, muss kein temporärer Speicherort bereinigt werden.Because the package was not copied to the image store, there is no temporary location to cleanup. Ab Service Fabric, Version 6.1, ist eine Bereitstellung aus dem externen Speicher verfügbar.Provisioning from external store is available starting with Service Fabric version 6.1.

Hinweis

Visual Studio unterstützt derzeit keine externe Bereitstellung.Visual Studio does not currently support external provision.

Herstellen einer Verbindung mit dem ClusterConnect to the cluster

Bevor Sie die in diesem Artikel aufgeführten PowerShell-Befehle ausführen, stellen Sie immer zuerst über Connect-ServiceFabricCluster eine Verbindung mit dem Service Fabric-Cluster her.Before you run any PowerShell commands in this article, always start by using Connect-ServiceFabricCluster to connect to the Service Fabric cluster. Führen Sie zum Herstellen der Verbindung mit dem lokalen Entwicklungscluster den folgenden Befehl aus:To connect to the local development cluster, run the following:

Connect-ServiceFabricCluster

Beispiele für das Herstellen einer Verbindung mit einem Remotecluster bzw. einem mit Azure Active Directory, X509-Zertifikaten oder Windows Active Directory gesicherten Cluster finden Sie unter Herstellen einer Verbindung mit einem sicheren Cluster.For examples of connecting to a remote cluster or cluster secured using Azure Active Directory, X509 certificates, or Windows Active Directory see Connect to a secure cluster.

Hochladen des AnwendungspaketsUpload the application package

Beim Hochladen des Anwendungspakets wird das Paket an einem Speicherort gespeichert, an dem interne Service Fabric-Komponenten auf das Paket zugreifen können.Uploading the application package puts it in a location that's accessible by internal Service Fabric components. Wenn Sie das Anwendungspaket lokal überprüfen möchten, verwenden Sie das Cmdlet Test-ServiceFabricApplicationPackage.If you want to verify the application package locally, use the Test-ServiceFabricApplicationPackage cmdlet.

Mit dem Befehl Copy-ServiceFabricApplicationPackage wird das Anwendungspaket in den Clusterimagespeicher hochgeladen.The Copy-ServiceFabricApplicationPackage command uploads the application package to the cluster image store.

Angenommen, Sie erstellen und verpacken eine Anwendung namens MyApplication in Visual Studio 2015.Suppose you build and package an application named MyApplication in Visual Studio 2015. Der Name des Anwendungstyps ist in der Datei „ApplicationManifest.xml“ standardmäßig als „MyApplicationType“ aufgeführt.By default, the application type name listed in the ApplicationManifest.xml is "MyApplicationType". Das Anwendungspaket mit den erforderlichen Anwendungs- und Dienstmanifesten sowie Code-/Konfigurations-/Datenpaketen befindet sich in C:\Benutzer<Benutzername>\Eigene Dokumente\Visual Studio 2015\Projekte\MeineAnwendung\MeineAnwendung\pkg\Debuggen.The application package, which contains the necessary application manifest, service manifests, and code/config/data packages, is located in C:\Users<username>\Documents\Visual Studio 2015\Projects\MyApplication\MyApplication\pkg\Debug.

Mit dem folgenden Befehl werden die Inhalte des Anwendungspakets aufgelistet:The following command lists the contents of the application package:

$path = 'C:\Users\<user\>\Documents\Visual Studio 2015\Projects\MyApplication\MyApplication\pkg\Debug'
tree /f $path
Folder PATH listing for volume OSDisk
Volume serial number is 0459-2393
C:\USERS\USER\DOCUMENTS\VISUAL STUDIO 2015\PROJECTS\MYAPPLICATION\MYAPPLICATION\PKG\DEBUG
│   ApplicationManifest.xml
│
└───Stateless1Pkg
    │   ServiceManifest.xml
    │
    ├───Code
    │       Microsoft.ServiceFabric.Data.dll
    │       Microsoft.ServiceFabric.Data.Interfaces.dll
    │       Microsoft.ServiceFabric.Internal.dll
    │       Microsoft.ServiceFabric.Internal.Strings.dll
    │       Microsoft.ServiceFabric.Services.dll
    │       ServiceFabricServiceModel.dll
    │       Stateless1.exe
    │       Stateless1.exe.config
    │       Stateless1.pdb
    │       System.Fabric.dll
    │       System.Fabric.Strings.dll
    │
    └───Config
            Settings.xml

Wenn das Anwendungspaket groß ist und/oder viele Dateien enthält, können Sie es komprimieren.If the application package is large and/or has many files, you can compress it. Durch eine Komprimierung werden Größe und Anzahl der Dateien verringert.The compression reduces the size and the number of files. Ein positiver Nebeneffekt dabei ist, dass die Registrierung und die Aufhebung der Registrierung des Anwendungstyps schneller erfolgen.The side effect is that registering and un-registering the application type are faster. Der Upload kann sich in diesem Zeitraum eventuell verlangsamen, insbesondere, wenn Sie die Zeit zur Komprimierung des Pakets berücksichtigen.Upload time may be slower currently, especially if you include the time to compress the package.

Mit demselben Befehl Copy-ServiceFabricApplicationPackage wird das Paket komprimiert.To compress a package, use the same Copy-ServiceFabricApplicationPackage command. Die Komprimierung kann getrennt vom Upload mithilfe des Flags SkipCopy oder beim Uploadvorgang durchgeführt werden.Compression can be done separate from upload, by using the SkipCopy flag, or together with the upload operation. Die Komprimierung eines komprimierten Pakets ist nicht möglich.Applying compression on a compressed package is no-op. Mit demselben Befehl Copy-ServiceFabricApplicationPackage mit dem Schalter UncompressPackage wird ein komprimiertes Paket dekomprimiert.To uncompress a compressed package, use the same Copy-ServiceFabricApplicationPackage command with the UncompressPackage switch.

Mit dem folgenden Cmdlet wird das Paket komprimiert, ohne dass es im Abbildspeicher kopiert wird.The following cmdlet compresses the package without copying it to the image store. Das Paket enthält nun ZIP-Dateien für die Pakete Code und Config.The package now includes zipped files for the Code and Config packages. Die Anwendungs- und Dienstmanifeste werden nicht komprimiert, da sie für zahlreiche interne Vorgänge (z.B. Paketfreigabe, Extraktion des Namen und der Version des Anwendungstyps für bestimmte Überprüfungen) benötigt werden.The application and the service manifests are not zipped, because they are needed for many internal operations (like package sharing, application type name and version extraction for certain validations). Eine Komprimierung der Manifeste würde dazu führen, dass diese Vorgänge unwirksam werden.Zipping the manifests would make these operations inefficient.

Copy-ServiceFabricApplicationPackage -ApplicationPackagePath $path -CompressPackage -SkipCopy
tree /f $path
Folder PATH listing for volume OSDisk
Volume serial number is 0459-2393
C:\USERS\USER\DOCUMENTS\VISUAL STUDIO 2015\PROJECTS\MYAPPLICATION\MYAPPLICATION\PKG\DEBUG
|   ApplicationManifest.xml
|
└───Stateless1Pkg
       Code.zip
       Config.zip
       ServiceManifest.xml

Die Komprimierung erfordert bei großen Anwendungspaketen Zeit.For large application packages, the compression takes time. Um optimale Ergebnisse zu erzielen, sollten Sie ein schnelles SSD-Laufwerk verwenden.For best results, use a fast SSD drive. Die Komprimierungszeit und die Größe des komprimierten Pakets variieren zudem je nach dem Inhalt des Pakets.The compression times and the size of the compressed package also differ based on the package content. Im Folgenden werden beispielhaft Komprimierungsstatistiken für einige Pakete aufgeführt, die die ursprüngliche und die komprimierte Paketgröße mit der Komprimierungszeit angeben.For example, here is compression statistics for some packages, which show the initial and the compressed package size, with the compression time.

Ursprüngliche Größe (MB)Initial size (MB) DateianzahlFile count KomprimierungszeitCompression Time Größe des komprimierten Pakets (MB)Compressed package size (MB)
100100 100100 00:00:03.354759200:00:03.3547592 6060
512512 100100 00:00:16.385030300:00:16.3850303 307307
10241024 500500 00:00:32.590795000:00:32.5907950 615615
20482048 10001000 00:01:04.377555400:01:04.3775554 12311231
50125012 100100 00:02:45.295128800:02:45.2951288 30743074

Nachdem ein Paket komprimiert wurde, kann es bei Bedarf in einen oder in mehrere Service Fabric-Cluster hochgeladen werden.Once a package is compressed, it can be uploaded to one or multiple Service Fabric clusters as needed. Für komprimierte und nicht komprimierte Pakete gilt dasselbe Bereitstellungsverfahren.The deployment mechanism is same for compressed and uncompressed packages. Komprimierte Pakete werden in dieser Form im Clusterimagespeicher gespeichert.Compressed packages are stored as such in the cluster image store. Die Pakete werden auf dem Knoten dekomprimiert, bevor die Anwendung ausgeführt wird.The packages are uncompressed on the node, before the application is run.

Im folgenden Beispiel wird das Paket in den Imagespeicher in einen Ordner mit dem Namen „MyApplicationV1“ hochgeladen:The following example uploads the package to the image store, into a folder named "MyApplicationV1":

Copy-ServiceFabricApplicationPackage -ApplicationPackagePath $path -ApplicationPackagePathInImageStore MyApplicationV1 -TimeoutSec 1800

Wenn Sie den Parameter -ApplicationPackagePathInImageStore nicht angeben, wird das Anwendungspaket in den Ordner „Debug“ im Imagespeicher kopiert.If you do not specify the -ApplicationPackagePathInImageStore parameter, the application package is copied into the "Debug" folder in the image store.

Hinweis

Wenn die PowerShell-Sitzung mit einem Service Fabric-Cluster verbunden ist, erkennt Copy-ServiceFabricApplicationPackage automatisch die entsprechende Verbindungszeichenfolge des Imagespeichers.Copy-ServiceFabricApplicationPackage will automatically detect the appropriate image store connection string if the PowerShell session is connected to a Service Fabric cluster. Bei Service Fabric-Versionen, die älter als 5.6 sind, muss explizit das Argument -ImageStoreConnectionString angegeben werden.For Service Fabric versions older than 5.6, the -ImageStoreConnectionString argument must be explicitly provided.

PS C:\> Copy-ServiceFabricApplicationPackage -ApplicationPackagePath $path -ApplicationPackagePathInImageStore MyApplicationV1 -ImageStoreConnectionString (Get-ImageStoreConnectionStringFromClusterManifest(Get-ServiceFabricClusterManifest)) -TimeoutSec 1800

Das Cmdlet Get-ImageStoreConnectionStringFromClusterManifest ist Teil des Service Fabric-SDK-PowerShell-Moduls und wird verwendet, um die Imagespeicher-Verbindungszeichenfolge abzurufen.The Get-ImageStoreConnectionStringFromClusterManifest cmdlet, which is part of the Service Fabric SDK PowerShell module, is used to get the image store connection string. Um das SDK-Modul zu importieren, führen Sie Folgendes aus:To import the SDK module, run:

Import-Module "$ENV:ProgramFiles\Microsoft SDKs\Service Fabric\Tools\PSModule\ServiceFabricSDK\ServiceFabricSDK.psm1"

Weitere Informationen zum Imagespeicher und zur Imagespeicher-Verbindungszeichenfolge finden Sie unter Grundlegendes zur Imagespeicher-Verbindungszeichenfolge.See Understand the image store connection string for supplementary information about the image store and image store connection string.

Die Zeit zum Hochladen eines Pakets hängt von verschiedenen Faktoren ab.The time it takes to upload a package differs depending on multiple factors. Zu einigen dieser Faktoren zählen die Anzahl der Dateien im Paket, die Paketgröße und die Dateigrößen.Some of these factors are the number of files in the package, the package size, and the file sizes. Die Netzwerkgeschwindigkeit zwischen dem Quellcomputer und dem Service Fabric-Cluster wirkt sich auch auf die Uploadzeit aus.The network speed between the source machine and the Service Fabric cluster also impacts the upload time. Das Standardtimeout für Copy-ServiceFabricApplicationPackage beträgt 30 Minuten.The default timeout for Copy-ServiceFabricApplicationPackage is 30 minutes. Abhängig von den beschriebenen Faktoren müssen Sie eventuell das Timeout erhöhen.Depending on the described factors, you may have to increase the timeout. Wenn Sie das Paket beim Aufrufen der Kopierfunktion komprimieren, müssen Sie auch die Zeit für die Komprimierung in Betracht ziehen.If you are compressing the package in the copy call, you need to also consider the compression time.

Registrieren des AnwendungspaketsRegister the application package

Der Anwendungstyp und die Version, der bzw. die im Anwendungsmanifest deklariert sind, werden beim Registrieren des Anwendungspakets verfügbar.The application type and version declared in the application manifest become available for use when the application package is registered. Das System liest das im vorherigen Schritt hochgeladene Paket, überprüft es, verarbeitet den Inhalt des Pakets und kopiert das verarbeitete Paket an einen internen Systemspeicherort.The system reads the package uploaded in the previous step, verifies the package, processes the package contents, and copies the processed package to an internal system location.

Führen Sie das Cmdlet Register ServiceFabricApplicationType aus, um den Anwendungstyp im Cluster zu registrieren, und für die Bereitstellung verfügbar zu machen:Run the Register-ServiceFabricApplicationType cmdlet to register the application type in the cluster and make it available for deployment:

Registrieren des in den Imagespeicher kopierten AnwendungspaketsRegister the application package copied to image store

Wenn ein Paket zuvor in den Imagespeicher kopiert wurde, wird vom Registrierungsvorgang der relative Pfad im Imagespeicher angegeben.When a package was previously copied to the image store, the register operation specifies the relative path in the image store.

Register-ServiceFabricApplicationType -ApplicationPathInImageStore MyApplicationV1
Register application type succeeded

„MyApplicationV1“ ist der Ordner im Imagespeicher, in dem sich das Anwendungspaket befindet."MyApplicationV1" is the folder in the image store where the application package is located. Der Anwendungstyp mit dem Namen „MyApplicationType“ und Version „1.0.0“ (beides befindet sich im Anwendungsmanifest) ist jetzt im Cluster registriert.The application type with name "MyApplicationType" and version "1.0.0" (both are found in the application manifest) is now registered in the cluster.

Registrieren des in einen externen Speicher kopierten AnwendungspaketsRegister the application package copied to an external store

Ab Service Fabric, Version 6.1, unterstützt die Bereitstellung das Herunterladen des Pakets aus einem externen Speicher.Starting with Service Fabric version 6.1, provision supports downloading the package from an external store. Der Download-URI stellt den Pfad zum sfpkg-Anwendungspaket dar, unter dem das Anwendungspaket über das HTTP- oder HTTPS-Protokoll heruntergeladen werden kann.The download URI represents the path to the sfpkg application package from where the application package can be downloaded using HTTP or HTTPS protocols. Das Paket muss zuvor an diesen externen Speicherort hochgeladen worden sein.The package must have been previously uploaded to this external location. Der URI muss Lesezugriffe zulassen, damit die Datei von Service Fabric heruntergeladen werden kann.The URI must allow READ access so Service Fabric can download the file. Die sfpkg-Datei muss die Erweiterung „.sfpkg“ aufweisen.The sfpkg file must have the extension ".sfpkg". Der Bereitstellungsvorgang sollte die Informationen zum Anwendungstyp beinhalten, wie im Anwendungsmanifest angegeben.The provision operation should include the application type information, as found in the application manifest.

Register-ServiceFabricApplicationType -ApplicationPackageDownloadUri "https://sftestresources.blob.core.windows.net:443/sfpkgholder/MyAppPackage.sfpkg" -ApplicationTypeName MyApp -ApplicationTypeVersion V1 -Async

Der Befehl Register-ServiceFabricApplicationType wird erst zurückgegeben, wenn das Anwendungspaket vom System erfolgreich registriert wurde.The Register-ServiceFabricApplicationType command returns only after the system has successfully registered the application package. Die Dauer des Registriervorgangs hängt von der Größe und dem Inhalt des Anwendungspakets ab.How long registration takes depends on the size and contents of the application package. Verwenden Sie bei Bedarf den Parameter -TimeoutSec, wenn ein längeres Zeitlimit erforderlich ist (das Standardzeitlimit beträgt 60 Sekunden).If needed, the -TimeoutSec parameter can be used to supply a longer timeout (the default timeout is 60 seconds).

Wenn es sich um ein großes Anwendungspaket handelt oder Timeouts auftreten, verwenden Sie den Parameter -Async.If you have a large application package or if you are experiencing timeouts, use the -Async parameter. Der Befehl wird zurückgegeben, wenn der Cluster den Registrierungsbefehl akzeptiert.The command returns when the cluster accepts the register command. Der Registrierungsvorgang wird bei Bedarf fortgesetzt.The register operation continues as needed. Mit dem Befehl Get-ServiceFabricApplicationType werden die Anwendungstypversionen und deren Registrierungsstatus aufgelistet.The Get-ServiceFabricApplicationType command lists the application type versions and their registration status. Sie können mithilfe dieses Befehls ermitteln, wann die Registrierung abgeschlossen ist.You can use this command to determine when the registration is done.

Get-ServiceFabricApplicationType
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
Status                 : Available
DefaultParameters      : { "Stateless1_InstanceCount" = "-1" }

Entfernen eines Anwendungspakets aus dem ImagespeicherRemove an application package from the image store

Wenn ein Paket in den Imagespeicher kopiert wurde, sollten Sie es aus dem temporären Verzeichnis entfernen, nachdem die Anwendung erfolgreich registriert wurde.If a package was copied to the image store, you should remove it from the temporary location after the application is successfully registered. Sie können Systemressourcen freigeben, indem Sie Anwendungspakete aus dem Imagespeicher löschen.Deleting application packages from the image store frees up system resources. Die Speicherung nicht verwendeter Anwendungspakete nimmt Speicherplatz in Anspruch und führt zu Leistungsproblemen der Anwendung.Keeping unused application packages consumes disk storage and leads to application performance issues.

Remove-ServiceFabricApplicationPackage -ApplicationPackagePathInImageStore MyApplicationV1

Erstellen der AnwendungCreate the application

Sie können eine Anwendung mit einer beliebigen Version des Anwendungstyps instanziieren, die mit dem Cmdlet New-ServiceFabricApplication erfolgreich registriert wurde.You can instantiate an application from any application type version that has been registered successfully by using the New-ServiceFabricApplication cmdlet. Der Name jeder Anwendung muss mit dem „fabric:“ -Schema beginnen und für jede Anwendungsinstanz eindeutig sein.The name of each application must start with the "fabric:" scheme and must be unique for each application instance. Wenn im Anwendungsmanifest des Zielanwendungstyps Standarddienste festgelegt wurden, werden diese ebenfalls erstellt.Any default services defined in the application manifest of the target application type are also created.

New-ServiceFabricApplication fabric:/MyApp MyApplicationType 1.0.0
ApplicationName        : fabric:/MyApp
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
ApplicationParameters  : {}

Für jede Version des registrierten Anwendungstyps können mehrere Anwendungsinstanzen erstellt werden.Multiple application instances can be created for any given version of a registered application type. Jede Anwendungsinstanz wird isoliert mit einem eigenen Arbeitsverzeichnis und Prozess ausgeführt.Each application instance runs in isolation, with its own work directory and process.

Zum Anzeigen welche benannten Apps und Dienste im Cluster ausgeführt werden, führen Sie die Cmdlets Get-ServiceFabricApplication und Get ServiceFabricService aus:To see which named apps and services are running in the cluster, run the Get-ServiceFabricApplication and Get-ServiceFabricService cmdlets:

Get-ServiceFabricApplication  
ApplicationName        : fabric:/MyApp
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
ApplicationStatus      : Ready
HealthState            : Ok
ApplicationParameters  : {}
Get-ServiceFabricApplication | Get-ServiceFabricService
ServiceName            : fabric:/MyApp/Stateless1
ServiceKind            : Stateless
ServiceTypeName        : Stateless1Type
IsServiceGroup         : False
ServiceManifestVersion : 1.0.0
ServiceStatus          : Active
HealthState            : Ok

Entfernen einer AnwendungRemove an application

Wird eine Anwendungsinstanz nicht mehr benötigt, können Sie diese anhand des Namens mit dem Cmdlet Remove-ServiceFabricApplication endgültig entfernen.When an application instance is no longer needed, you can permanently remove it by name using the Remove-ServiceFabricApplication cmdlet. Mit Remove-ServiceFabricApplication werden auch alle Dienste automatisch entfernt, die mit der Anwendung verknüpft sind, d.h. der Dienstzustand wird vollständig und dauerhaft entfernt.Remove-ServiceFabricApplication automatically removes all services that belong to the application as well, permanently removing all service state.

Warnung

Dieser Vorgang kann nicht rückgängig gemacht werden, und der Anwendungsstatus kann nicht wiederhergestellt werden.This operation cannot be reversed, and application state cannot be recovered.

Remove-ServiceFabricApplication fabric:/MyApp
Confirm
Continue with this operation?
[Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):
Remove application instance succeeded
Get-ServiceFabricApplication

Aufheben der Registrierung eines AnwendungstypsUnregister an application type

Wird eine bestimmte Version eines Anwendungstyps nicht mehr benötigt, sollten Sie die Registrierung des Anwendungstyps mit dem Cmdlet Unregister-ServiceFabricApplicationType aufheben.When a particular version of an application type is no longer needed, you should unregister the application type using the Unregister-ServiceFabricApplicationType cmdlet. Durch das Aufheben der Registrierung nicht verwendeter Anwendungstypen wird der vom Imagespeicher verwendete Speicherplatz freigegeben, indem Anwendungstypdateien entfernt werden.Unregistering unused application types releases storage space used by the image store by removing the application type files. Beim Aufheben der Registrierung eines Anwendungstyps wird das Anwendungspaket, das in das temporäre Verzeichnis des Imagespeichers kopiert wurde, nicht entfernt (falls ein Kopiervorgang in den Imagespeicher ausgeführt wurde).Unregistering an application type does not remove the application package copied to the image store temporary location, if copy to the image store was used. Die Registrierung eines Anwendungstyps kann nur aufgehoben werden, wenn keine Anwendungen für den Typ instanziiert sind und keine ausstehenden Anwendungsupgrades vorliegen, die auf den Typ verweisen.An application type can be unregistered as long as no applications are instantiated against it and no pending application upgrades are referencing it.

Führen Sie Get-ServiceFabricApplicationType aus, um die derzeit im Cluster registrierten Anwendungstypen anzuzeigen:Run Get-ServiceFabricApplicationType to see the application types currently registered in the cluster:

Get-ServiceFabricApplicationType
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
Status                 : Available
DefaultParameters      : { "Stateless1_InstanceCount" = "-1" }

Führen Sie Unregister-ServiceFabricApplicationType aus, um die Registrierung eines bestimmten Anwendungstyps aufzuheben:Run Unregister-ServiceFabricApplicationType to unregister a specific application type:

Unregister-ServiceFabricApplicationType MyApplicationType 1.0.0

ProblembehandlungTroubleshooting

Copy-ServiceFabricApplicationPackage fordert einen ImageStoreConnectionString anCopy-ServiceFabricApplicationPackage asks for an ImageStoreConnectionString

Die Service Fabric-SDK-Umgebung sollte bereits mit den richtigen Standardeinstellungen eingerichtet sein.The Service Fabric SDK environment should already have the correct defaults set up. Wichtig ist, dass der ImageStoreConnectionString für alle Befehle mit dem vom Service Fabric-Cluster verwendeten Wert übereinstimmt.But if needed, the ImageStoreConnectionString for all commands should match the value that the Service Fabric cluster is using. Sie finden „ImageStoreConnectionString“ im Clustermanifest, das über die Befehle Get-ServiceFabricClusterManifest und „Get-ImageStoreConnectionStringFromClusterManifest“ abgerufen wird:You can find the ImageStoreConnectionString in the cluster manifest, retrieved using the Get-ServiceFabricClusterManifest and Get-ImageStoreConnectionStringFromClusterManifest commands:

Get-ImageStoreConnectionStringFromClusterManifest(Get-ServiceFabricClusterManifest)

Das Cmdlet Get-ImageStoreConnectionStringFromClusterManifest ist Teil des Service Fabric-SDK-PowerShell-Moduls und wird verwendet, um die Imagespeicher-Verbindungszeichenfolge abzurufen.The Get-ImageStoreConnectionStringFromClusterManifest cmdlet, which is part of the Service Fabric SDK PowerShell module, is used to get the image store connection string. Um das SDK-Modul zu importieren, führen Sie Folgendes aus:To import the SDK module, run:

Import-Module "$ENV:ProgramFiles\Microsoft SDKs\Service Fabric\Tools\PSModule\ServiceFabricSDK\ServiceFabricSDK.psm1"

ImageStoreConnectionString ist im Clustermanifest zu finden:The ImageStoreConnectionString is found in the cluster manifest:

<ClusterManifest xmlns:xsd="https://www.w3.org/2001/XMLSchema" xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance" Name="Server-Default-SingleNode" Version="1.0" xmlns="http://schemas.microsoft.com/2011/01/fabric">

    [...]

    <Section Name="Management">
      <Parameter Name="ImageStoreConnectionString" Value="file:D:\ServiceFabric\Data\ImageStore" />
    </Section>

    [...]

Weitere Informationen zum Imagespeicher und zur Imagespeicher-Verbindungszeichenfolge finden Sie unter Grundlegendes zur Imagespeicher-Verbindungszeichenfolge.See Understand the image store connection string for supplementary information about the image store and image store connection string.

Bereitstellen eines großen AnwendungspaketsDeploy large application package

Problem: Bei einem großen Anwendungspaket (im GB-Bereich) tritt bei Verwendung von Copy-ServiceFabricApplicationPackage ein Timeout auf.Issue: Copy-ServiceFabricApplicationPackage times out for a large application package (order of GB). Versuchen Sie Folgendes:Try:

  • Geben Sie bei dem Befehl Copy-ServiceFabricApplicationPackage mit dem Parameter TimeoutSec einen höheren Timeoutwert an.Specify a larger timeout for Copy-ServiceFabricApplicationPackage command, with TimeoutSec parameter. Das Timeout beträgt standardmäßig 30 Minuten.By default, the timeout is 30 minutes.
  • Überprüfen Sie die Netzwerkverbindung zwischen Ihrem Quellcomputer und dem Cluster.Check the network connection between your source machine and cluster. Ziehen Sie bei einer langsamen Verbindung die Verwendung eines Computers mit einer besseren Netzwerkverbindung in Betracht.If the connection is slow, consider using a machine with a better network connection. Wenn sich der Clientcomputer in einem anderen Bereich als der Cluster befindet, sollten Sie einen Clientcomputer in einem näher gelegenen oder im selben Bereich wie den des Clusters verwenden.If the client machine is in another region than the cluster, consider using a client machine in a closer or same region as the cluster.
  • Überprüfen Sie, ob Sie von einer externen Drosselung betroffen sind.Check if you are hitting external throttling. Wenn der Abbildspeicher beispielsweise für die Verwendung des Azure-Speichers konfiguriert ist, wird der Upload eventuell gedrosselt.For example, when the image store is configured to use azure storage, upload may be throttled.

Problem: Das Paket wurde erfolgreich hochgeladen, allerdings tritt bei Verwendung von Register-ServiceFabricApplicationType ein Timeout auf. Versuchen Sie Folgendes:Issue: Upload package completed successfully, but Register-ServiceFabricApplicationType times out. Try:

  • Komprimieren Sie das Paket, bevor Sie es in den Abbildspeicher kopieren.Compress the package before copying to the image store. Durch eine Komprimierung werden Größe und Anzahl der Dateien verringert, wodurch wiederum die Menge des Datenverkehrs und der Aufgaben, die das Service Fabric durchführen muss, reduziert wird.The compression reduces the size and the number of files, which in turn reduces the amount of traffic and work that Service Fabric must perform. Der Upload kann sich eventuell verlangsamen (insbesondere, wenn Sie die Komprimierungszeit berücksichtigen), allerdings werden die Registrierung und die Aufhebung der Registrierung des Anwendungstyps schneller durchgeführt.The upload operation may be slower (especially if you include the compression time), but register and un-register the application type are faster.
  • Geben Sie bei dem Befehl Register-ServiceFabricApplicationType mit dem Parameter TimeoutSec einen höheren Timeoutwert an.Specify a larger timeout for Register-ServiceFabricApplicationType with TimeoutSec parameter.
  • Legen Sie den Schalter Async für Register-ServiceFabricApplicationType fest.Specify Async switch for Register-ServiceFabricApplicationType. Der Befehl gibt etwas zurück, wenn das Cluster den Befehl annimmt und die Registrierung des Anwendungstyps wird asynchron fortgesetzt.The command returns when the cluster accepts the command and the registration of the application type continues asynchronously. Aus diesem Grund muss in diesem Fall kein höherer Timeoutwert angegeben werden.For this reason, there is no need to specify a higher timeout in this case. Der Befehl Get-ServiceFabricApplicationType listet alle erfolgreich registrierten Anwendungstypversionen und deren Registrierungsstatus auf.The Get-ServiceFabricApplicationType command lists all successfully registered application type versions and their registration status. Sie können mithilfe dieses Befehls ermitteln, wann die Registrierung abgeschlossen ist.You can use this command to determine when the registration is done.
Get-ServiceFabricApplicationType
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
Status                 : Available
DefaultParameters      : { "Stateless1_InstanceCount" = "-1" }

Bereitstellen eines Anwendungspakets mit vielen DateienDeploy application package with many files

Problem: Bei einem Anwendungspaket mit vielen Dateien (im Tausenderbereich) tritt bei Verwendung von Register-ServiceFabricApplicationType ein Timeout auf.Issue: Register-ServiceFabricApplicationType times out for an application package with many files (order of thousands). Versuchen Sie Folgendes:Try:

  • Komprimieren Sie das Paket, bevor Sie es in den Abbildspeicher kopieren.Compress the package before copying to the image store. Durch eine Komprimierung wird die Anzahl der Dateien verringert.The compression reduces the number of files.
  • Geben Sie bei dem Befehl Register-ServiceFabricApplicationType mit dem Parameter TimeoutSec einen höheren Timeoutwert an.Specify a larger timeout for Register-ServiceFabricApplicationType with TimeoutSec parameter.
  • Legen Sie den Schalter Async für Register-ServiceFabricApplicationType fest.Specify Async switch for Register-ServiceFabricApplicationType. Der Befehl gibt etwas zurück, wenn das Cluster den Befehl annimmt und die Registrierung des Anwendungstyps wird asynchron fortgesetzt.The command returns when the cluster accepts the command and the registration of the application type continues asynchronously. Aus diesem Grund muss in diesem Fall kein höherer Timeoutwert angegeben werden.For this reason, there is no need to specify a higher timeout in this case. Der Befehl Get-ServiceFabricApplicationType listet alle erfolgreich registrierten Anwendungstypversionen und deren Registrierungsstatus auf.The Get-ServiceFabricApplicationType command lists all successfully registered application type versions and their registration status. Sie können mithilfe dieses Befehls ermitteln, wann die Registrierung abgeschlossen ist.You can use this command to determine when the registration is done.
Get-ServiceFabricApplicationType
ApplicationTypeName    : MyApplicationType
ApplicationTypeVersion : 1.0.0
Status                 : Available
DefaultParameters      : { "Stateless1_InstanceCount" = "-1" }

Nächste SchritteNext steps

Packen einer AnwendungPackage an application

Service Fabric-AnwendungsupgradeService Fabric application upgrade

Einführung in Service Fabric-IntegritätService Fabric health introduction

Diagnose und Problembehandlung von Service Fabric-DienstenDiagnose and troubleshoot a Service Fabric service

Modellieren einer Anwendung in Service FabricModel an application in Service Fabric