💭
ecsのローリング更新について簡単にまとめてみる
ecsのデプロイについての学習をしていたところ、ローリング更新というものがあるとしり、調べてみたので簡単にまとめる。
ローリング更新とは
ローリング更新とは、(設定によるが)すでに起動中のタスクを停止させることなく、新しくデプロイしたいタスクを起動し終えてから、既存のタスクを削除したりするので、サービスが停止せずにデプロイが行えるというもの。
例
v1という状態のタスクでサービス運用していて、新しくv2をデプロイしたいとする。
このデプロイを行う時、以下のような状態になっている。
- v1のタスク(起動中)
- v1のタスク(起動中)、v2のタスク(起動中)
- 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