Qual é a diferença entre o Amazon ECS e o Amazon EC2?

127

Estou apenas começando no AWS EC2. Entendo que o EC2 é como um computador remoto, onde posso fazer praticamente tudo o que quero. Então eu descobri sobre ECS. Eu sei que ele usa o Docker, mas estou confuso sobre o relacionamento entre esses dois.

O ECS é apenas uma instalação do Docker no EC2? Se eu já tenho um EC2 e inicio um ECS, isso significa que tenho duas instâncias?

paynestrike
fonte

Respostas:

169

Sua pergunta

O ECS é apenas uma instalação do docker no EC2? Se eu já tenho um EC2, inicio um ECS, significa que tenho duas instâncias?

No. AWS ECSé apenas um agrupamento lógico (cluster) de EC2instâncias, e todas as EC2instâncias fazem parte de um ECSato como Dockerhost, ou seja, o ECS pode enviar um comando para ativar um contêiner ( EC2). Se você já possui um EC2 e, em seguida, inicia o ECS, ainda terá uma única instância. Se você adicionar / registrar (instalando o AWS ECS Container Agent) o EC2 no ECS, ele se tornará parte do cluster, mas ainda será uma instância única do EC2.

Um Amazon ECS sem nenhum EC2 registrado (adicionado ao cluster) é inútil.


TL; DR

Uma visão geral

  • EC2 - é simplesmente uma máquina remota (virtual).
  • ECSsignifica Elastic Container Service- conforme a definição básica de cluster de computadores , ECSé basicamente um agrupamento lógico de EC2máquinas / instâncias . Tecnicamente falando, ECSé uma mera configuração para um uso e gerenciamento eficientes dos recursos de suas EC2 instâncias, como armazenamento, memória, CPU, etc.

Para simplificar ainda mais, se você lançou um Amazon ECSsem EC2instâncias adicionadas, não adianta nada, ou seja, você não pode fazer nada a respeito. ECSfaz sentido apenas quando uma (ou mais) EC2instância é adicionada a ela.

A próxima coisa confusa aqui é o termo do contêiner - que não é totalmente instâncias de máquinas virtualizadas e o Docker é uma tecnologia que podemos usar para criar instâncias de contêineres. Dockeré um utilitário que você pode instalar em nossa máquina, o que o torna um Dockerhost e, nesse host, você pode criar contêineres (o mesmo que máquinas virtuais - mas muito mais leves). Em resumo, ECStrata-se apenas de agrupar instâncias do EC2 e usa Dockerpara instanciar contêineres / instâncias / máquinas virtuais nesses EC2hosts ( ) .

Tudo o que você precisa fazer é iniciar ECSe registrar / adicionar quantas EC2instâncias precisar. Você pode adicionar / registrar instâncias do EC2, tudo o que precisa é do Amazon ECS Container Agent em execução na sua instância / máquina do EC2, o que pode ser feito manualmente ou diretamente usando a AMI especial (Amazon Machine Image), ou seja, a AMI otimizada para Amazon ECS, que já possui o Amazon ECS Container Agent. Durante o lançamento de uma nova instância do EC2, o Agente a registra automaticamente no cluster do ECS padrão.

O agente de contêiner em execução em cada uma das instâncias ( EC2instâncias) em um Amazon ECScluster envia informações sobre as tarefas atuais em execução e a utilização de recursos da instância para o Amazon ECS e inicia e interrompe tarefas sempre que recebe uma solicitação do Amazon ECS. Para obter mais informações, consulte Amazon ECS Container Agent . Uma vez definida, cada uma das instâncias de contêiner criadas (de qualquer EC2máquina / nó) será uma instância no Amazon ECSenxame.


Para obter mais informações - leia a etapa 10 desta documentação: Iniciando uma instância do Amazon ECS Container :

Escolha uma AMI para sua instância de contêiner. Você pode escolher a AMI otimizada para Amazon ECS ou outro sistema operacional, como CoreOS ou Ubuntu. Se você não escolher a AMI otimizada para Amazon ECS, precisará seguir os procedimentos em Instalando o Amazon ECS Container Agent .

Por padrão, sua instância de contêiner é iniciada no cluster padrão. Se você deseja iniciar seu próprio cluster em vez do padrão, escolha a lista Detalhes Avançados e cole o seguinte script no campo Dados do usuário, substituindo your_cluster_name pelo nome do seu cluster.

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

Ou, se você tiver um arquivo ecs.config no Amazon S3 e tiver ativado o acesso somente leitura do Amazon S3 à sua função de instância do contêiner, escolha a lista Detalhes avançados e cole o seguinte script no campo Dados do usuário, substituindo your_bucket_name pelo nome de seu bucket para instalar a CLI da AWS e gravar seu arquivo de configuração no momento da inicialização. Nota Para obter mais informações sobre essa configuração, consulte Armazenando a configuração da instância do contêiner no Amazon S3.

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

