View a markdown version of this page

Amazon ECS マネージドデーモン - Amazon Elastic Container Service

Amazon ECS マネージドデーモン

Amazon ECS マネージドデーモンを使用すると、セキュリティ、オブザーバビリティ、ネットワークエージェントなどのソフトウェアエージェントを Amazon ECS マネージドインスタンスのコンテナインフラストラクチャ全体にデプロイおよび管理できます。マネージドデーモンは、デーモンのライフサイクル管理をアプリケーションオペレーションから切り離します。ワークロードを再デプロイしたり、サービス全体で変更を調整したりすることなく、エージェントを個別にデプロイ、更新、モニタリングできます。

デーモンの重要度

デーモンの障害によって Amazon ECS がコンテナインスタンスをドレインするかどうかに基づいて、各マネージドデーモンをクリティカルまたは非クリティカルとして設定できます。

  • クリティカル - デフォルト。Amazon ECS は、アプリケーションタスクをインスタンスに配置する前にデーモンタスクを開始し、デーモンタスクが停止または異常になると、Amazon ECS はコンテナインスタンスをドレインして置き換えます。

  • 非クリティカル - critical パラメータを false に設定します。デーモンタスクは、コンテナインスタンスの状態とは無関係に動作します。非クリティカルなデーモンタスクが失敗、停止、または異常になった場合、Amazon ECS はコンテナインスタンスをアクティブに保ちます。既存のアプリケーションタスクは実行され続け、Amazon ECS はそのインスタンスに新しいアプリケーションタスクを配置し続けます。非クリティカルなデーモンはインスタンス登録をブロックしないため、デーモンの起動に失敗してもアプリケーションタスクをすぐに配置できます。

マネージドデーモンの仕組み

マネージドデーモンを使用するには、まずデーモンタスク定義を登録します。デーモンタスク定義は、デーモンを形成するコンテナを記述するテンプレートです。デーモンタスク定義を登録したら、デーモンを作成し、クラスターと 1 つまたは複数の Amazon ECS マネージドインスタンスキャパシティプロバイダーに関連付けます。その後、Amazon ECS は、それらのキャパシティプロバイダーを介してプロビジョニングされたすべての Amazon EC2 インスタンスでちょうど 1 つのデーモンタスクが実行されるようにします。

デーモンはインスタンスを個別に起動しません。Amazon ECS マネージドインスタンスキャパシティプロバイダーでアプリケーションタスクを実行すると、Amazon ECS は Amazon EC2 インスタンスをプロビジョニングし、デーモンタスクを起動してから、アプリケーションタスクを RUNNING に移行します。Amazon ECS は、重要度に関係なくすべてのデーモンにこの順序を使用するため、アプリケーションがリクエストの処理を開始する前に、ログ記録、トレース、メトリクス収集などのクロスカット機能が動作します。

重要度は、デーモンタスクが開始しない場合、または後で停止した場合に Amazon ECS が行う処理を制御します。クリティカルなデーモンの場合、開始に失敗したタスクにより、インスタンスがアクティブにならないようにします。インスタンスがアクティブになった後にタスクが停止または異常になると、Amazon ECS はインスタンスをドレインして置き換えます。この自動修復動作により、手動による介入なしに信頼性の高いデーモンカバレッジが維持されます。

非クリティカルなデーモンは、インスタンスをブロックしたり、ドレインをトリガーしたりすることはありません。デーモンタスクの開始に失敗してもインスタンスはアクティブになり、デーモンタスクが停止したり後で異常になったりしてもアクティブのままになります。アプリケーションタスクは実行され続け、Amazon ECS はインスタンスへの新しいアプリケーションタスクの配置を続けます。

デーモンを新しいタスク定義リビジョンに更新すると、Amazon ECS は関連付けられたキャパシティプロバイダー内のすべてのインスタンス全体でローリングデプロイを実行します。デプロイ中、Amazon ECS は設定可能な割合のインスタンスを同時にドレインし、更新されたデーモンで置換インスタンスをプロビジョニングし、Amazon ECS サービスタスクを自動的に置き換えます。Amazon ECS は組み込みのサーキットブレーカー保護を提供します。ベイク時間と CloudWatch アラームを設定して、Amazon ECS がすべてのインスタンスを更新した後にデプロイをモニタリングし、問題が発生した場合に自動的にロールバックできるようにします。Amazon ECS は、クリティカルなデーモンと非クリティカルなデーモンの両方について、デーモンタスクの開始に失敗したときに EventBridge イベントを発行し、サービスアクションログを記録します。

主な利点

  • 分離されたライフサイクル管理 - アプリケーションのデプロイとは別にデーモンを更新します。

  • カバレッジの保証 - Amazon ECS はすべてのインスタンスでアプリケーションタスクの前にデーモンタスクを開始するため、アプリケーションがリクエストの処理を開始する前にクロスカット機能が動作します。クリティカルなデーモンの場合、起動に失敗したデーモンタスクによってインスタンスの登録も行われなくなるため、インスタンスがデーモンなしでアプリケーションタスクを処理することはありません。

  • 信頼性の高いバージョン更新 - デーモンバージョンを更新すると、Amazon ECS は、すべてのインスタンスがターゲットリビジョンを実行するように、組み込みのサーキットブレーカー保護と自動ロールバックを使用して、関連付けられたキャパシティプロバイダー内のすべてのインスタンス全体でそのバージョンをロールアウトします。

  • リソース使用率の向上 - インスタンスごとに 1 つのデーモンタスクを実行すると、タスクごとのサイドカーモデルがなくなり、クラスター全体のリソースオーバーヘッドが削減されます。

  • インスタンスの自動修復 – クリティカルなデーモンでは、デーモンタスクが停止または異常になった場合、Amazon ECS は自動的にそのコンテナインスタンスをドレインして置き換えます。これにより、手動による介入なしで信頼性の高いデーモンカバレッジが維持されます。

  • ワークロードの継続性 - 非クリティカルなデーモンでは、デーモンタスクが失敗、停止、または異常になった場合でも、アプリケーションワークロードを中断することなく実行し続けます。

注記

Amazon ECS は、Amazon EC2 起動タイプの Amazon ECS サービスの DAEMON スケジューリング戦略を提供します。マネージドデーモンは、Amazon ECS マネージドインスタンス用に構築された新機能で、デーモンのデプロイを簡素化し、強化されたデーモンカバレッジの保証を提供します。

開始方法

使用を開始するには、コンテナイメージを指定するデーモンタスク定義を登録し、クラスター内の関連付けられたキャパシティプロバイダーでデーモンを作成します。AWS マネジメントコンソール、AWS CLI、CloudFormation、または AWS SDK を使用できます。手順については、「デーモンの作成と管理」を参照してください。