Database
 sql >> Base de Dados >  >> RDS >> Database

Como começar a usar o Amazon ECS e o Amazon Fargate


O Docker pode ser instalado nas plataformas de SO mais usadas. O CoreOS tem o Docker pré-instalado e foi projetado especificamente para executar contêineres do Docker. O Docker para AWS fornece um modo de enxame do Docker pronto para uso no qual um cluster de nós, chamado de enxame, fornece uma plataforma distribuída para executar aplicativos de contêiner do Docker.

Problema: Todas as plataformas Docker mencionadas são apenas tipos diferentes de instalações do Docker e exigem que os contêineres do Docker sejam executados e gerenciados na linha de comando.

Solução: Amazon ECS (Serviço de contêiner elástico ) é um serviço gerenciado para contêineres do Docker com suporte interno para dimensionamento, balanceamento de carga, rede, armazenamento, registro em log e outras tarefas de gerenciamento de contêiner do Docker. O Amazon ECS oferece suporte a dois tipos de inicialização:EC2 e Fargate.

Com o tipo de inicialização do EC2, as instâncias do EC2 são iniciadas para executar contêineres do Docker. O tipo de inicialização Fargate, que foi introduzido recentemente (novembro de 2017), hospeda tarefas que encapsulam contêineres do Docker. As tarefas são disponibilizadas diretamente ao usuário por meio de uma interface de rede elástica (ENI ). As instâncias do EC2 nas quais o Fargate é provisionado não são expostas ao usuário e não podem ser acessadas diretamente.

Neste capítulo, aprenderemos sobre o seguinte:O que é o Amazon Fargate
  • Benefícios dos objetos Fargate Amazon ECS
  • Recursos de computação no Amazon ECS Fargate
  • O que há de novo no modo de tipo de inicialização do Amazon Fargate?

O que é o Amazon Fargate


Amazon Fargate é um novo tipo de inicialização para Amazon ECS e Amazon EKS (Serviço Elastic Kubernetes serviços de orquestração gerenciados por ) para contêineres do Docker na AWS. Com o tipo de inicialização Fargate, a infraestrutura é totalmente provisionada pelo Fargate. É sem servidor e nenhuma instância do EC2 é exposta ao usuário. Os contêineres do Docker são definidos como definições de contêiner em uma definição de tarefa. Um serviço implementa a definição de tarefa para executar uma ou mais tarefas. Cada tarefa está associada a um ENI. Se a atribuição automática do IP público no nível da tarefa estiver habilitada, um IP público no qual um cliente externo pode acessar uma tarefa será atribuído automaticamente a uma tarefa. As tarefas se comunicam entre si por um IP privado.

Benefícios do Fargate


Os benefícios do ECS são os seguintes:
  • Um serviço gerenciado para aplicativos em contêiner que não requer muita entrada do usuário para executar aplicativos Docker
  • Microsserviços que consistem em vários aplicativos executados em contêineres isolados Dimensiona automaticamente as tarefas com base na carga do aplicativo
  • Integra-se com outros serviços da AWS, incluindo IAM, CloudWatch Logs, Elastic Load Balancing, modelos do CloudFormation, EBS Volumes, Lote, ECR e logs do CloudTrail
  • Uma nuvem privada virtual (VPC ) sem recursos compartilhados com outros usuários Oferece suporte para executar um CodePipeline com ECS como plataforma de implantação
  • Suporta a versão mais recente do Docker 17.0

O Fargate oferece os seguintes benefícios adicionais:
  • Com um tipo de inicialização Fargate, um usuário não cria nem gerencia nenhuma instância do EC2, pois nenhuma está exposta no cluster.
  • As tarefas são expostas diretamente ao usuário por meio de uma ENI.
  • A infraestrutura subjacente é provisionada pelo Fargate. As instâncias do EC2 não devem ser gerenciadas com o tipo de inicialização Fargate.
  • O CodePipeline oferece suporte ao Fargate como plataforma de implantação.
  • Microsserviços baseados em definições de contêiner encapsuladas em uma definição de tarefa são explicitamente vinculados e não devem ser vinculados a nenhuma opção adicional, como links.
  • O CloudWatch Logs pode ser configurado automaticamente.

Objetos do Amazon ECS


Os objetos do Amazon ECS com Fargate são os mesmos do tipo de execução do EC2. Um cluster ECS é o encapsulamento mais externo e consiste em um ou mais serviços. Um cluster pode ser distribuído em várias zonas de disponibilidade. Um serviço é uma implementação de uma definição de tarefa e executa uma ou mais tarefas. Uma definição de tarefa pode ter uma ou mais revisões de tarefa. Uma revisão de tarefa é uma definição de tarefa distinta com um conjunto de tarefas e um serviço associado a ela. Uma instância do Fargate está associada a um conjunto de tarefas em um serviço. Uma definição de tarefa consiste em zero ou mais definições de contêiner. Normalmente, uma definição de tarefa seria associada a uma ou mais definições de contêiner e uma definição de tarefa que não consistisse em nenhuma definição de contêiner não executaria nenhum contêiner de tarefa. Um diagrama de objetos ECS é mostrado a seguir:



