Bonnes pratiques - Stockage permanent - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Bonnes pratiques - Stockage permanent

Vous pouvez utiliser Amazon ECS pour exécuter des applications conteneurisées dynamiques à grande échelle en utilisant des services de AWS stockage, tels qu'Amazon EFS, Amazon EBS ou FSx for Windows File Server, qui assurent la persistance des données aux conteneurs intrinsèquement éphémères. Le terme persistance des données signifie que les données elles-mêmes durent plus longtemps que le processus qui les a créées. La persistance des données AWS est obtenue en découplant les services de calcul et de stockage. Comme Amazon EC2, vous pouvez également utiliser Amazon ECS pour dissocier le cycle de vie de vos applications conteneurisées des données qu'elles consomment et produisent. Grâce aux services AWS de stockage, les tâches Amazon ECS peuvent conserver les données même après leur fin.

Par défaut, les conteneurs ne conservent pas les données qu'ils produisent. Lorsqu'un conteneur est fermé, les données qu'il a écrites sur sa couche inscriptible sont détruites avec le conteneur. Cela rend les conteneurs adaptés aux applications apatrides qui n'ont pas besoin de stocker des données localement. Les applications conteneurisées qui nécessitent la persistance des données ont besoin d'un backend de stockage qui n'est pas détruit lorsque le conteneur de l'application se termine.

Schéma illustrant les couches de stockage d'un conteneur.

Une image de conteneur est construite à partir d'une série de couches. Chaque couche représente une instruction du Dockerfile à partir duquel l'image a été créée. Chaque couche est en lecture seule, à l'exception du conteneur. En d'autres termes, lorsque vous créez un conteneur, une couche inscriptible est ajoutée par-dessus les couches sous-jacentes. Tous les fichiers créés, supprimés ou modifiés par le conteneur sont écrits sur la couche inscriptible. Lorsque le conteneur se termine, la couche inscriptible est également supprimée simultanément. Un nouveau conteneur qui utilise la même image possède sa propre couche inscriptible. Cette couche n'inclut aucune modification. Par conséquent, les données d'un conteneur doivent toujours être stockées en dehors de la couche inscriptible du conteneur.

Avec Amazon ECS, vous pouvez exécuter des conteneurs dynamiques à l'aide de volumes de quatre manières différentes. Les conteneurs Amazon ECS pour Linux sont intégrés nativement à Amazon EFS. Les tâches Amazon ECS pour Windows et Linux hébergées sur des instances de conteneur ou sur Fargate sont intégrées nativement à Amazon EBS. Les volumes Amazon EBS attachés à des tâches autonomes peuvent être conservés en réglant le paramètre sur. deleteOnTermination false Les instances de conteneur Amazon EC2 Windows et Linux peuvent également utiliser des volumes Docker intégrés à Amazon EBS. Pour les conteneurs Windows, Amazon ECS s'intègre à FSx for Windows File Server afin de fournir un stockage persistant.

Choisir le type de stockage adapté à vos conteneurs

Les applications qui s'exécutent dans un cluster Amazon ECS peuvent utiliser une variété de services de AWS stockage et de produits tiers pour fournir un stockage permanent pour les charges de travail dynamiques. Vous devez choisir le backend de stockage pour votre application conteneurisée en fonction de l'architecture et des exigences de stockage de votre application. Pour plus d'informations sur les services AWS de stockage, consultez Cloud Storage on AWS.

Pour les clusters Amazon ECS contenant des instances Linux ou des conteneurs Linux utilisés avec Fargate, Amazon ECS s'intègre à Amazon EFS pour fournir un stockage de conteneurs. La principale différence entre Amazon EFS et Amazon EBS est que vous pouvez monter simultanément un système de fichiers Amazon EFS sur des milliers de tâches Amazon ECS. En revanche, les volumes Amazon EBS ne prennent pas en charge l'accès simultané. Dans ces conditions, Amazon EFS est l'option de stockage recommandée pour les applications conteneurisées qui évoluent horizontalement. C'est parce qu'il prend en charge la simultanéité. Amazon EFS stocke vos données de manière redondante dans plusieurs zones de disponibilité et offre un accès à faible latence à partir des tâches Amazon ECS, quelle que soit la zone de disponibilité.

Supposons que vous disposiez d'une application telle qu'une base de données transactionnelle qui nécessite une latence inférieure à la milliseconde et qui n'a pas besoin d'un système de fichiers partagé lorsqu'elle est redimensionnée horizontalement. Pour une telle application, nous recommandons d'utiliser les volumes Amazon EBS pour le stockage permanent. Amazon ECS prend en charge les volumes Amazon EBS pour les tâches hébergées sur Amazon EC2 et Fargate. Avant d'utiliser des volumes Amazon EBS avec des tâches Amazon ECS, vous pouvez soit associer des volumes Amazon EBS à des instances de conteneur et gérer les volumes séparément du cycle de vie de la tâche, soit configurer un volume Amazon EBS à associer à une tâche Amazon ECS lors du déploiement d'un service ou d'une tâche autonome.

Pour les clusters contenant des instances Windows, FSx for Windows File Server fournit un stockage persistant pour les conteneurs. Les systèmes de fichiers FSx for Windows File Server prennent en charge les déploiements multi-AZ. Grâce à ces déploiements, vous pouvez partager un système de fichiers avec des tâches Amazon ECS exécutées dans plusieurs zones de disponibilité.

Vous pouvez également utiliser le stockage d'instance Amazon EC2 pour la persistance des données pour les tâches Amazon ECS hébergées sur Amazon EC2 à l'aide de montages de liaison ou de volumes Docker. Lorsque vous utilisez des montages par liaison ou des volumes Docker, les conteneurs stockent les données dans le système de fichiers de l'instance de conteneur. L'une des limites de l'utilisation d'un système de fichiers hôte pour le stockage de conteneurs est que les données ne sont disponibles que sur une seule instance de conteneur à la fois. Cela signifie que les conteneurs ne peuvent s'exécuter que sur l'hôte où résident les données. Par conséquent, l'utilisation du stockage hôte n'est recommandée que dans les scénarios où la réplication des données est gérée au niveau de l'application.