PowerShell を使用してアプリケーションのデプロイと削除を実行するDeploy and remove applications using PowerShell


アプリケーションの種類をパッケージ化した後は、Azure Service Fabric クラスターにデプロイできる状態になっています。Once an application type has been packaged, it's ready for deployment into an Azure Service Fabric cluster. デプロイには、次の 3 つの手順が含まれます。Deployment involves the following three steps:

  1. アプリケーション パッケージをイメージ ストアにアップロードします。Upload the application package to the image store.
  2. イメージ ストアの相対パスを使用してアプリケーションの種類を登録します。Register the application type with image store relative path.
  3. アプリケーション インスタンスを作成します。Create the application instance.

デプロイしたアプリケーションが不要になったら、アプリケーション インスタンスとそのアプリケーションの種類を削除できます。Once the deployed application is no longer required, you can delete the application instance and its application type. クラスターからアプリケーションを完全に削除するには、次の手順が必要です。To completely remove an application from the cluster involves the following steps:

  1. 実行中のアプリケーションのインスタンスを削除します。Remove (or delete) the running application instance.
  2. アプリケーションの種類が不要になったら、その登録を解除します。Unregister the application type if you no longer need it.
  3. イメージ ストアからアプリケーション パッケージを削除します。Remove the application package from the image store.

Visual Studio を使ってローカルの開発クラスターでアプリケーションのデプロイとデバッグを行う場合、前述のすべての手順は、PowerShell スクリプトによって自動的に処理されます。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. このスクリプトは、アプリケーション プロジェクトの Scripts フォルダーにあります。This script is found in the Scripts folder of the application project. この記事では、これらのスクリプトが実行する内容の背景を説明し、Visual Studio の外部で同じ操作を実行できるようにします。This article provides background on what that script is doing so that you can perform the same operations outside of Visual Studio.

アプリケーションをデプロイするもう 1 つの方法は、外部のプロビジョニングを使用する方法です。Another way to deploy an application is by using external provision. アプリケーション パッケージは、sfpkg としてパッケージ化して、外部ストアにアップロードできます。The application package can be packaged as sfpkg and uploaded to an external store. この場合、イメージ ストアへのアップロードは必要ありません。In this case, upload to the image store is not needed. デプロイには、次の手順が必要です。Deployment needs the following steps:

  1. sfpkg を外部ストアにアップロードします。Upload the sfpkg to an external store. 外部ストアには、REST http または https エンドポイントを公開している任意のストアを指定できます。The external store can be any store that exposes a REST http or https endpoint.
  2. 外部のダウンロード URI と、アプリケーションの種類の情報を使用してアプリケーションの種類を登録します。Register the application type using the external download URI and the application type information.
  3. アプリケーション インスタンスを作成します。Create the application instance.

クリーンアップでは、アプリケーション インスタンスを削除して、アプリケーションの種類の登録を解除します。For cleanup, remove the application instances and unregister the application type. パッケージはイメージ ストアにコピーされないため、クリーンアップが必要な一時保存先はありません。Because the package was not copied to the image store, there is no temporary location to cleanup. 外部ストアからのプロビジョニングは、Service Fabric バージョン 6.1 以降で使用できます。Provisioning from external store is available starting with Service Fabric version 6.1.

注意

Visual Studio は、外部プロビジョニングを現在サポートしていません。Visual Studio does not currently support external provision.

クラスターに接続するConnect to the cluster

この記事の PowerShell コマンドを実行する前に、必ず最初に Connect-ServiceFabricCluster で Service Fabric クラスターに接続してください。Before you run any PowerShell commands in this article, always start by using Connect-ServiceFabricCluster to connect to the Service Fabric cluster. ローカル開発クラスターに接続するには、次の手順を実行します。To connect to the local development cluster, run the following:

Connect-ServiceFabricCluster

Azure Active Directory、X509 証明書、Windows Active Directory で保護されたクラスターまたはリモート クラスターに接続する例については、「セキュリティ保護されたクラスターに接続する」をご覧ください。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.

アプリケーション パッケージをアップロードするUpload the application package

アプリケーション パッケージをアップロードすると、そのパッケージは内部 Service Fabric コンポーネントがアクセスできる場所に保存されます。Uploading the application package puts it in a location that's accessible by internal Service Fabric components. アプリケーション パッケージをローカルで検証する場合は、Test-ServiceFabricApplicationPackage コマンドレットを使用します。If you want to verify the application package locally, use the Test-ServiceFabricApplicationPackage cmdlet.

