サービスを作ろう
ここまで来て、ようやくサービスの作成が初められます。
AWSで言うサービスというのは、ECSを構成する概念のひとつです。
いわゆる「Webサービス」とは意味が違います。
オーケストレーションツールなしで、Dockerだけで運用する場合、コンテナが止まったときに人間がわざわざコンテナを手動で立ち上げなくてはならないという問題がありました。
サービスはそれを解決します。
WebアプリにECSを使う場合、サービスは次の役割を担います。
基本起動しっぱなしでリクエストを待ち受けて欲しい
コンテナが止まったら再起動してほしい
外部からの接続を受けてポートマッピングして欲しい
クラスタ上にサービスを作成する
llminatoll.icon ロードバランサーを作ったから、続いてサービスを作っていくよ!
サービス > ECS > クラスターの順にクリック。
先程作成したクラスターを選択し、「サービス」タブを選択します。
作成ボタンをクリック。
https://gyazo.com/b5e00915871bb5e774f5ac67d6f18ce4
ステップ1:サービスの設定
起動タイプはEC2。
タスクはバージョンも指定します(最新版、つまり数字が一番大きいものを選びます)。
サービス名はphp-serviceとします。
「タスクの数」には、常に起動しておきたいタスクの数を指定できます。今回は2とします。
https://gyazo.com/dc557c76bc3754b5c46116d5c34e3b2a
次のステップへ
ステップ2ではネットワーク構成を設定します。
ELBタイプは「Application Load Balancer」を選択(ELBとは、Elastic Load Balancingの略)
IAMロールは、プルダウンから「AWSServiceRoleForECS」を選択
ELB名は先ほど作ったロードバランサー「php-load-balancer」を選択
https://gyazo.com/102fc81f0d24b04bcb4558df6eb31ddc
ELBへの追加をクリック。
https://gyazo.com/3232c77cb127c509a9eede8690fbb9c3
https://gyazo.com/8056b80d6ff292d66148da57e8f9d200
するとこんな画面になります。
「ターゲットグループ名」は先程追加したもの(phptest)を選択します。
「次のステップ」をクリック。
ステップ3:Auto Scaling
特に変更なし。
https://gyazo.com/ad320437fe1b46faa2f4cbf4ada4b405
「次のステップ」をクリック。
ステップ4: サービスの確認
最後に確認画面が表示されます。
https://gyazo.com/bb38fc696369562f6f80fd4896ff747b
確認したら右下の「サービスの作成」ボタンをクリック。
https://gyazo.com/f130f83ec6e9f9277a4a5fb551122947
これで、サービスができました!!
https://gyazo.com/f29cef9876d9bc7573902a084201434a
llminatoll.icon 本当にWebアプリが生き返るか試してみよう!
クラスター > タスクから、今動いている2つのタスクを停止してみましょう。
https://gyazo.com/4e795c63e3ab246a21a6b3c9a16b247c
https://gyazo.com/5a9b477706ee0bcf6631439ebaf08958
▼開いて確認、ちゃんと死んでいる
https://gyazo.com/ba5b523253a991dc525bcd585f45d1d7
数十秒ほどしてからページを更新してみると
▼消したはずのタスクが・・・
https://gyazo.com/594b9672791ccb6c036990430c2b2a2e
▼復活!
https://gyazo.com/2d18acf99a7a2ebddc79d50f7cca6a3e
死んでたページが生き返ってる!🙌
https://gyazo.com/a52221de3ec51a5203a29db18870d74a
HTMLちゃん.icon 何度でも!
llminatoll.icon 蘇るさ!
〜完〜
GIFアニメで見る
▼タスクを消して・・・
https://gyazo.com/7bf3c9942f02676414cfc614f6a2d917
▼タスクが復活する様子🌈
https://gyazo.com/4fff3f73694b018f62826c8b8e1dcb25
次