Amazon ECS編~ECSを使ってみる02~

Pocket

こんにちは!JQです!

前回は『Amazon ECS編~ECSを使ってみる01~』と題して、Amazon ECSのGetStartedを試してみました。

今回は『Amazon ECS編~ECSを使ってみる02~』と題して、Amazon ECSでGetStartedを使わずに試してみたいと思います。

用語

・Task Definition
Task Definitionはコンテナに関する定義。
CPUやメモリ割当やContainer間のLinkなどを設定出来る。

・Cluster:
Taskを実行するためのContainerインスタンスの論理的なグループ

・Containerインスタンス:
クラスタに登録されているECS Agentが稼働しているEC2インスタンス。

・Container
Taskにより生成されたDockerコンテナ

1.Task Definitionsの作成

先ずはTask Definitionsを作成します。
左メニューから「Task Definitions」に進み、Createを選択します。

01

コンテナ間での使うVolumeを作成する為に「Add Volume」をクリックして作成します。

02

03

次にコンテナの定義をしていきます。
「Add Container Definition」をクリックします。

04

HTTPDのTASKを定義していきます。
Imageには「httpd:2.4」を利用して、「Port Mappings」で80ポートに届くようにします。
先ほど作成したVolumeを「/usr/local/apache2/htdocs」にマウントするようにします。

05

続いてアプリのTASKを定義していきます。

06

アプリTASKではImageに「busybox」を利用して、「Entry Point」と「Command」でindex.htmlを作成するコマンドを実行するようにします。
Volumeは「httpdコンテナ」を利用するようにします。

07
08

設定が終わったら「Create」を実行します。

09

2.Clusterの作成

続いてTASKが実行されるClusterを構築します。

10

11

12

3.ECS Agentインスタンスの登録

作成されたClusterにはECS Agentインスタンスがまだ登録されていないのが確認できます。

13

作成されたClusterにECS Agentインスタンスを登録します。
AWSが用意しているAMIを利用してECS Agentインスタンスを起動します。
「amzn-ami-2015.03.e-amazon-ecs-optimized」

14

IAM Role等を適宜設定して起動します。
また、Clusterに登録するようにUserDataを設定します。

15

インスタンスが立ち上がると添付のように登録のされているのが確認出来ます。

16

4.Serviceの設定

最後にClusterでServiceを設定します。
作成したTASK Definitionを選択してCreateします。

17
18

19

ServiceによりTASKが走っているのがわかります。

20

実際にアクセスして確認してみます。

21

ECS Agent上でも確認してみます。
該当のコンテナが稼働してるのが分かります!

# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cca7ff3cdd01 busybox:latest “\”sh -c ‘/bin/sh -c About a minute ago Up About a minute ecs-test-1-testapp-dabad5cef69dacb53400
cd04ffd33af1 httpd:2.4 “httpd-foreground” About a minute ago Up About a minute 0.0.0.0:80->80/tcp ecs-test-1-httpd-86b0c4cfe5eede9d7900
5b7597ecfe34 amazon/amazon-ecs-agent:latest “/agent” 6 minutes ago Up 6 minutes 127.0.0.1:51678->51678/tcp ecs-agent

いかがでしたでしょうか?

次回は『Amazon ECS編~ECSを使ってみる03~』と題して、Amazon ECSでコンテナの入れ替えを試してみたいと思います。
お楽しみに!!!