アプリケーション パッケージは、Copy-ServiceFabricApplicationPackage コマンドでクラスター イメージ ストアにアップロードします。The Copy-ServiceFabricApplicationPackage command uploads the application package to the cluster image store.

MyApplication という名前のアプリケーションを Visual Studio 2015 でビルドしてパッケージするとします。Suppose you build and package an application named MyApplication in Visual Studio 2015. ApplicationManifest.xml に既定で表示されるアプリケーション タイプ名は、"MyApplicationType" です。By default, the application type name listed in the ApplicationManifest.xml is "MyApplicationType". アプリケーション パッケージ (必要なアプリケーション マニフェストとサービス マニフェスト、コード/構成/データ パッケージを含む) は、C:\Users<username>\Documents\Visual Studio 2015\Projects\MyApplication\MyApplication\pkg\Debug に格納されます。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.

アプリケーション パッケージの内容を一覧表示するには、次のコマンドを使用します。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

アプリケーション パッケージが大きい場合や含まれるファイルの数が多い場合は、アプリケーション パッケージを圧縮できます。If the application package is large and/or has many files, you can compress it. 圧縮により、ファイルのサイズを小さくし、ファイル数を減らすことができます。The compression reduces the size and the number of files. これにより、アプリケーションの種類の登録と登録解除を高速に実行できます。This results in faster registering and unregistering of the application type. 現時点で、特にパッケージを圧縮する時間を含めると、アップロード操作が遅くなることがあります。Upload time may be slower currently, especially if you include the time to compress the package.

パッケージを圧縮するには、同じ Copy-ServiceFabricApplicationPackage コマンドを使用します。To compress a package, use the same Copy-ServiceFabricApplicationPackage command. 圧縮は、SkipCopy フラグを使用することによってアップロードとは別に実行することも、アップロード操作と一緒に実行することもできます。Compression can be done separate from upload, by using the SkipCopy flag, or together with the upload operation. 圧縮済みのパッケージに圧縮を適用した場合、何の操作も行われません。Applying compression on a compressed package is no-op. 圧縮されているパッケージの圧縮を解除するには、同じ Copy-ServiceFabricApplicationPackage コマンドを UncompressPackage スイッチと共に使用します。To uncompress a compressed package, use the same Copy-ServiceFabricApplicationPackage command with the UncompressPackage switch.

次のコマンドレットでは、パッケージをイメージ ストアにコピーせずに圧縮しています。The following cmdlet compresses the package without copying it to the image store. このパッケージには、Code パッケージと Config パッケージの zip 圧縮されたファイルが含まれています。The package now includes zipped files for the Code and Config packages. アプリケーション マニフェストとサービス マニフェストは、多くの内部操作 (パッケージ共有、特定の検証のためのアプリケーションの種類名とバージョンの抽出など) に必要なため、zip 圧縮されません。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). マニフェストを zip 圧縮すると、これらの操作が非効率的になります。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

大規模なアプリケーション パッケージでは、圧縮に時間がかかります。For large application packages, the compression takes time. 最良の結果を得るには、高速の SSD ドライブを使用してください。For best results, use a fast SSD drive. 圧縮時間と圧縮後のパッケージ サイズもパッケージの内容によって異なります。The compression times and the size of the compressed package also differ based on the package content. 例として、いくつかのパッケージの圧縮に関する統計情報を次に示します。ここには、初期パッケージ サイズ、圧縮後のパッケージ サイズ、および圧縮時間が示されています。For example, here is compression statistics for some packages, which show the initial and the compressed package size, with the compression time.

