web-dev-qa-db-ja.com

Amazon ECSとAmazon EC2の違いは何ですか?

AWS EC2を使い始めたばかりです。EC2は、私がやりたいことのほとんどを実行できるリモートコンピューターのようなものであることを理解しています。それからECSを見つけます。それはdockerを使用していることを知っていますが、これら2つの関係によって混乱しています。

ECSはEC2の単なるドッカーインストールですか?すでにEC2を持っている場合、ECSを開始します。2つのインスタンスがあるということですか?

71
paynestrike

あなたの質問

ECSはEC2の単なるドッカーインストールですか?すでにEC2を持っている場合、ECSを開始します。2つのインスタンスがあるということですか?

いいえ。AWS ECSは、EC2インスタンスの単なる論理グループ(クラスター)であり、ECSのすべてのEC2インスタンス部分は、Dockerホストとして機能します。つまり、ECSは、それらのコンテナー(EC2)を起動するコマンドを送信できます。既にEC2があり、ECSを起動した場合、単一のインスタンスがあります。 (AWS ECS Container Agentをインストールすることにより)EC2をECSに追加/登録すると、クラスターの一部になりますが、EC2の単一のインスタンスになります。

EC2が登録されていない(クラスターに追加された)Amazon ECSは何の役にも立ちません。


TL; DR

概要

  • EC2-単なるリモート(仮想)マシンです。
  • ECSElastic Container Serviceを表します- コンピュータークラスターECSの基本的な定義に従ってEC2 machines/instancesのグループ化。技術的に言えば、ECSは、EC2インスタンスリソース(ストレージ、メモリ、CPUなど)を効率的に使用および管理するための単なる構成です。

それをさらに簡素化するために、Amazon ECSインスタンスを追加せずにEC2を起動した場合、何の役にも立たない、つまり何もできない。 ECSは、1つ(または複数)のEC2インスタンスが追加された場合にのみ意味を持ちます。

ここで次に混乱するのは、containerという用語です。これは完全に仮想化されたマシンインスタンスではなく、Dockerはコンテナインスタンスの作成に使用できる技術の1つです。 。 Dockerは、マシンにインストールできるユーティリティです。これにより、Dockerホストになり、このホストでコンテナーを作成できます(仮想マシンと同じですが、はるかに軽量です)。要約すると、ECSはEC2インスタンスのクラスタリングに過ぎず、Dockerを使用して、これら(EC2)ホスト上のコンテナー/インスタンス/仮想マシンをインスタンス化します。

必要なのは、ECSを起動し、必要なだけEC2インスタンスを登録/追加することです。 EC2インスタンスを追加/登録できます。必要なのは、EC2インスタンス/マシンで実行されているAmazon ECSコンテナエージェントです。これは、手動または特別なAMI(Amazon Machine Image)を使用して直接実行できます。 Amazon ECSコンテナエージェント。新しいEC2インスタンスの起動中に、エージェントはデフォルトのECSクラスターに自動的に登録します。

EC2クラスター内の各インスタンス(Amazon ECSインスタンス)で実行されているcontainer agentは、インスタンスの現在実行中のタスクとリソース使用率に関する情報をAmazon ECSに送信し、受信するたびにタスクを開始および停止しますAmazon ECSからのリクエスト。詳細については、「 Amazon ECS Container Agent 」を参照してください。設定されると、作成された各コンテナインスタンス(EC2 machine/nodeが何であれ)は、Amazon ECSのswarmのインスタンスになります。


詳細については、このドキュメントのステップ10をお読みください。 Amazon ECSコンテナインスタンスの起動

コンテナインスタンスのAMIを選択します。 Amazon ECSに最適化されたAMI、またはCoreOSやUbuntuなどの別のオペレーティングシステムを選択できます。 Amazon ECSに最適化されたAMIを選択しない場合、 Amazon ECS Container Agentのインストール の手順に従う必要があります。

