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


127

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

ECSはEC2のDockerインストールにすぎませんか?EC2がすでにあり、ECSを開始した場合、2つのインスタンスがあることを意味しますか?

回答:


169

あなたの質問

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

いいえ。インスタンスのAWS ECS単なる論理グループ(クラスター)でEC2あり、ホストとして機能するすべてのEC2インスタンスの一部です。つまり、ECSはコマンドを送信して、コンテナーを起動できます()。すでにEC2をお持ちで、ECSを起動しても、インスタンスは1つです。(AWS ECS Container Agentをインストールして)EC2をECSに追加/登録すると、EC2はクラスターの一部になりますが、EC2の単一のインスタンスになります。ECSDockerEC2

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


TL; DR

概要

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

さらに単純化するために、インスタンスを追加Amazon ECSせずにを起動EC2した場合、何もできない、つまり何もできないということになります。ECS1つ(または複数)のEC2インスタンスが追加されたときにのみ意味があります。

ここで次に混乱するのは、コンテナの用語です。これは完全に仮想化されたマシンインスタンスではありません。Dockerは、コンテナインスタンスの作成に使用できるテクノロジの1つです。Dockerは、私たちのマシンにインストールできるユーティリティであり、これをDockerホストにし、このホストでコンテナを作成できます(仮想マシンと同じですが、はるかに軽量です)。要約すると、これECSはEC2インスタンスのクラスタリングDockerに関するものであり、これらの(EC2)ホスト上でコンテナ/インスタンス/仮想マシンをインスタンス化するために使用します

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

コンテナエージェントインスタンス(のそれぞれで実行されているEC2内のインスタンス)Amazon ECSクラスタは、Amazon ECSにインスタンスの現在実行中のタスクとリソース使用率に関する情報を送信し、起動すると、それはアマゾンECSからの要求を受信するたびに作業を停止します。詳細については、「Amazon ECSコンテナエージェント」を参照してください。設定すると、作成された各コンテナインスタンス(EC2マシン/ノードに関係なく)Amazon ECSはの群れのインスタンスになります。


詳細情報–このドキュメントのステップ10をお読みください:Amazon ECSコンテナインスタンスの起動

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

デフォルトでは、コンテナインスタンスはデフォルトのクラスタで起動します。デフォルトではなく独自のクラスターで起動する場合は、[詳細]リストを選択し、次のスクリプトを[ユーザーデータ]フィールドに貼り付けます。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、create containerコマンドを実行しEC2て、Dockerホストをホストとして設定し、Docker必要な数(またはEC2のリソースで許可されている数)のコンテナを用意します。


8
ECSはElastic Container Serviceの略ではありませんか?
lfk 2017

1
2018年の初めにECSを実行するAWS Fargateがリリースされたことで、この回答は現在大幅に古くなっていることに注意してください:aws.amazon.com/fargate
bsplosion

77

簡単に言うと、EC2は従業員と同じように、ECSはマネージャーです。このマネージャー(ECS)の下のすべての従業員(EC2)は「Docker」タスクを実行でき、マネージャーは「docker」もかなりよく理解しています。したがって、「ドッカー」リソースが必要なときはいつでも、マネージャに表示されます。マネージャーはすでにすべての従業員からのステータスを持っています(EC2)は、どの従業員がタスクを実行する必要があるかを決定します。

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

ここに画像の説明を入力してください


とてもいい説明。あなたより!
Matley

まあ、ECSがなくてもEC2インスタンスを使用できますが、それは単純な仮想マシンのようなものです。
Lea Reimann

31

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

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


3

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

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

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

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


2

ご存知のとおり、EC2はAWSの仮想マシンであり、ECSはAWSのコンテナーオーケストレーションシステムです。

ECSを使用するには、EC2が提供するオプションの1つであるいくつかの仮想マシンにコンテナーを実行する必要があります。

ecs-agentECSと接続するには、EC2 にインストールする必要があります。また、ECSはEC2のリソース使用状況を監視することもできます。したがって、基本的には、より高レベルのEC2タイプを選択し、コンテナーが使用できるリソース(CPU / MEM)を増やします。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.