複数のインスタンスを持つアプリケーションをアップグレードするには、カナリアリリースまたは段階的リリースを使用できます。このトピックでは、段階的リリースについて説明し、段階的リリースの設定方法とロールバックの実行方法を解説します。
前提条件
アプリケーションに複数のインスタンスがあること。
背景情報
段階的リリースでは、アプリケーションをバッチでデプロイし、各バッチでインスタンスの一部のみをアップグレードします。段階的リリースの途中で障害が発生した場合は、プロセスを停止してすぐにロールバックできます。問題を解決した後、デプロイメントを再開できます。
段階的リリース中、アプリケーションインスタンスはバッチでデプロイされ、それらのバッチに均等に分散されます。各バッチを手動または自動でレビューすることを選択できます。インスタンスを均等に分散できない場合、前のバッチにはインスタンスが少なくなり、後のバッチには多くなります。
段階的リリースは、アプリケーションに複数のインスタンスがある場合にのみ使用できます。IntelliJ IDEA のコマンドラインを使用して、インスタンスが 1 つしかないアプリケーションに対して段階的リリースを実行すると、システムはエラーを報告します。
シナリオ例
たとえば、あるアプリケーションに 10 個のアプリケーションインスタンスがあり、バージョン V1 から V2 にアップグレードする必要があるとします。アップグレードが 3 つのバッチでデプロイされる場合、段階的リリースのプロセスは。
操作手順
アプリケーションを再デプロイすると、アプリケーションは再起動されます。業務の中断などの予測不能なエラーを防ぐため、ピーク時間外にアプリケーションをデプロイすることを推奨します。
SAE アプリケーションリストページの上部でリージョンと名前空間を選択し、対象アプリケーションの ID をクリックしてアプリケーション詳細ページを開きます。
対象アプリケーションの [基本情報] ページで、[アプリケーションのデプロイ] をクリックします。
デプロイメントパラメーターを設定します。
説明アプリケーションのデプロイメント方式は、初回に選択したデプロイメント方式に基づきます。選択した方式に基づいてパラメーターを設定してください。
WAR パッケージでのデプロイ:別の WAR パッケージをアップロードするか、新しくデプロイする WAR パッケージのパスを入力し、ランタイム環境やその他の設定を行います。
JAR パッケージでのデプロイ:別の JAR パッケージをアップロードするか、新しくデプロイする JAR パッケージのパスを入力し、ランタイム環境やその他の設定を行います。
ZIP パッケージでのデプロイ:別の ZIP パッケージをアップロードするか、新しくデプロイする ZIP パッケージのパスを入力し、ランタイム環境やその他の設定を行います。
イメージ:[イメージの設定] セクションで、[イメージの変更] をクリックします。[イメージの変更] パネルで、別のイメージリポジトリまたはイメージバージョンを選択します。
[リリース方針設定] セクションで、段階的リリースを設定できます。
設定項目
説明
リリース方針
[段階的リリース] を選択します。
バッチの公開
アプリケーションインスタンスリリースのバッチ数を設定します。
バッチ内でのデプロイ間隔
バッチに複数のインスタンスが含まれる場合、バッチ内のアプリケーションインスタンス間のデプロイ間隔。単位:秒。
ピークボリューム
これは Kubernetes (K8s) の `MaxSurge` パラメーターに相当します。予想インスタンス数を超えて作成できるインスタンスの数を指定します。
重要この機能は招待プレビューです。アクセスをリクエストするには、DingTalk グループ (ID: 32874633) で弊社のチームにご連絡ください。
説明[最小生存インスタンス数] が 100% (つまり `MaxUnavailable` が 0) に設定されている場合、[ピークボリューム] を 0 にすることはできません。
パーセンテージを使用する場合、値は切り上げられます。たとえば、値を 25% に設定し、インスタンスが 5 つある場合、[ピークボリューム] は 2 になります。
最小生存インスタンス数
各ローリングアップグレード中にアクティブな状態を維持する必要があるインスタンスの最小数。
説明業務継続性を確保するために、[最小生存インスタンス数] を 1 以上に設定することを推奨します。このパラメーターを 0 に設定すると、アップグレード中にアプリケーションが中断されます。
パーセンテージを使用する場合、値は切り上げられます。たとえば、値を 25% に設定し、インスタンスが 5 つある場合、[最小生存インスタンス数] は 2 になります。
設定が完了したら、[OK] をクリックします。
次のいずれかの方法で、設定が有効であることを確認します。
方法 1:アプリケーションの [変更履歴] ページで、変更の詳細とリリースステータスを表示できます。すべてのバッチが正常に実行されると、アプリケーションは更新されます。
方法 2:アプリケーションの [基本情報] ページの [インスタンスリスト] タブで、インスタンスの実行ステータスを確認できます。[実行ステータス] が [実行中] であれば、デプロイは成功です。
アプリケーションのロールバック
グレースケールリリースまたは段階的リリースを使用してアプリケーションインスタンスをアップグレードする場合、すべてのインスタンスがアップグレードされるまで、アップグレードステータスは [進行中] のままです。
アプリケーションのアップグレードをモニタリング中に、エラーによって最初のバッチのインスタンスが応答を停止した場合は、[変更詳細] ページで [すぐにロールバック] をクリックして、業務継続性を確保します。これにより、アップグレードされたインスタンスが以前のバージョンに戻り、以前の構成が復元されます。
デプロイメントプロセス中に、利用できないデプロイメントパッケージやヘルスチェックの失敗などのエラーが発生した場合、アプリケーションのアップグレードは失敗します。SAE は現在のデプロイメントを停止し、ロールバックを実行します。
SAE でのアプリケーションのアップグレードは、約 30 分後にタイムアウトします。タイムアウトが発生した場合、SAE は変更プロセスを一時停止します。その後、[変更詳細] ページに移動して、手動でリリースプロセスを終了し、アプリケーションをロールバックできます。
リリースの停止
進行中の変更を終了するには、[変更詳細] ページで [リリースの終了] をクリックします。
リリースを停止すると、複数のバージョンのアプリケーションが同時に実行される可能性があります。
すでにデプロイ済みのインスタンス:これらのインスタンスは現在の状態で実行を継続し、ロールバックされません。
デプロイ中のインスタンス:これらのインスタンスのデプロイは継続されます。デプロイが完了すると、このリリースの新しいバージョンで実行されます。
まだデプロイされていないインスタンス (未実行のバッチ内のすべてのインスタンスを含む):これらのインスタンスは現在の状態で実行を継続します。これらのインスタンスに対しては、リリースプロセスは継続されません。
Auto Scaling による新しいインスタンス:Auto Scaling によって作成された新しいインスタンスは、このリリースの新しいバージョンを使用します。
リリースを停止した後は、できるだけ早くアプリケーションを再デプロイするか、以前のバージョンにロールバックしてください。これにより、すべてのアプリケーションインスタンスが同じバージョンで実行されるようになります。
関連情報
SAE にアプリケーションをデプロイした後、アプリケーションに対して次の操作を実行できます。
操作 | リファレンス |
アプリケーションの更新、スケーリング、起動、停止、削除などのライフサイクル管理操作 | |
Auto Scaling、CLB インスタンスのバインド、バッチでの起動と停止など、アプリケーションのパフォーマンスを向上させるための操作 | |
ログ管理、モニタリング管理、アプリケーションイベントの表示、変更履歴の表示など、アプリケーションの実行ステータスに関連する操作 |