Práticas recomendadas - Armazenamento persistente - Amazon Elastic Container Service

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Práticas recomendadas - Armazenamento persistente

Você pode usar o Amazon ECS para executar aplicativos em contêineres com estado em escala usandoAWSserviços de armazenamento, como Amazon EFS, Amazon EBS ou Amazon FSx for Windows File Server, que fornecem persistência de dados para contêineres inerentemente efêmeros. O termoPersistência de dadossignifica que os dados em si duram mais do que o processo que os criou. Persistência de dados noAWSé alcançado através do acoplamento de serviços de computação e armazenamento. Semelhante ao Amazon EC2, você também pode usar o Amazon ECS para dissociar o ciclo de vida de seus aplicativos em contêineres dos dados que eles consomem e produzem. O uso doAWS, as tarefas do Amazon ECS podem persistir dados mesmo após o término das tarefas.

Por padrão, os contêineres não persistem os dados que produzem. Quando um contêiner é encerrado, os dados que ele gravou em sua camada gravável são destruídos com o contêiner. Isso torna os contêineres adequados para aplicativos sem estado que não precisam armazenar dados localmente. Os aplicativos em contêineres que exigem persistência de dados precisam de um back-end de armazenamento que não seja destruído quando o contêiner do aplicativo é encerrado.


            Diagrama mostrando camadas de armazenamento de um contêiner.

Uma imagem de contêiner é construída a partir de uma série de camadas. Cada camada representa uma instrução no Dockerfile a partir da qual a imagem foi criada. Cada camada é somente leitura, exceto para o contêiner. Ou seja, quando você cria um contêiner, uma camada gravável é adicionada sobre as camadas subjacentes. Todos os arquivos que o contêiner cria, exclui ou modifica são gravados na camada gravável. Quando o contêiner termina, a camada gravável também é excluída simultaneamente. Um novo contêiner que usa a mesma imagem tem sua própria camada gravável. Esta camada não inclui alterações. Portanto, os dados de um contêiner devem sempre ser armazenados fora da camada gravável do contêiner.

Com o Amazon ECS, você pode executar contêineres com estado usando volumes. O Amazon ECS é integrado ao Amazon EFS nativamente e usa volumes integrados ao Amazon EBS. Para contêineres do Windows, o Amazon ECS se integra ao Amazon FSx for Windows File Server para fornecer armazenamento persistente.

Escolher o tipo de armazenamento certo para seus contêineres

Os aplicativos que estão sendo executados em um cluster do Amazon ECS podem usar uma variedade deAWSServiços de armazenamento e produtos de terceiros para fornecer armazenamento persistente para cargas de trabalho com estado. Você deve escolher o back-end de armazenamento para o aplicativo em contêineres com base nos requisitos de arquitetura e armazenamento do aplicativo. Para obter mais informações sobreAWSserviços de armazenamento, consulteArmazenamento na nuvem noAWS.

Para clusters do Amazon ECS que contêm instâncias Linux ou são usados com o Fargate, o Amazon ECS se integra ao Amazon EFS e ao Amazon EBS para fornecer armazenamento de contêiner. A diferença mais distinta entre o Amazon EFS e o Amazon EBS é que você pode montar simultaneamente um sistema de arquivos do Amazon EFS em milhares de tarefas do Amazon ECS. Por outro lado, os volumes do Amazon EBS não suportam acesso simultâneo. Diante disso, o Amazon EFS é a opção de armazenamento recomendada para aplicativos em contêineres que são dimensionados horizontalmente. Isso ocorre porque ele suporta simultaneidade. O Amazon EFS armazena seus dados de forma redundante em várias zonas de disponibilidade e oferece acesso de baixa latência a partir de tarefas do Amazon ECS, independentemente da zona de disponibilidade. O Amazon EFS oferece suporte a tarefas executadas no Amazon EC2 e no Fargate.

Suponha que você tenha um aplicativo como um banco de dados transacional que requer latência abaixo de milissegundos e não precisa de um sistema de arquivos compartilhado quando ele é dimensionado horizontalmente. Para esse aplicativo, recomendamos o uso de volumes do Amazon EBS para armazenamento persistente. Atualmente, o Amazon ECS oferece suporte a volumes do Amazon EBS para tarefas hospedadas somente no Amazon EC2. O Support para volumes do Amazon EBS não está disponível para tarefas no Fargate. Antes de usar volumes do Amazon EBS com tarefas do Amazon ECS, você deve primeiro anexar volumes do Amazon EBS a instâncias de contêiner e gerenciar volumes separadamente do ciclo de vida da tarefa.

Para clusters que contêm instâncias do Windows, o Amazon FSx for Windows File Server fornece armazenamento persistente para contêineres. Os sistemas de arquivos do Amazon FSx for Windows File Server são compatíveis com implantações Multi-AZ. Por meio dessas implantações, você pode compartilhar um sistema de arquivos com tarefas do Amazon ECS executadas em várias zonas de disponibilidade.

Você também pode usar o armazenamento de instâncias do Amazon EC2 para persistência de dados para tarefas do Amazon ECS hospedadas no Amazon EC2 usando montagens de ligação ou volumes do Docker. Ao usar montagens de vinculação ou volumes do Docker, os contêineres armazenam dados no sistema de arquivos de instância de contêiner. Uma limitação do uso de um sistema de arquivos host para armazenamento de contêiner é que os dados só estão disponíveis em uma única instância de contêiner por vez. Isso significa que os contêineres só podem ser executados no host onde os dados residem. Portanto, o uso de armazenamento de host é recomendado somente em cenários em que a replicação de dados é tratada no nível do aplicativo.