Apenas para esclarecer melhor - você pode criar contêineres em sua única EC2instância sem ECS. Instale qualquer tecnologia de containerização, ou seja, Dockere execute o comando create container, configurando o seu EC2como Dockerhost, e tenha o máximo de Dockercontêineres que você desejar (ou o máximo que EC2os recursos permitirem).

Nabeel Ahmed
fonte
8
ECS não significa Elastic Container Service?
Lfk
1
Note-se que esta resposta é agora substancialmente fora da data com o lançamento da AWS Fargate no início de 2018 (que funciona ECS): aws.amazon.com/fargate
bsplosion
77

Em palavras simples, o ECS é um gerente, enquanto as instâncias do EC2 são como funcionários. Todos os funcionários (EC2) desse gerente (ECS) podem executar tarefas do "Docker" e o gerente também entende muito bem o "docker". Portanto, sempre que precisar de recursos de "janela de encaixe", você aparecerá no Gerenciador. O gerente já tem status de todo funcionário (EC2) decide qual deles deve executar a tarefa.

Agora, voltando à sua pergunta, um gerente sem um "funcionário" não faz sentido.

insira a descrição da imagem aqui

subodhkarwa
fonte
Explicação muito boa. Do que você!
Matley 27/03
Bem, você pode ter instâncias EC2 sem ECS, mas isso seria apenas uma simples máquina virutal.
Lea Reimann 12/06
31

O EC2 permite iniciar instâncias individuais que você pode usar para praticamente o que quiser. O ECS é um serviço de contêiner, o que significa que ele iniciará instâncias que estarão prontas para iniciar aplicativos de contêiner. A principal distinção entre os dois serviços é que, com o EC2, você precisa gerenciar cada instância separadamente, independentemente do método que escolher (manualmente, usando uma ferramenta CM ou qualquer outra maneira) - implante seus aplicativos e mantenha você mesmo a conexão entre os servidores. O ECS permite iniciar um cluster de máquinas que servirá como ponto de implantação dos aplicativos de contêiner, permitindo tratar todas as instâncias no cluster como uma grande instância disponível para sua carga de trabalho de contêiner.

E para responder à sua pergunta - Você pode iniciar um cluster do ECS sem instâncias, mas não poderá executar nada nele. Depois de registrar uma instância do EC2 dentro de um cluster do ECS, os contêineres estão prontos para serem executados nela. Portanto, a questão é: você pode usar o ECS e o EC2 com apenas uma instância, mas esse não é o caso de uso real para o qual esses serviços foram criados.

Yaron Idan
fonte
3

Simplificando, o Elastic Container Service (ECS) é um serviço de orquestração de contêiner do Docker.

Você pode solicitar que ele execute uma ou mais imagens do Docker, como um " Serviço " com capacidade de dimensionamento automático ou como uma " Tarefa " ad-hoc .

Os serviços e tarefas são executados em um " Cluster ". Originalmente, um Cluster era um grupo de um ou mais servidores EC2 pré-configurados executando o ECS Cluster Agent. O Cluster Agent agendaria os contêineres no servidor EC2. Esses servidores EC2 aparecem na sua lista de instâncias do EC2 e são cobrados a custos regulares por minuto do EC2 - você pode até fazer o SSH neles como qualquer servidor EC2 normal. Se você quisesse mais capacidade de executar mais Serviços ou Tarefas ou se desejasse resiliência contra falhas do EC2, seria necessário mais servidores EC2.

Por volta de novembro de 2017, a AWS adicionou o ECS Fargate . Agora, um cluster pode executar "sem servidor" sem provisionar nós EC2. Você simplesmente define a quantidade de CPU e memória que sua Tarefa ou Serviço requer para operar, o que significa que você paga apenas pelo tempo de CPU e memória, e não pelo EC2.

Alastair McCormack
fonte
2

Ok, como você sabe, o EC2 é uma máquina virtual na AWS e o ECS é um sistema de orquestração de contêineres na AWS.

Para usar o ECS, você precisa executar seu contêiner em algumas máquinas virtuais, nas quais o EC2 é uma das opções para fornecer isso.

Você precisará instalar ecs-agentno EC2 para fazer uma conexão com o ECS. E o ECS também pode monitorar o uso de recursos no seu EC2. Então, basicamente, você escolhe o tipo EC2 de mais alto nível e mais recursos (CPU / MEM) que seu contêiner pode usar.

David Hsu
fonte
0

A principal diferença são as instâncias do Fargate fornecidas pelo ECS.

hongdeshuai
fonte