PowerShell を使用した Service Fabric アプリケーションのアップグレード


最も頻繁に使用され、推奨されているアップグレード方法は、監視付きローリング アップグレードです。 アップグレードされているアプリケーションの正常性は、正常性ポリシーのセットに基づいて、Azure Service Fabric により監視されます。 更新ドメイン (UD) がアップグレードされると、Service Fabric によってアプリケーションの正常性が評価され、正常性ポリシーに応じて、アップグレードは次の更新ドメインに進むか、失敗します。

監視付きアプリケーション アップグレードは、マネージド API またはネイティブ API、PowerShell、Azure CLI、Java、および REST を使用して実行できます。 Visual Studio を使用してアップグレードを実行する方法の詳細については、 Visual Studio を使用したアプリケーションのアップグレードに関するページをご覧ください。

Service Fabric による監視付きローリング アップグレードを使用することにより、アプリケーション管理者は、アプリケーションの正常性を判断するために Service Fabric が使用する正常性評価ポリシーを構成できます。 また、管理者は、正常性評価が失敗した場合 (たとえば、自動ロールバック時) に実行するアクションを構成できます。このセクションでは、PowerShell を使用した SDK サンプルの 1 つの監視付きアップグレードについて説明します。

アプリケーションのアップグレードを説明しているトレーニング ビデオについては、このページを確認してください。

Note

ApplicationParameter は、アプリケーションをアップグレードすると保持されません。 現在のアプリケーション パラメーターを保持するには、まずパラメーターを取得し、それらを次のようにアップグレード API 呼び出しに渡す必要があります。

$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

手順 1: ビジュアル オブジェクト サンプルのビルドとデプロイ

VisualObjectsApplication アプリケーション プロジェクトを右クリックし、[発行] コマンドを選択して、アプリケーションをビルドし、発行します。 詳細については、 Service Fabric アプリケーションのアップグレード チュートリアルを参照してください。 代わりに、PowerShell を使用して、アプリケーションをデプロイすることができます。

Note

PowerShell で Service Fabric のコマンドを使用する前に、まず、Connect-ServiceFabricCluster コマンドレットを使用してクラスターに接続する必要があります。 また、クラスターがローカル コンピューターにセットアップ済みになっている必要があります。 「 Service Fabric 開発環境の設定」の記事を参照してください。

Visual Studio でプロジェクトをビルドした後に、PowerShell コマンド Copy-ServiceFabricApplicationPackage を使用してアプリケーション パッケージを ImageStore にコピーできます。 アプリケーション パッケージをローカルで検証する場合は、Test-ServiceFabricApplicationPackage コマンドレットを使用します。 次に、Register-ServiceFabricApplicationType コマンドレットを使用して、Service Fabric ランタイムにアプリケーションを登録します。 次の手順は、New-ServiceFabricApplication コマンドレットを使用して、アプリケーションのインスタンスを開始します。 これら 3 つの手順は、Visual Studio の [配置] メニュー項目を使用する場合と似ています。 プロビジョニングが完了したら、リソースの消費を少なくするために、コピーしたアプリケーション パッケージをイメージ ストアからクリーンアップする必要があります。 アプリケーションの種類が不要になった場合は、同様の理由で登録を解除する必要があります。 詳細については、PowerShell を使用したアプリケーションのデプロイと削除に関するページをご覧ください。

これで、 クラスターおよびアプリケーションを表示する Service Fabric エクスプローラーを使用できます。 このアプリケーションには Web サービスが設けられており、Internet explorer のアドレス バーに「http://localhost:8081/visualobjects」と入力して移動できます。 画面上を動くフローティング ビジュアル オブジェクトが表示されます。 さらに、 Get-ServiceFabricApplication を使用すると、アプリケーションの状態を確認できます。

手順 2: ビジュアル オブジェクト サンプルの更新

手順 1. でデプロイされたバージョンでは、ビジュアル オブジェクトが回転しないことにお気付きになったことでしょう。 アプリケーションをアップグレードして、ビジュアル オブジェクトも回転させてみましょう。