初期サイズ (MB)Initial size (MB) ファイル数File count 圧縮時間Compression Time 圧縮後のパッケージ サイズ (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 1,2311231
50125012 100100 00:02:45.295128800:02:45.2951288 3,0743074

圧縮したパッケージは、必要に応じて 1 つまたは複数の Service Fabric クラスターにアップロードできます。Once a package is compressed, it can be uploaded to one or multiple Service Fabric clusters as needed. デプロイのメカニズムは、圧縮されているパッケージでも圧縮されていないパッケージでも変わりません。The deployment mechanism is the same for compressed and uncompressed packages. 圧縮したパッケージは、クラスターのイメージ ストアなどに格納されます。Compressed packages are stored as such in the cluster image store. パッケージは、アプリケーションの実行前に、ノードで圧縮解除されます。The packages are uncompressed on the node, before the application is run.

以下の例では、先ほどのパッケージをイメージ ストアの "MyApplicationV1" という名前のフォルダーにアップロードしています。The following example uploads the package to the image store, into a folder named "MyApplicationV1":

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

-ApplicationPackagePathInImageStore パラメーターを指定しなかった場合は、イメージ ストアの "Debug" フォルダーにアプリケーション パッケージがコピーされます。If you do not specify the -ApplicationPackagePathInImageStore parameter, the application package is copied into the "Debug" folder in the image store.

注意

Copy-ServiceFabricApplicationPackage は、PowerShell セッションが Service Fabric クラスターに接続されている場合に、適切なイメージ ストア接続文字列を自動的に検出します。Copy-ServiceFabricApplicationPackage will automatically detect the appropriate image store connection string if the PowerShell session is connected to a Service Fabric cluster. 5.6 より古いバージョンの Service Fabric では、 -ImageStoreConnectionString 引数を明示的に指定する必要があります。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

Service Fabric SDK PowerShell モジュールの一部である Get-ImageStoreConnectionStringFromClusterManifest コマンドレットは、イメージ ストアの接続文字列の取得に使用します。The Get-ImageStoreConnectionStringFromClusterManifest cmdlet, which is part of the Service Fabric SDK PowerShell module, is used to get the image store connection string. SDK モジュールをインポートするには、次のコマンドを実行します。To import the SDK module, run:

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

イメージ ストアとイメージ ストア接続文字列に関する補足情報は、イメージ ストア接続文字列の理解に関するページを参照してください。See Understand the image store connection string for supplementary information about the image store and image store connection string.

パッケージのアップロードにかかる時間は、さまざまな要素に応じて変わってきます。The time it takes to upload a package differs depending on multiple factors. これらの要素として、パッケージに含まれるファイルの数、パッケージ サイズ、ファイル サイズなどがあります。Some of these factors are the number of files in the package, the package size, and the file sizes. ソース コンピューターと Service Fabric クラスターの間のネットワーク速度もアップロード時間に影響を与えます。The network speed between the source machine and the Service Fabric cluster also impacts the upload time. Copy-ServiceFabricApplicationPackage の既定のタイムアウトは 30 分です。The default timeout for Copy-ServiceFabricApplicationPackage is 30 minutes. 説明した要素に応じて、タイムアウトを長くすることが必要になる場合があります。Depending on the described factors, you may have to increase the timeout. コピーの呼び出しでパッケージを圧縮する場合は、圧縮時間も考慮する必要があります。If you are compressing the package in the copy call, you need to also consider the compression time.

アプリケーション パッケージを登録するRegister the application package

アプリケーション マニフェストで宣言されたアプリケーションの種類とバージョンは、アプリケーション パッケージを登録すると、利用できるようになります。The application type and version declared in the application manifest become available for use when the application package is registered. システムは、前の手順でアップロードされたパッケージを読み取り、パッケージを検証し、パッケージのコンテンツを処理し、処理済みのパッケージを内部システムの場所にコピーします。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.

アプリケーションの種類をクラスターに登録し、デプロイできる状態にするには、Register-ServiceFabricApplicationType コマンドレットを実行します。Run the Register-ServiceFabricApplicationType cmdlet to register the application type in the cluster and make it available for deployment:

イメージ ストアにコピーされたアプリケーション パッケージを登録するRegister the application package copied to image store

パッケージが事前にイメージ ストアにコピーされていた場合は、登録操作でイメージ ストアの相対パスを指定します。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" は、アプリケーション パッケージが格納されるイメージ ストア内のフォルダーです。"MyApplicationV1" is the folder in the image store where the application package is located. アプリケーション タイプ名 "MyApplicationType"、バージョン "1.0.0" (どちらもアプリケーション マニフェストに記述されます) としてアプリケーションの種類がクラスターに登録されます。The application type with name "MyApplicationType" and version "1.0.0" (both are found in the application manifest) is now registered in the cluster.

外部ストアにコピーされたアプリケーション パッケージを登録するRegister the application package copied to an external store

Service Fabric バージョン 6.1 以降では、プロビジョニングで外部ストアからのパッケージのダウンロードがサポートされます。Starting with Service Fabric version 6.1, provision supports downloading the package from an external store. ダウンロード URI は、sfpkg アプリケーション パッケージのパスを表し、ここから HTTP または HTTPS プロトコルを使用してアプリケーション パッケージをダウンロードできます。The download URI represents the path to the sfpkg application package from where the application package can be downloaded using HTTP or HTTPS protocols. パッケージは、この外部の場所に事前にアップロードしておく必要があります。The package must have been previously uploaded to this external location. この URI では、Service Fabric がファイルをダウンロードできるように、読み取りアクセスを許可する必要があります。The URI must allow READ access so Service Fabric can download the file. sfpkg ファイルには拡張子 ".sfpkg" が必要です。The sfpkg file must have the extension ".sfpkg". プロビジョニング操作には、アプリケーション マニフェストにあるのと同じアプリケーションの種類の情報を含める必要があります。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

Register-ServiceFabricApplicationType コマンドは、アプリケーション パッケージがシステムによって正常に登録された場合にのみ戻ります。The Register-ServiceFabricApplicationType command returns only after the system has successfully registered the application package. 登録の所要時間は、アプリケーション パッケージのサイズと内容によって異なります。How long registration takes depends on the size and contents of the application package. 必要に応じて、 -TimeoutSec パラメーターを使用して、より長いタイムアウトを指定できます (既定のタイムアウトは 60 秒)。If needed, the -TimeoutSec parameter can be used to supply a longer timeout (the default timeout is 60 seconds).

アプリケーション パッケージが大規模な場合やタイムアウトが発生する場合は、 -Async パラメーターを使用します。If you have a large application package or if you are experiencing timeouts, use the -Async parameter. このコマンドを実行すると、クラスターが登録コマンドを受け入れたときに制御が返されます。The command returns when the cluster accepts the register command. 登録操作は必要に応じて続行されます。The register operation continues as needed. Get-ServiceFabricApplicationType コマンドは、アプリケーションの種類の全バージョンとその登録状態を一覧表示します。The Get-ServiceFabricApplicationType command lists the application type versions and their registration status. このコマンドを使用して、登録がいつ完了したかを判断できます。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" }

イメージ ストアからのアプリケーション パッケージの削除Remove an application package from the image store

イメージ ストアにパッケージがコピーされていた場合は、アプリケーションが正常に登録された後、一時保存先から削除する必要があります。If a package was copied to the image store, you should remove it from the temporary location after the application is successfully registered. イメージ ストアからアプリケーション パッケージを削除すると、システム リソースが解放されます。Deleting application packages from the image store frees up system resources. 使用されていないアプリケーション パッケージを保持すると、ディスク ストレージが消費され、アプリケーションのパフォーマンスの問題につながります。Keeping unused application packages consumes disk storage and leads to application performance issues.

Remove-ServiceFabricApplicationPackage -ApplicationPackagePathInImageStore MyApplicationV1

アプリケーションを作成するCreate the application

New-ServiceFabricApplication コマンドレットでは、正常に登録されているアプリケーションの種類のバージョンを指定して、アプリケーションをインスタンス化することができます。You can instantiate an application from any application type version that has been registered successfully by using the New-ServiceFabricApplication cmdlet. 各アプリケーションの名前は、 "fabric:" スキームで開始され、各アプリケーション インスタンスに対して一意でなければなりません。The name of each application must start with the "fabric:" scheme and must be unique for each application instance. ターゲット アプリケーションの種類のアプリケーション マニフェストに定義されている既定のサービスも作成されます。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  : {}

登録されたアプリケーションの種類の任意のバージョンに対して、複数のアプリケーション インスタンスを作成できます。Multiple application instances can be created for any given version of a registered application type. 各アプリケーション インスタンスは分離して実行され、独自の作業ディレクトリとプロセスを使用します。Each application instance runs in isolation, with its own work directory and process.

クラスターで実行されている名前付きのアプリとサービスを確認するには、それぞれ Get-ServiceFabricApplication コマンドレットと Get-ServiceFabricService コマンドレットを実行します。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

アプリケーションの削除Remove an application

アプリケーション インスタンスが不要になったときは、Remove-ServiceFabricApplication コマンドレットの引数に名前を指定して実行すれば完全に削除できます。When an application instance is no longer needed, you can permanently remove it by name using the Remove-ServiceFabricApplication cmdlet. Remove-ServiceFabricApplication を実行すると、アプリケーションに属するサービスもすべて自動的に削除されます。その結果、すべてのサービスの状態が完全に削除されます。Remove-ServiceFabricApplication automatically removes all services that belong to the application as well, permanently removing all service state.

警告

この操作は元に戻せません。また、アプリケーションの状態を復元できません。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

アプリケーションの種類の登録解除Unregister an application type

特定のバージョンのアプリケーションの種類が不要になった場合は、Unregister-ServiceFabricApplicationType コマンドレットを使用してアプリケーションの種類の登録を解除する必要があります。When a particular version of an application type is no longer needed, you should unregister the application type using the Unregister-ServiceFabricApplicationType cmdlet. 使用していないアプリケーションの種類について、その登録を解除すると、アプリケーションの種類ファイルを削除することで、イメージ ストアによって使用されているストレージ領域が解放されます。Unregistering unused application types releases storage space used by the image store by removing the application type files. イメージ ストアにコピーされたバージョンが使用された場合、アプリケーションの種類の登録を解除しても、イメージ ストアの一時保存先にコピーされたアプリケーション パッケージは削除されません。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. あるアプリケーションの種類に対してインスタンス化されたアプリケーションがなく、それを参照している保留中のアプリケーションのアップグレードもない場合に、そのアプリケーションの種類の登録を解除できます。An application type can be unregistered as long as no applications are instantiated against it and no pending application upgrades are referencing it.

現在クラスターに登録されているアプリケーションの種類を確認するには、Get-ServiceFabricApplicationType を実行します。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" }

アプリケーションの種類を指定して登録を解除するには、Unregister-ServiceFabricApplicationType を実行します。Run Unregister-ServiceFabricApplicationType to unregister a specific application type:

Unregister-ServiceFabricApplicationType MyApplicationType 1.0.0

トラブルシューティングTroubleshooting

Copy-ServiceFabricApplicationPackage がImageStoreConnectionString を求めるCopy-ServiceFabricApplicationPackage asks for an ImageStoreConnectionString

Service Fabric SDK 環境には、適切な既定値を事前に設定しておく必要があります。The Service Fabric SDK environment should already have the correct defaults set up. ただし、すべてのコマンドの ImageStoreConnectionString が、Service Fabric クラスターによって使用されている値に一致していなければならない場合もあります。But if needed, the ImageStoreConnectionString for all commands should match the value that the Service Fabric cluster is using. この ImageStoreConnectionString は Get-ServiceFabricClusterManifest コマンドと Get-ImageStoreConnectionStringFromClusterManifest コマンドを使用して取得したクラスター マニフェストで見つけることができます。You can find the ImageStoreConnectionString in the cluster manifest, retrieved using the Get-ServiceFabricClusterManifest and Get-ImageStoreConnectionStringFromClusterManifest commands:

Get-ImageStoreConnectionStringFromClusterManifest(Get-ServiceFabricClusterManifest)

Service Fabric SDK PowerShell モジュールの一部である Get-ImageStoreConnectionStringFromClusterManifest コマンドレットは、イメージ ストアの接続文字列の取得に使用します。The Get-ImageStoreConnectionStringFromClusterManifest cmdlet, which is part of the Service Fabric SDK PowerShell module, is used to get the image store connection string. SDK モジュールをインポートするには、次のコマンドを実行します。To import the SDK module, run:

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

ImageStoreConnectionString は、クラスター マニフェスト内にあります。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>

    [...]

イメージ ストアとイメージ ストア接続文字列に関する補足情報は、イメージ ストア接続文字列の理解に関するページを参照してください。See Understand the image store connection string for supplementary information about the image store and image store connection string.

大規模なアプリケーション パッケージをデプロイするDeploy large application package

問題点:(GB 単位の) 大規模なアプリケーション パッケージで Copy-ServiceFabricApplicationPackage がタイムアウトになる。Issue: Copy-ServiceFabricApplicationPackage times out for a large application package (order of GB). 次の操作を試してください。Try:

  • TimeoutSec パラメーターを使用して、Copy-ServiceFabricApplicationPackage コマンドのタイムアウト値を大きくします。Specify a larger timeout for Copy-ServiceFabricApplicationPackage command, with TimeoutSec parameter. 既定では、タイムアウトは 30 分です。By default, the timeout is 30 minutes.
  • ソース コンピューターとクラスターの間のネットワーク接続を確認します。Check the network connection between your source machine and cluster. 接続が低速な場合は、ネットワーク接続が高速なコンピューターを使用することを検討してください。If the connection is slow, consider using a machine with a better network connection. クライアント コンピューターがクラスターとは別のリージョンにある場合は、クラスターと同じかより近いリージョンにあるクライアント コンピューターの使用を検討してください。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.
  • 外部で調整されていないかどうかを確認してください。Check if you are hitting external throttling. たとえば、イメージ ストアが Azure Storage を使用するように構成されている場合、アップロードが調整される可能性があります。For example, when the image store is configured to use azure storage, upload may be throttled.

問題点:パッケージのアップロードが正常に完了したが、Register-ServiceFabricApplicationType がタイムアウトになる。次の操作を試してください。Issue: Upload package completed successfully, but Register-ServiceFabricApplicationType times out. Try:

  • イメージ ストアにコピーする前にパッケージを圧縮します。Compress the package before copying to the image store. 圧縮によってファイル サイズが小さくなりファイル数が減るため、トラフィックの量と Service Fabric が実行する必要のある処理が減ります。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. (圧縮時間を含めた場合は特に) アップロード操作が遅くなる場合がありますが、アプリケーションの種類の登録と登録解除は高速になります。The upload operation may be slower (especially if you include the compression time), but register and un-register the application type are faster.
  • TimeoutSec パラメーターを使用して、Register-ServiceFabricApplicationType コマンドのタイムアウト値を大きくします。Specify a larger timeout for Register-ServiceFabricApplicationType with TimeoutSec parameter.
  • Register-ServiceFabricApplicationTypeAsync スイッチを指定します。Specify Async switch for Register-ServiceFabricApplicationType. このコマンドは、クラスターがコマンドを受け入れ、アプリケーションの種類の登録が非同期的に続行されると戻ります。The command returns when the cluster accepts the command and the registration of the application type continues asynchronously. このため、この場合にはより大きなタイムアウト値を指定する必要はありません。For this reason, there is no need to specify a higher timeout in this case. Get-ServiceFabricApplicationType コマンドは、正常に登録されたアプリケーションの種類の全バージョンとその登録状態を一覧表示します。The Get-ServiceFabricApplicationType command lists all successfully registered application type versions and their registration status. このコマンドを使用して、登録がいつ完了したかを判断できます。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" }

多数のファイルを含むアプリケーション パッケージをデプロイするDeploy application package with many files

問題点:(数千個の) 多数のファイルを含むアプリケーション パッケージに対する Register-ServiceFabricApplicationType がタイムアウトになる。Issue: Register-ServiceFabricApplicationType times out for an application package with many files (order of thousands). 次の操作を試してください。Try:

  • イメージ ストアにコピーする前にパッケージを圧縮します。Compress the package before copying to the image store. 圧縮により、ファイル数を減らすことができます。The compression reduces the number of files.
  • TimeoutSec パラメーターを使用して、Register-ServiceFabricApplicationType コマンドのタイムアウト値を大きくします。Specify a larger timeout for Register-ServiceFabricApplicationType with TimeoutSec parameter.
  • Register-ServiceFabricApplicationTypeAsync スイッチを指定します。Specify Async switch for Register-ServiceFabricApplicationType. このコマンドは、クラスターがコマンドを受け入れ、アプリケーションの種類の登録が非同期的に続行されると戻ります。The command returns when the cluster accepts the command and the registration of the application type continues asynchronously. このため、この場合にはより大きなタイムアウト値を指定する必要はありません。For this reason, there is no need to specify a higher timeout in this case. Get-ServiceFabricApplicationType コマンドは、正常に登録されたアプリケーションの種類の全バージョンとその登録状態を一覧表示します。The Get-ServiceFabricApplicationType command lists all successfully registered application type versions and their registration status. このコマンドを使用して、登録がいつ完了したかを判断できます。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" }

次のステップNext steps

アプリケーションのパッケージ化Package an application

Service Fabric アプリケーションのアップグレードService Fabric application upgrade

Service Fabric の正常性の概要Service Fabric health introduction

Service Fabric サービスの診断とトラブルシューティングDiagnose and troubleshoot a Service Fabric service

Service Fabric のアプリケーションのモデル化Model an application in Service Fabric