kzk-casino.com

一人前のITエンジニアを目指して

AWSのECSを使ってdockerを動かしてみたりDeployの挙動を見てみたりした ③Cluster、EC2、ALBなどの設定

Clusterの作成

ECSの画面から「クラスターの作成」を選んで、名前を入力する

f:id:kzk_casino:20161015172649p:plain

f:id:kzk_casino:20161015172719p:plain


Clusterに登録するEC2の準備

通常手順でEC2を作成する

Clusterへの登録は過去の記事を参照
kzk-casino.hatenablog.com

※User Dataを使用してもよい

ALBの設定

Cluster内の各EC2インスタンス上で稼働するコンテナに対してELBを用いてLBする必要があるが、
ELBではポートマッピングの際に問題がある

インスタンス上に立てたコンテナは、インスタンスのポートとコンテナのポートでマッピングして、
インスタンスマッピングされたポートへのアクセスがあるとコンテナにリダイレクトする。

例えば、EC2に80/tcpのアクセスが来たらContainerA、8080/tcpのアクセスが来たらContainerB、といったようにポートマッピングを行う

f:id:kzk_casino:20161015174302p:plain


しかし、ここで下記の問題が発生する。

  • コンテナを自動起動・自動拡張させた場合、常にポートマッピングを気にして(つまりEC2の空きポートを意識して)設定する必要が有る
  • ELB上に、Listenするポートと各コンテナのひも付けを都度設定する必要がある

これでは後述するTaskの自動起動や、AutoScalingとの親和性が非常に悪いので、理想としては各コンテナに対するポートマッピングはコンテナ起動時に自動的に実施されて、ELBにその情報が自動反映されるのが好ましい。

そこで使用できるのが、ELB ver2とも言われている、Application Load Balancerである

ALBはダイナミックポートマッピングをサポートしているので、上記の課題を解決することができる

以下ではALBの設定について記載する

ELB作成画面でALBを選択

f:id:kzk_casino:20161015174926p:plain

ALBの名前とListenerを設定

f:id:kzk_casino:20161015175002p:plain

VPCとAZを設定

f:id:kzk_casino:20161015175034p:plain

セキュリティ上のメッセージが表示されるが、無視してSGの設定

f:id:kzk_casino:20161015175142p:plain

ターゲットグループとヘルスチェックを設定

f:id:kzk_casino:20161015175218p:plain

ターゲットの登録は一旦Skip

f:id:kzk_casino:20161015175308p:plain

設定内容を確認してALBを作成する。



次はTask Definitionの作成と、Serviceの設定