💭

ecsのローリング更新について簡単にまとめてみる

2022/07/03に公開

ecsのデプロイについての学習をしていたところ、ローリング更新というものがあるとしり、調べてみたので簡単にまとめる。

ローリング更新とは

ローリング更新とは、(設定によるが)すでに起動中のタスクを停止させることなく、新しくデプロイしたいタスクを起動し終えてから、既存のタスクを削除したりするので、サービスが停止せずにデプロイが行えるというもの。

v1という状態のタスクでサービス運用していて、新しくv2をデプロイしたいとする。
このデプロイを行う時、以下のような状態になっている。

  1. v1のタスク(起動中)
  2. v1のタスク(起動中)、v2のタスク(起動中)
  3. v1のタスク(停止or削除)、v2のタスク(起動中)

(参考)[https://qiita.com/NaokiIshimura/items/8e43135864f2518dcabc]

このように、常にタスクを起動させた状態にしておくことができる。

ecsサービス更新時のコマンドのオプションなどについて

サービスの更新を行う際に、いくつかオプションを指定できる。

オプション 説明
deployment-max-percent サービスの更新を行う際に、ここで設定したパーセンテージまでタスクを起動できる。何に対してのパーセンテージかというと、タスク定義からタスクを作成した際に指定したタスク数(desiredCount)。例えば200%で既存で1タスク起動しているとすると、デプロイ中は既存の1タスクの200%つまり2タスク起動することができる(既存の1タスク+デプロイしたい1タスク)。
deployment-min-healthy-percent ローリング更新時に起動しておきたいdesiredCountに対するタスクのパーセンテージ。例えば、100%で既存desiredCountが1タスクの場合、100%つまり1タスクは絶対に動かしておく。
target-groups ロードバランサーなどを使う場合、どのコンテナのどのポートに通信を振り分けるのかなどを設定する
health-check-grace-period 定期実行されるヘルスチェックで、正常ではないステータスが返ってきた際に、何秒間そのステータスを無視するかの設定。例えば0を設定すれば、ヘルスチェックで異常が検出された瞬間にタスクが停止し、desiredCountになるまでタスクを起動し直す。

その他、いろいろオプションがあります。
参考

Discussion