Docker-Volumes - Amazon Elastic Container Service

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Docker-Volumes

Docker-Volumes sind eine Funktion der Docker-Container-Laufzeitumgebung, mit der Container Daten beibehalten können, indem sie ein Verzeichnis aus dem Dateisystem des Hosts mounten. Docker-Volume-Treiber (auch als Plug-Ins bezeichnet) werden zur Integration von Container-Volumes in externe Speichersysteme wie Amazon EBS verwendet. Docker-Volumes werden nur unterstützt, wenn Amazon ECS-Aufgaben auf Amazon EC2 Instances gehostet werden.

Amazon ECS-Aufgaben können Docker-Volumes verwenden, um Daten mit Amazon EBS-Volumes zu speichern. Dies geschieht, indem Sie ein Amazon EBS-Volume an eine Amazon EC2 Instance anhängen und das Volume anschließend mithilfe von Docker-Volumes in eine Aufgabe einbinden. Ein Docker-Volume kann für mehrere Amazon ECS-Aufgaben auf dem Host freigegeben werden.

Die Einschränkung von Docker-Volumes besteht darin, dass das Dateisystem, das die Aufgabe verwendet, an die spezifische Amazon EC2 Instance gebunden ist. Wenn die Instanz aus irgendeinem Grund beendet wird und die Aufgabe auf eine andere Instanz übertragen wird, gehen die Daten verloren. Sie können Instanzen Aufgaben zuweisen, um sicherzustellen, dass die zugeordneten EBS-Volumes immer für Aufgaben verfügbar sind.

Weitere Informationen finden Sie unterDocker-VolumesimAmazon Elastic Container Service-Entwicklerhandbuch.

Amazon EBS-Volumes

Es gibt zwei wichtige Nutzungsmuster für Containerspeicher und Amazon EBS. Die erste ist, wenn eine Anwendung Daten beibehalten und Datenverlust verhindern muss, wenn ihr Container beendet wird. Ein Beispiel für diese Art von Anwendung wäre eine Transaktionsdatenbank wie MySQL. Wenn eine MySQL Aufgabe beendet wird, wird erwartet, dass sie von einer anderen Aufgabe ersetzt wird. In diesem Szenario ist der Lebenszyklus des Volumes vom Lebenszyklus der Aufgabe getrennt. Wenn Sie EBS verwenden, um Containerdaten beizubehalten, empfiehlt es sich, Einschränkungen für die Platzierung von Aufgaben zu verwenden, um die Platzierung der Aufgabe auf einen einzelnen Host mit dem EBS-Volume zu beschränken.

Die zweite ist, wenn der Lebenszyklus des Volumes unabhängig vom Aufgabenlebenszyklus ist. Dies ist besonders nützlich für Anwendungen, die Speicher mit hoher Leistung und niedriger Latenz benötigen, aber nach Beendigung der Aufgabe keine Daten beibehalten müssen. Beispielsweise kann eine ETL-Arbeitslast, die große Datenmengen verarbeiten, einen Speicher mit hohem Durchsatz erfordern. Amazon EBS eignet sich für diese Art von Arbeitslast, da es leistungsstarke Volumes bereitstellt, die bis zu 256.000 IOPS bereitstellen. Wenn die Aufgabe beendet wird, kann das Ersatzreplikat sicher auf allen Amazon EC2 Hosts im Cluster platziert werden. Solange die Aufgabe Zugriff auf ein Speicher-Backend hat, das ihre Leistungsanforderungen erfüllen kann, kann die Aufgabe ihre Funktion ausführen. Daher sind in diesem Fall keine Einschränkungen für die Platzierung von Vorgängen erforderlich.

Wenn die Amazon EC2 Instances in Ihrem Cluster mehrere Typen von Amazon EBS-Volumes zugeordnet sind, können Sie Beschränkungen für die Aufgabenplatzierung verwenden, um sicherzustellen, dass Aufgaben auf Instances mit einem entsprechenden Amazon EBS-Volume platziert werden. Angenommen, ein Cluster verfügt über einige Instanzen mit einergp2-Volume, während andereio1-Volumes. Sie können benutzerdefinierte Attribute Instanzen mitio1-Volumes und verwenden Sie dann Aufgaben-Platzierungseinschränkungen, um sicherzustellen, dass Ihre E/A-intensiven Aufgaben immer auf Container-Instanzen mitio1-Volumes.

FolgendesAWS CLIwird verwendet, um Attribute in einer Amazon ECS-Container-Instance zu platzieren.

aws ecs put-attributes \ --attributes name=EBS,value=io1,targetId=<your-container-instance-arn>

Verfügbarkeit von Amazon EBS-Datenverfügbarkeit

Container sind in der Regel kurzlebig, häufig erstellt und beendet, wenn Anwendungen horizontal skaliert werden. Als bewährte Methode können Sie Arbeitslasten in mehreren Availability Zones ausführen, um die Verfügbarkeit Ihrer Anwendungen zu verbessern. Amazon ECS bietet Ihnen eine Möglichkeit, die Platzierung von Aufgaben mithilfe von Strategien zur Aufgabenplatzierung und Einschränkungen für die Platzierung von Aufgaben zu steuern. Wenn eine Arbeitslast ihre Daten unter Verwendung von Amazon EBS-Volumes beibehalten, müssen ihre Aufgaben in derselben Availability Zone wie das Amazon EBS-Volume platziert werden. Es wird auch empfohlen, eine Platzierungseinschränkung festzulegen, die die Availability Zone einschränkt, in der ein Vorgang platziert werden kann. Dadurch wird sichergestellt, dass sich Ihre Aufgaben und ihre entsprechenden Volumes immer in derselben Availability Zone befinden.

Wenn Sie eigenständige Aufgaben ausführen, können Sie steuern, welche Availability Zone die Aufgabe platziert wird, indem Sie Platzierungseinschränkungen mit dem Attribut Availability Zone festlegen.

attribute:ecs.availability-zone == us-east-1a

Wenn Sie Anwendungen ausführen, die von der Ausführung in mehreren Availability Zones profitieren würden, sollten Sie für jede Availability Zone einen anderen Amazon ECS-Dienst erstellen. Dadurch wird sichergestellt, dass Tasks, die ein Amazon EBS-Volume benötigen, immer in derselben Availability Zone wie das zugehörige Volume platziert werden.

Wir empfehlen, Container-Instances in jeder Availability Zone zu erstellen und Amazon EBS-Volumes mitStartvorlagenund das Hinzufügen vonBenutzerdefinierte Attributeauf die Instances, um sie von anderen Container-Instances im Amazon ECS-Cluster zu unterscheiden. Konfigurieren Sie beim Erstellen von Services Einschränkungen für die Platzierung von Aufgaben, um sicherzustellen, dass Amazon ECS Aufgaben in der richtigen Availability Zone und Instanz platziert. Weitere Informationen finden Sie unterBeispiele für PlatzierungbedingungenimAmazon Elastic Container Service-Entwicklerhandbuch.

Docker-Volumes

Docker-Plugins wie Portworx bieten eine Abstraktion zwischen dem Docker-Volume und dem Amazon EBS-Volume. Diese Plugins können dynamisch ein Amazon EBS-Volume erstellen, wenn Ihre Aufgabe, die ein Volume benötigt, gestartet wird. Portworx kann auch ein Volume an einen neuen Host anhängen, wenn ein Container beendet wird, und das nachfolgende Replikat wird auf einer anderen Containerinstanz platziert. Außerdem werden Volume-Daten jedes Containers zwischen Amazon ECS-Knoten und über Availability Zones hinweg repliziert. Weitere Informationen finden Sie unterPortworx.