Uma definição de tarefa é um modelo de aplicativo e descreve um ou mais contêineres. Embora alguns atributos ou configurações sejam configurados no nível da tarefa, a maioria deles é configurada no nível do contêiner. Várias revisões podem ser associadas a uma definição de tarefa.

Um Serviço implementa uma definição de tarefa e define uma contagem desejada para tarefas a serem executadas para uma definição de tarefa. Recursos opcionais, como dimensionamento automático e balanceamento de carga, são configurados no serviço.

Um grupo em um serviço ECS é um agrupamento de um ou mais serviços de contêiner. Um nome de cluster deve ser exclusivo em uma conta. Um cluster chamado default é provisionado por padrão.

Recursos de computação no Amazon ECS Fargate


Tamanho da tarefa consiste em memória de tarefas (GB) e CPU de tarefas (vCPU) . Embora seja opcional no tipo de inicialização do EC2, o tamanho da tarefa é obrigatório com o tipo de inicialização do Fargate. As configurações de memória e CPU no nível do contêiner do Docker podem ser definidas opcionalmente, mas são substituídas pelas configurações de nível de definição de tarefa. Apenas combinações específicas de memória de tarefas e CPU de tarefas são suportadas, e o assistente do ECS indica com uma mensagem o valor suportado (ou intervalo de valores) para um valor selecionado. Como exemplo, o intervalo de CPU válido para 1 GB de memória é de 0,25 vCPU a 0,5 vCPU. O total de recursos (memória ou CPU) configurado no nível do contêiner não deve exceder as configurações de recursos no nível da tarefa. Por exemplo, se uma definição de tarefa consiste em dois contêineres (MySQL e WordPress) com um limite de memória de 128 MB para cada contêiner, a memória do nível de tarefa deve ser de pelo menos 256 MB. Além disso, o total de memória no nível do contêiner não deve exceder 256 MB. Da mesma forma para a CPU. Dois limites de memória podem ser definidos no nível do contêiner:Limite flexível e limite rígido . O limite Soft corresponde à memoryReservation atributo no nível da tarefa e o limite rígido corresponde à memória atributo no nível da tarefa. A soma das reservas de memória do contêiner (limites soft) não deve exceder a memória de tarefas. O limite rígido para cada contêiner não deve exceder a memória configurada no nível da tarefa. Um mínimo de 4 GB deve ser especificado por padrão para um contêiner.

Um exemplo de tamanho de tarefa é mostrado na captura de tela a seguir, na qual a Memória de tarefas (memória atributo) está definido como 0,5 GB (512 GB) e a CPU de tarefas está definido como 0,25 vCPU . No nível do contêiner, conforme configurado nas duas definições de contêiner, a reserva de memória é de 128 MB para cada contêiner, o que torna a reserva de memória total de 256 MB bem dentro dos 512 GB alocado no nível da tarefa. O tamanho da tarefa é alocado para uma tarefa, seja usada ou não. Da mesma forma, o número de Unidades de CPU configurado para cada contêiner é 10 , o que torna o total de 20 unidades de CPU para contêineres dentro das unidades de CPU, 25 são alocados no nível de tarefa. Consulte a captura de tela a seguir:



Configuração e alocação do tamanho da tarefa para contêineres

O que há de novo no modo de tipo de inicialização do Amazon Fargate?


Além e concomitantemente com os benefícios do Fargate discutidos anteriormente, o Fargate oferece suporte aos seguintes novos recursos:
  • Modo de rede, awsvpc , é o único modo suportado
  • Os mapeamentos de porta do host não são válidos com o modo de rede do tipo de inicialização Fargate (awsvpc ), e as portas do host nas quais um aplicativo é exposto são as mesmas que as portas do contêiner
  • ecsTaskExecutionRole é adicionado ao tipo de inicialização Fargate para permitir extrair imagens do Docker e enviar logs para o CloudWatch Logs
  • Somente os awslogs configuração de log e awslogs log são compatíveis com o CloudWatch Logs
  • O posicionamento de tarefas não é compatível, pois nenhuma instância do ECS é provisionada para definir restrições de posicionamento para
  • Apenas imagens do Docker no Docker Hub e no Amazon ECR são compatíveis. Contêineres privilegiados do Windows não são compatíveis com o tipo de inicialização do Fargate Os dispositivos host não podem ser expostos a um contêiner
  • O anfitrião e sourcePath parâmetros para volumes não são compatíveis com o tipo de inicialização Fargate

Resumo


Neste capítulo introdutório, discutimos os benefícios de usar o tipo de inicialização Fargate, como os recursos de computação são distribuídos e configurados com o tipo de inicialização Fargate, como os objetos ECS com Fargate são os mesmos do tipo de inicialização EC2 e os novos recursos em Fargate. No próximo capítulo, discutiremos a rede usada com o Fargate.
O material anterior é um trecho do Guia de início rápido do Amazon Fargate , de Deepak Vohra, publicado pela Pact Publishing.

Este artigo foi uma contribuição. ©Developer.com. Todos os direitos reservados