VisualObjects ソリューション内の VisualObjects.ActorService プロジェクトを選択し、StatefulVisualObjectActor.cs ファイルを開きます。 そのファイル内で MoveObject メソッドに移動して、this.State.Move() をコメントにし、this.State.Move(true) をコメント解除します。 これにより、サービスのアップグレード後、オブジェクトが回転します。

プロジェクト VisualObjects.ActorServiceServiceManifest.xmlファイル (PackageRoot の下) を更新する必要もあります。 CodePackage およびサービスのバージョンを 2.0 に更新し、ServiceManifest.xml ファイルの対応する行を更新します。 マニフェスト ファイルを変更するには、ソリューションを右クリックしてから、Visual Studio の [Edit Manifest Files (マニフェスト ファイルの編集)] オプションを使用します。

変更後、マニフェストは次のようになります (太字部分は変更個所を示します)。

<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">

これで、ApplicationManifest.xml ファイル (VisualObjects ソリューションの VisualObjects プロジェクトの下にあります) が、VisualObjects.ActorService プロジェクトのバージョン 2.0 に更新されます。 さらに、アプリケーションのバージョンも 1.0.0.0 から 2.0.0.0 に更新されます。 ApplicationManifest.xml ファイルは、次のスニペットようになります。

<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" />

ここで、Visual Studio で ActorService プロジェクトのみを選択して右クリックし、[ビルド] オプションを選択して、プロジェクトをビルドします。 コードが変更されているため、 [すべてリビルド]を選択すると、すべてのプロジェクトのバージョンを更新する必要があります。 次に、VisualObjectsApplication を右クリックし、Service Fabric のメニュー、[パッケージ] の順に選択して、更新されたアプリケーションをパッケージ化しましょう。 このアクションにより、デプロイ可能なアプリケーション パッケージが作成されます。 更新されたアプリケーションをデプロイする準備は完了です。

手順 3: 正常性ポリシーとアップグレード パラメーターの決定

アプリケーション アップグレード パラメーターアップグレード プロセスに詳しくなって、アップグレードのさまざまなパラメーター、タイムアウト、および適用されている正常性条件に対する理解を深めます。 このチュートリアルでは、サービスの正常性評価条件は既定 (推奨値) に設定されています。つまり、すべてのサービスとインスタンスは、アップグレード後も healthy である必要があります。

ただし、HealthCheckStableDuration を 180 秒間に増やします (これにより、次の更新ドメインにアップグレードが進む前に、少なくとも 120 秒間、サービスは正常な状態になります)。 また、UpgradeDomainTimeout を 1200 秒に、UpgradeTimeout を 3000 秒に設定しましょう。

最後に、 UpgradeFailureAction もロールバックに設定しましょう。 このオプションでは、アップグレード中に問題が発生した場合、Service Fabric は、アプリケーションを以前のバージョンにロールバックする必要があります。 つまり、アップグレードを開始 (手順 4) すると、次のパラメーターが指定されています。

FailureAction = Rollback

HealthCheckStableDurationSec = 180

UpgradeDomainTimeoutSec = 1200

UpgradeTimeout = 3000

手順 4: アプリケーションのアップグレードの準備

アプリケーションはビルドされ、アップグレードの準備は完了しています。 PowerShell ウィンドウを管理者として開き、「Get-ServiceFabricApplication」と入力すると、デプロイされているのが VisualObjects のアプリケーションの種類 1.0.0.0 であることが表示されます。

アプリケーション パッケージは、Service Fabric SDK を展開した次の相対パスに格納されています: Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug。 そのディレクトリ内に "パッケージ" フォルダーが見つかるはずです。このフォルダーにアプリケーション パッケージが格納されます。 タイムスタンプを確認して、最新のビルドであることを確かめます (場合によっては、パスも適切に変更する必要があります)。