デフォルトでは、コンテナインスタンスはデフォルトクラスタで起動します。デフォルトではなく独自のクラスターを起動する場合は、[詳細]リストを選択し、次のスクリプトを[ユーザーデータ]フィールドに貼り付けて、your_cluster_nameをクラスターの名前に置き換えます。

#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config

または、Amazon S3にecs.configファイルがあり、コンテナインスタンスロールへのAmazon S3読み取り専用アクセスを有効にしている場合は、[詳細]リストを選択し、次のスクリプトを[ユーザーデータ]フィールドに貼り付け、your_bucket_nameをバケットを使用してAWS CLIをインストールし、起動時に設定ファイルを書き込みます。 Noteこの設定の詳細については、「Amazon S3でのコンテナインスタンス設定の保存」を参照してください。

#!/bin/bash
yum install -y aws-cli
aws s3 cp s3://your_bucket_name/ecs.config /etc/ecs/ecs.config

さらに明確にするために、単一のEC2インスタンスにECSなしでコンテナーを作成できます。コンテナ化テクノロジー、つまりDockerのいずれかをインストールし、EC2Dockerホストとして設定してcreate containerコマンドを実行し、必要なだけ(またはEC2のリソースが許可する限り)Dockerコンテナーを使用します。

122
Nabeel Ahmed

EC2を使用すると、個々のインスタンスを起動して、ほとんど何でも使用できます。 ECSはコンテナサービスです。つまり、コンテナアプリケーションを起動する準備が整ったインスタンスを起動します。 2つのサービスの主な違いは、EC2では、選択した方法(手動でCMツールまたはその他の方法を使用)で各インスタンスを個別に管理する必要があることです-アプリケーションをデプロイし、サーバー間の接続を自分で維持します。 ECSでは、コンテナーアプリの展開基盤として機能するコンピューターのクラスターを起動できます。これにより、クラスター内のすべてのインスタンスを、コンテナーワークロードで使用可能な1つの大きなインスタンスとして扱うことができます。

そして、あなたの質問に答えるために-インスタンスを持たないECSクラスターを開始できますが、それでは何も実行できなくなります。 EC2インスタンスをECSクラスター内に登録すると、コンテナーをその中で実行する準備が整います。つまり、ECSとEC2の両方を1つのインスタンスのみで使用できますが、これらのサービスが構築された実際のユースケースではありません。

25
Yaron Idan

簡単に言えば、ECSはマネージャーであり、EC2インスタンスは従業員のようなものです。このマネージャー(ECS)のすべての従業員(EC2)は「Docker」タスクを実行でき、マネージャーは「docker」もかなり理解しています。そのため、「docker」リソースが必要なときはいつでも、マネージャーに表示されます。マネージャーは、すべての従業員(EC2)から既にステータスを取得しており、どの従業員がタスクを実行するかを決定します。

さて、あなたの質問に戻って、「従業員」のいないマネージャーは意味がありません。

enter image description here

21
subodhkarwa

簡単に言うと、Elastic Container Service(ECS)はDockerコンテナーオーケストレーションサービスです。

自動スケーリングが可能な「Service」またはアドホックな「Task」として、1つ以上のDockerイメージを実行するように要求できます。

サービスとタスクは「Cluster」で実行されます。もともと、クラスターは、ECSクラスターエージェントを実行する1つ以上の事前構成済みEC2サーバーのグループでした。 Cluster Agentは、EC2サーバー上のコンテナをスケジュールします。これらのEC2サーバーはEC2インスタンスリストに表示され、通常のEC2毎分料金で課金されます。通常のEC2サーバーと同様にSSHで接続することもできます。より多くのサービスまたはタスクを実行するための容量が必要な場合、またはEC2障害に対する回復力が必要な場合は、より多くのEC2サーバーを使用します。

2017年11月頃、AWSはECS Fargateを追加しました。これで、クラスターはEC2ノードをプロビジョニングせずに「サーバーレス」で実行できます。タスクまたはサービスが動作するために必要なCPUとメモリの量を定義するだけです。つまり、EC2ではなくCPUとメモリの時間に対して支払うだけです。

0