このトピックでは、Diegoアーキテクチャ上で実行されているCloud Foundry(CF)デプロイ時のアプリケーション・コンテナのライフ・サイクルについて説明します。
注意事項: この記事は、Cloud Foundry Documentaion Application Container Lifecycle (last updated: January 31, 2017)からの独自の翻訳とコメントです。 内容を保証するものではありません。
デプロイメント(配置)
アプリケーションのデプロイメント・プロセスには、コンテナ内でのアプリケーションのアップロード、ステージング、および起動が含まれます。アプリは一定の期間内にこれらの段階のそれぞれを正常に完了する必要があります。フェーズのデフォルトの時間制限は次のとおりです。
- アップロード:15分
- ステージ:15分
- 起動:60秒
注:管理者はこれらのデフォルトを変更できます。アプリのデプロイメントに設定されている実際の時間制限については、管理者に確認してください。
開発者は、アプリケーション・マニフェストまたはコマンドラインからアプリケーションを起動する時間制限を変更できます。詳細については、「アプリケーション・マニフェストを使用したデプロイメント」および「アプリケーション・ヘルスチェックの使用」の「タイムアウト属性」セクションを参照してください。
クラッシュイベント
アプリ・インスタンスがクラッシュした場合、別のコンテナにインスタンスを起動を3回試みることで、自動的にインスタンスが再起動されます。 3回とも再起動が失敗すると、CFは30秒間待ってから別の再起動を試みます。待機時間は、9回目の再起動まで再起動ごとに2倍になり、200回目の再起動までその期間にとどまります。 200回再起動すると、CFはアプリ・インスタンスを再起動しようとしなくなります。
エバキュエーション(避難)
特定のオペレータアクションでは、アプリケーション・インスタンスをホストするコンテナを使用してVMを再起動する必要があります。たとえば、stemcellを更新するオペレーターや新しいバージョンのCFをインストールするオペレーターは、デプロイメント内のすべてのVMを再起動する必要があります。 CFは、エバキュエーションと呼ばれるプロセスによってシャットダウンしているVM上のインスタンスを自動的に再配置します。 CFは別のVM上のappインスタンスを再作成し、正常になるまで待ってから、古いインスタンスをシャットダウンします。避難中、開発者は短時間の間、アプリのインスタンスが重複した状態になることがあります。
シャットダウン
'cf scale APPNAME -i NUMBER-OF-INSTANCES' というコマンドに応答して、またはシステムイベントのためにCFがアプリ・インスタンスのシャットダウンを要求すると、Cloud Foundry はコンテナ内のアプリ・プロセスをSIGTERMに送ります。プロセスは正常にシャットダウンするのに10秒かかります。プロセスが10秒後に終了しなかった場合、Cloud Foundy はSIGKILLを送信します。
アプリは、SIGTERMを受け取ってから10秒以内に、アプリがSIGKILLでアプリを終了する前に、終了処理を完了する必要があります。たとえば、Webアプリケーションは既存のリクエストの処理を完了し、新しいリクエストの受け入れを停止する必要があります。