次に、更新されたアプリケーション パッケージを Service Fabric ImageStore (アプリケーション パッケージが Service Fabric により保存される場所) にコピーします。 ApplicationPackagePathInImageStore パラメーターから、Service Fabric にアプリケーション パッケージが見つかる場所が通知されます。 "VisualObjects_V2" に、更新されたアプリケーションが次のコマンド付きで格納されています (場合によっては、ここでも適切にパスを変更する必要があります)。

Copy-ServiceFabricApplicationPackage -ApplicationPackagePath .\Samples\Services\Stateful\VisualObjects\VisualObjects\obj\x64\Debug\Package -ApplicationPackagePathInImageStore "VisualObjects\_V2"

次の手順では、Service Fabric を使用して、このアプリケーションを登録します。これは、Register-ServiceFabricApplicationType コマンドを使用して実行できます。

Register-ServiceFabricApplicationType -ApplicationPathInImageStore "VisualObjects\_V2"

前のコマンドが成功しなかった場合、すべてのサービスのリビルドが必要な可能性があります。 手順 2 で説明したとおり、WebService のバージョンの更新が必要な場合もあります。

アプリケーションが正常に登録されたら、アプリケーション パッケージを削除することをお勧めします。 イメージ ストアからアプリケーション パッケージを削除すると、システム リソースが解放されます。 使用されていないアプリケーション パッケージを保持すると、ディスク ストレージが消費され、アプリケーションのパフォーマンスの問題につながります。

Remove-ServiceFabricApplicationPackage -ApplicationPackagePathInImageStore "VisualObjects\_V2" -ImageStoreConnectionString fabric:ImageStore

手順 5: アプリケーションのアップグレード開始

これで、Start-ServiceFabricApplicationUpgrade コマンドを使用して、アプリケーションのアップグレードを開始できます。

Start-ServiceFabricApplicationUpgrade -ApplicationName fabric:/VisualObjects -ApplicationTypeVersion 2.0.0.0 -HealthCheckStableDurationSec 60 -UpgradeDomainTimeoutSec 1200 -UpgradeTimeout 3000   -FailureAction Rollback -Monitored

アプリケーション名は、 ApplicationManifest.xml ファイルに記述されている名前と同じです。 Service Fabric はこの名前を使用して、アップグレードが実行されるアプリケーションを識別します。 タイムアウトを短く設定しすぎている場合、問題を示すエラー メッセージが表示されることがあります。 トラブルシューティングのセクションを参照するか、タイムアウトの時間を長くします。

アプリケーションのアップグレード処理の進行状況は、Service Fabric Explorer を使用するか、Get-ServiceFabricApplicationUpgrade PowerShell コマンドを使用して監視できます。

Get-ServiceFabricApplicationUpgrade fabric:/VisualObjects

数分後に、前の PowerShell コマンドを使用した結果、すべての更新ドメインがアップグレードされた (完了) 状態になります。 ブラウザー ウィンドウのビジュアル オブジェクトが回転しているはずです。

練習として、バージョンをバージョン 2 からバージョン 3 にアップグレードするか、バージョン 2 からバージョン 1 に変更してみることができます。 バージョン 2 からバージョン 1 への移行もアップグレードと見なされます。 タイムアウトと正常性ポリシーをいろいろ試して、これらに精通してください。 Azure クラスターにデプロイするときに、パラメーターを適切に設定する必要があります。 タイムアウトは控えめに設定することをお勧めします。

次の手順

Visual Studio を使用したアプリケーションのアップグレード に関する記事では、Visual Studio を使用してアプリケーションをアップグレードする方法について説明します。

アップグレード パラメーターを使用して、アプリケーションのアップグレード方法を制御します。

データのシリアル化の使用方法を学ぶことで、アプリケーションのアップグレードに互換性を持たせます。

高度なトピックを参照して、アプリケーションをアップグレードするときの高度な機能の使用方法を学習します。

アプリケーションのアップグレードのトラブルシューティング」の手順を参照して、アプリケーションのアップグレードでの一般的な問題を修正します。