Fluentbitなどのサイドカー構成のタスクの場合、仮にサイドカーのコンテナ、またはアプリのコンテナが停止した場合にどのような動作になるのか調査した。仮に片側のコンテナが停止した場合に、残りのコンテナだけで稼動するのであれば、障害時の対処方法を考える必要があるため気になるところ。
目次
調査結果
タスク定義(JSON)で、停止した対象のコンテナに対して「essentail =true 」としているか、「essentail = false 」としているかで挙動が変わる。
- 停止したコンテナが essentail = true の場合、問題が発生したタスク内のコンテナはすべて停止され、タスクが停止される。 タスクが停止されると、ECS サービススケジューラは新しいタスクを起動する。
- 一方、停止したコンテナが essentail = false の場合、他のコンテナは停止されず、タスクは起動し続ける。
補足
通常タスク定義をJSONで編集して意図的に変更していない限り、「essential=true」がデフォルトで設定されている。(AWSコンソール画面上の設定値として、essentialに該当する設定項目はない。Cloud Formationでも特に指定しない限り、essential=trueとなる。)
参考:
https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/task_definition_parameters.html