Help us understand the problem. What is going on with this article?

AWS のコンテナーサービス Fargate を使ってみた

はじめに

みなさん、こんばんは。某 Sier でクラウドアーキテクトをやってます、しいくまと申します。
コンテナーを勉強中ですので、コンテナー関連のブログを書き溜めていこうと思います。
普段仕事では Azure をメインで触っていますので、今回は AWS の方のコンテナーサービスである Fargate を使ってみたいと思います。

コンテナーとは

サービスの説明の前に、コンテナーってなんぞやという方!
コンテナーとは、ざっくり言うと仮想化の技術のひとつです。
従来の VMware などの仮想化は、ハードウェアを仮想化し、仮想ハードウェアレイヤー以上を個別に仮想化していました。
このやり方ですと、1 台の物理サーバー上に複数の仮想サーバーを立てることができるといったメリットがありました。

image.png

仮想化ソフトウェアといえば、VMware がとても流行ったのが記憶にあるかと思います。
わたしも VMware ユーザーでした。
なのですが、仮想サーバーが増えるということは OS も増えるということです。
OS が増えるということはその分管理するタスクも増えます。(特に Windows のパッチ適用はどの企業も課題かと思います...)
また、仮想サーバー上のアプリケーションから物理ハードウェアにリーチするまでのオーバーヘッドが多少なりかかってしまいます。

そこで登場するのがコンテナーです。

コンテナーとは簡単に申し上げますと、アプリケーション実行環境以上を仮想化する技術です。
ひとつの OS 上に論理的に独立させたアプリケーション実行環境を作り、アプリケーションが動作します。
そのため、管理する OS は 1 つで済むのです。

image.png

あの Docker がコンテナー管理ソフトウェアにあたります。
緑色に囲っている部分がコンテナーになります。
コンテナーの中身は、アプリケーション実行環境とアプリケーションになります。

わたしは下記書籍で勉強しています。
手を動かしながら学べるので、なんとなく知った気以上にはなれます。

image.png

Docker/Kubernetes 実践コンテナ開発入門

みなさまもぜひポチってみてください。 (決して回し者ではございません)

AWS Fargate とは

AWS 公式な情報ですと下記ブログが参考になるかと思います。

https://aws.amazon.com/jp/blogs/aws/aws-fargate/

AWS Fargate is an easy way to deploy your containers on AWS.

直訳しますと、
AWS Fargateは、コンテナをAWSにデプロイする簡単な方法です。
だそうです。

コンテナー管理ソフトウェアレイヤー以下はクラウドベンダーがやるぜ。
コンテナー以上をよろしくどうぞ。っていう感じで、とっても優しいです。

image.png

上記図の赤い部分が、AWS Fargate になります。
ちなみに、Azure でいうと、Azure Container Instance (ACI) というのがそれにあたります。

実際に試してみた

では、どれだけ簡単なのか試してみようということで、
簡単ですが Web サーバー (Nginx) を立てて、確認してみたいと思います。
手順は以下のとおりです。

1.クラスターの作成
2.タスク定義の作成
3.タスクの実行
4.稼働確認
5.タスクの停止

Fargate ですと、タスクと呼ばれているものがコンテナーにあたります。
イメージとしては下記のような形です。
一番下にクラスターという入れ物があって、
その上でタスク (コンテナー) が稼働します。

image.png

Fargate はタスクが実行されている間、課金をされます。
ですので、使わないときは停止させておきましょう。
タスクの定義を消す必要はありません。

1.クラスターの作成

クラスターを作成します。
マネジメント コンソールより、サービスの検索にて、「fargate」と入力します。
ECS (Elastic Container Service) を選択してください。
ECS は AWS のマネージド コンテナーオーケストラーサービスになります。
別途ご紹介したいと思います。

image.png

[クラスターの作成] を選択します。

image.png

[AWS Fargate を使用] を選択し、右下の [次のステップ] を選択します。

image.png

任意のクラスター名を入力し、[作成] を選択します。

image.png

下記画面が表示されればクラスターの作成が完了です。

image.png

2.タスク定義の作成

タスク定義を作成します。
右ペインより [タスク定義] を選択し、[新しいタスク定義の作成] を選択します。

image.png

起動タイプは [FARGATE] を選択し、右下の [次のステップ] を選択します。

image.png

任意のタスク定義名を入力します。

image.png

[タスクメモリ] および [タスク CPU] を選択します。
今回は検証ですので、最低限のスペックとしています。

image.png

[コンテナの追加] を選択します。

image.png

任意のコンテナ名を入力し、イメージは [nginx] と入力します。

image.png

[Command] に下記を入力します。

CMD-SHELL,curl -f http://localhost/ || exit 1

このコマンドはヘルスチェックに使いたいコマンドとなります。
今回の Web サーバを想定しているので、
自身で curl を投げて、80 番ポートが生きているかの確認になります。

下記のパラメータを入力します。

image.png

(Interval) 30 秒おきに上記 Command を実行し、
(Timeout) 5 秒感応答がない場合は失敗とみなし、
(Retires) 3 回失敗するまでリトライする。
とういう設定になります。

ですので、障害検知までに、
30 秒 + 5 秒
30 秒 + 5 秒
30 秒 + 5 秒
30 秒 + 5 秒
= 140 秒 (約 2分半) かかるということですね。

(Start period) は起動時間を失敗とみなさないための猶予期間となります。

環境はそのまま

image.png

ネットワーク設定もそのまま

image.png

ストレージとログもそのまま

image.png

リソースの制限および DOCKER ラベルもそのままにし、[追加] を選択します。

image.png

[作成] を選択します。

image.png

下記画面が表示されればコンテナー定義の作成は完了です。

image.png

3.タスクの実行

作ったタスク定義を実行します。
右ペインより [タスク定義] を選択し、[アクション] - [タスクの実行] を選択します。

image.png

起動タイプは Fargate を選択します。

image.png

任意の VPC およびサブネットを選択し、[タスクの実行] を選択します。

image.png

下記画面が表示されればタスクの実行は完了です。

image.png

4.コンテナーの稼働確認

実際にアクセスしてみます。
クラスター管理画面より、対象のタスクを選択します。

image.png

Public IP が割り振られている IP アドレスになります。
この情報をコピーして、

image.png

ブラウザからアクセスすると、、、

image.png

応答がちゃんと返ってきました!
無事稼働しているようですね。

5.タスクの停止

タスクを停止させます。
停止対象のタスクにチェックをして、[停止] を選択します。

image.png

停止確認をされますので、[停止] を選択します。

image.png

下記画面が表示されればタスクの停止は完了です。

image.png

さいごに

だいぶざっくり手順で申し訳いないです...
ただ、Azure の ACI と比較すると少し手順が多めかなという印象でしたが、
それでもポチポチですぐにデプロイすることが可能でした。
また、使った分だけ課金、Pay as you go ですので、ぜひ利用してみてください。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away