☁️
【ECS】基礎的な用語
くろかわこうへいさんやクラスメソッドのyoutubeで学んだECSについて
参考動画
関連概要図
クラスターとは
-
複数のEC2コンテナインスタンスで構成される
- このEC2はECSインスタンスとも呼ばれる
- 通常のEC2にECSコンテナエージェントがインストールされてる
- ecsように作成されたAMIがあり、これをつかって起動したEC2でECSを動かすためのインスタンス
-
EC2はVPCのサブネット内部で稼働する
タスクとは
タスク定義を基に作成されるコンテナをタスクという
タスク定義とは
下記のようなコンテナ全般にわたる設定を行うDokcerfileのようなもの
- image
- cpu
- メモリ
- ネットワーク
- IAMの権限
- 一つのコンテナに対して一つのタスク定義を使用するのが良いが、複数のコンテナも定義できる。
サービスとは
- 下記を定義できる
- タスクをの実行数
- 自動でタスクをデプロイする
- 最小値最大値をオートスケーリングのように設定できる
- CPU使用率が設定より高まった場合タスクを増やすなどできる
- サービスは複数設定できる
- タスクを配置して管理する機能
- サービスがなければ、タスクを手動実行して、クラスタにタスクを配置することになる
- 実際のサービスでは現実的ではない。(下記を人力でしなければならない)
- 負荷が高まればオートスケーリング
- タスクを24365で監視して管理する
- 実際のサービスでは現実的ではない。(下記を人力でしなければならない)
- タスク定義一つに対して一つのサービスを作成する
- サービスにはタスクを幾つ定義するか数を指定できる
- ECSはクラスターに対してタスクを3つ配置してくれる
- コンテナは6つ起動してる
- ECSは常にこの数のタスクが実行されるように維持する
- もしなんらかの問題が起きて、緑のコンテナが使えなくなってしまった場合
- タスクの数は5なので自動的に一つずつ補完してくれる
- もしなんらかの問題が起きて、緑のコンテナが使えなくなってしまった場合
Load Balancer
- ALB
- NLB
- 通常EC2インスタンスに対してバランシングするが、 ECSで作成するロードバランサーはサービスと関連づけたタスク全てに対してトラフィックをバランシングする
- コンテナポートを0にすることでエフェメラルポート(一時的なport)が割り当てられる
- セキュリティグループをアタッチするが、EC2のセキュリティグループ許可設定でLoadBalancerがアタッチしてるセキュリティグループからの通信を許可しておく必要がある
- クライアントは80番ポートでロードバランサーのDNSnameにアクセスし、ロードバランサーは各コンテナにアクセスを振り分けてくれる
ECR
Elastic Container Registory
- プライベート版のAWSが提供するdockerhub
- dockerレジストリとも呼ばれる
- dockerコンテナを保存する場所
- dockerデーモンがregistoryからdockerコンテナを取得したり保管したりする
Discussion