kalafoto - Fotolia
Automatisches Skalieren von Docker-Containern mit Amazon ECS
Das automatische Skalieren von Containerumgebungen hilft dabei, einen stabilen Betrieb aufrechtzuerhalten. Dieser Artikel stellt die Auto-Scaling-Funktionen von ECS von Amazon vor.
Entwickler haben mehrere Konfigurationsmöglichkeiten, wenn sie Workloads im Amazon Elastic Container Service automatisch skalieren möchten.
Amazon Elastic Container Service (ECS) verwaltet die Bereitstellung und Orchestrierung von Docker-Containern, einschließlich der zugrunde liegenden Recheninfrastruktur. ECS gruppiert Docker-Container anhand ihrer definierten Aufgaben. Sie werden somit als Service gruppiert und in Clustern bereitgestellt. ECS unterstützt zwei Startoptionen für Container-Cluster: EC2-Instanzen und Fargate Serverless Compute.
Mit Fargate müssen Entwickler keine Recheninfrastruktur bereitstellen, das heißt dass AWS die gesamte Skalierung für den Kunden übernimmt. Viele IT-Teams entscheiden sich jedoch für die EC2-Variante, da sie ihnen eine bessere Kontrolle über ihre Umgebung bietet. In diesem Fall müssen sie zusätzliche Schritte unternehmen, um die Elastizität zu erzielen, die erforderlich ist, um auf Schwankungen in der Nachfrage zu reagieren.
Für EC2-basierte Cluster gibt es zwei Arten von AWS-Autoskalierungsstufen:
- Auf Serviceebene, um zu planen wie viele Aufgaben – oder Gruppierungen von laufenden Docker-Containern – im Service starten sollen; und
- Auf Cluster-Ebene, um die Anzahl der im Cluster bereitgestellten EC2-Instanzen zu bestimmen.
Automatische Skalierung auf Serviceebene
Ein ECS-Cluster kann mehrere Services hosten, von denen jeder einen messbaren CPU- und Speicherverbrauch hat. Anwender können die automatische Skalierung des ECS-Service so konfigurieren, dass zusätzliche ECS-Tasks gestartet werden, wenn bestimmte Metriken einen konfigurierbaren Wert überschreiten – zum Beispiel, wenn die Service-CPU mehr als 60 Prozent beträgt.
Dies stellt sicher, dass der Service stabil läuft und eine angemessene Anzahl von Containern bereitgestellt wird. Anwender können Container in einem Anwendungs-Load-Balancer anmelden, der den Datenverkehr an Tasks verteilt und eine reibungslose Benutzererfahrung gewährleistet, wenn Tasks zu einem Service hinzugefügt oder von einem Service entfernt werden.
Automatische Skalierung auf Cluster-Ebene
Bei EC2-basierten Clustern berechnet sich die richtige Zahl an EC2-Instanzen aus generischen Metriken, die auf Clusterebene definiert werden, wie zum Beispiel Prozentsätze für die CPU der Instanz, oder die CPU, die frei bleiben muss. Hierfür erstellen Anwender EC2 Auto Scaling Groups, um EC2-Instanzen anhand der Schwellenwerte für Metriken hinzuzufügen und zu entfernen.
Der allgemeine Charakter der EC2-Autoskalierungsrichtlinien berücksichtigt jedoch nicht alle Szenarien, die mehr Kapazität erfordern könnten. Beispielsweise kann ein Cluster nicht schnell oder effizient mit EC2 Auto Scaling skaliert werden, wenn Anwender mehrere Workloads auf dem Cluster gehostet haben oder wenn ein Workload schnell skaliert werden muss. Für solche Fälle gibt es die ECS-Cluster-Auto-Scaling-Funktion, mit der Administratoren sicherstellen können, dass die erforderliche Anzahl von Instanzen in einer EC2 Auto Scaling Group laufen kann.
Um EC2 Cluster Auto Scaling zu verwenden, müssen Anwender sogenannte Capcity Provider erstellen. Capacity Provider sind den EC2 Auto Scaling Groups zugeordnet und ermöglichen es, das gewünschte Verhalten der Rechenkapazität für ECS-Implementierungen zu einzustellen.
Anwender konfigurieren den gewünschten Prozentsatz der Kapazitätsauslastung in einem Cluster – zum Beispiel nicht mehr als 80 Prozent seiner Kapazität – und ECS passt die Anzahl der Instanzen an, um sicherzustellen, dass die richtige Anzahl im ECS-Cluster bereitgestellt wird. Dadurch ist garantiert, dass Aufgaben bei Bedarf gestartet werden können.