Wie behebe ich Skalierungsprobleme mit meinem Amazon ECS-Kapazitätsanbieter?

Lesedauer: 6 Minute
0

Ich habe einen Kapazitätsanbieter für meinen Amazon Elastic Container Service (Amazon ECS)-Cluster eingerichtet. Der Kapazitätsanbieter skaliert jedoch nicht so, wie er sollte.

Kurzbeschreibung

Der Kapazitätsanbieter für Ihren Amazon ECS-Cluster skaliert aus einem oder mehreren der folgenden Gründe nicht automatisch auf oder ab:

  • Der Amazon ECS-Service ist nicht mit dem Kapazitätsanbieter verknüpft.
  • Die Skalierungsrichtlinien, die sich auf den Kapazitätsanbieter beziehen, sind nicht an die Auto Scaling-Gruppe angehängt.
  • Der Zielkapazitätsprozentsatz ist im Kapazitätsanbieter nicht richtig konfiguriert.
  • Sie verwenden die verwaltete Skalierung für den Kapazitätsanbieter, und der Auto-Scaling-Gruppe sind benutzerdefinierte Skalierungsrichtlinien zugeordnet.
  • Die Auto-Scaling-Gruppe hat die Container-Instance gestartet, sie kann dem Cluster jedoch nicht beitreten.
  • Die Container-Instances sind vor einer Skalierung geschützt.
  • Der Kapazitätsanbieter steckt im ausgefallenen Zustand fest.
  • Die Auto-Scaling-Gruppe steckt in einer Schleife aus Auf- und Abskalierung fest.

Lösung

**Anmerkung:**Wenn bei der Ausführung von AWS Command Line Interface (AWS CLI)-Befehlen Fehler auftreten, finden Sie weitere Informationen unter Troubleshoot AWS CLI errors. Stellen Sie außerdem sicher, dass Sie die neueste Version von AWS CLI verwenden.

Führen Sie die folgenden Aufgaben aus, um die Kapazitätsanbieter zu skalieren.

Der Amazon ECS-Service ist nicht mit dem Kapazitätsanbieter verknüpft

Um zu überprüfen, ob der Amazon ECS-Service mit dem Kapazitätsanbieter verknüpft ist, führen Sie den Befehl describe-services aus:

aws ecs describe-services --cluster example-cluster --services example-service --region example-region --query services[].capacityProviderStrategy

Wenn der Amazon ECS-Service mit dem Kapazitätsanbieter verknüpft ist, ähnelt die Ausgabe dem folgenden Beispiel:

[
  [
    {
      "capacityProvider": "example-capacity-provider",
      "weight": 1,
      "base": 1
    }
  ]
]

Stellen Sie sicher, dass das Feld capacityProviderStrategy in der Ausgabe nicht Null ist. Um die Konfiguration des Service einzusehen, überprüfen Sie die AWS CloudTrail-Ereignisse für CreateService -und UpdateService-API-Aufrufe.

Um dieses Problem zu beheben, führen Sie den Befehl update-service aus, um den Amazon ECS-Service zu aktualisieren. Sie können auch die Amazon ECS-Konsole verwenden, um den Service zu aktualisieren.

Die Skalierungsrichtlinien, die sich auf den Kapazitätsanbieter beziehen, sind nicht an die Auto-Scaling-Gruppe angehängt

Wenn Sie einen Kapazitätsanbieter erstellen und ihn einer Auto-Scaling-Gruppe zuordnen, erstellt die Auto-Scaling-Gruppe eine Skalierungsrichtlinie. Diese Skalierungsrichtlinie verwendet die Zielverfolgung, um die Kapazität so zu ändern, dass sie Clusterlasten aufnehmen kann.

Um dieses Problem zu beheben, überprüfen Sie die CloudTrail-Ereignisse für die APIs UpdateAutoScalingGroup, CreateCapacityProvider und UpdateCapacityProvider.

Um zu überprüfen, ob die Auto-Scaling-Gruppe als Cluster-Anhang erstellt wurde, führen Sie den Befehl describe-cluster aus:

aws ecs describe-clusters --clusters example-cluster --include ATTACHMENTS --region example-region --query clusters[].attachments[]

Die Ausgabe des Befehls ähnelt dem folgenden Beispiel:

[
  {
    "id": "100a23456-5f0b-4abc-b998-d6789d111a",
    "type": "as_policy",
    "status": "CREATED",
    "details": [
      {
        "name": "capacityProviderName",
        "value": "example-capacityProvider"
      },
      {
        "name": "scalingPlanName",
        "value": "ECSManagedAutoScalingPlan-bb60c8fa-3ed7-4808-b39c-abcdef2345"
      }
    ]
  }
]

Wenn Sie eine verwaltete Skalierungsrichtlinie verwenden, führen Sie die folgenden Schritte aus, um zu überprüfen, ob die Richtlinie an die Auto-Scaling-Gruppe angehängt ist:

  1. Öffnen Sie die Amazon-ECS-Konsole.
  2. Öffnen Sie den Cluster aus, den Sie prüfen möchten.
  3. Wählen Sie die Registerkarte Infrastruktur.
  4. Wählen Sie auf der Registerkarte Kapazitätsanbieter die Auto-Scaling-Gruppe für den Kapazitätsanbieter aus, den Sie überprüfen möchten. Die Seite Auto-Scaling-Gruppen in der Amazon EC2-Konsole wird angezeigt.
  5. Wählen Sie die Registerkarte Automatische Skalierung aus.
  6. Stellen Sie für die Auto-Scaling-Gruppe sicher, dass die Skalierungsrichtlinie die Metrik CapacityProviderReservation verwendet.

Der Zielkapazitätsprozentsatz ist im Kapazitätsanbieter nicht richtig konfiguriert

Die CloudWatch-Metrik verwendet dieselben Zielkapazitätswerte wie die von Amazon ECS verwaltete Skalierungsrichtlinie zur Zielverfolgung. Der Zielkapazitätswert wird für die CloudWatch-Metrik verwendet, die in der von Amazon ECS verwalteten Skalierungsrichtlinie zur Zielverfolgung verwendet wird. Dieser Zielkapazitätswert wird nach bestem Bemühen angepasst. Die zulässigen Werte für diese Metrik sind ganze Zahlen von 1 bis 100. Wenn Sie beispielsweise die Zielkapazität auf 100 % festlegen, werden alle Instances genutzt. Alle Instances, auf denen keine Aufgaben ausgeführt werden, werden skaliert. Um Reservekapazität einzurichten, legen Sie die Zielkapazität je nach Ihren Anforderungen auf einen Wert fest, der unter 100 % liegt.

Informationen zum Aktualisieren des Kapazitätsanbieters mit dem richtigen Zielkapazitätsprozentsatz finden Sie unter Aktualisieren eines Amazon ECS-Kapazitätsanbieters.

Die Auto-Scaling-Gruppe hat die Container-Instance gestartet, sie kann dem Cluster jedoch nicht beitreten

Führen Sie die folgenden Schritte aus:

Die Container-Instances sind vor einer Skalierung geschützt

Bei Kapazitätsanbietern, die einen verwalteten Beendigungsschutz verwenden, verhindert Amazon ECS das Beenden von Amazon EC2-Instances mit Aufgaben während einer Abskalierungsaktion. Weitere Informationen finden Sie unter Steuern der Instances, die Amazon ECS beendet.

Um sicherzustellen, dass die Auto-Scaling-Gruppe alte Instances beenden kann, wenn Sie die gewünschte Kapazität ändern, führen Sie die folgenden Aufgaben aus:

Weitere Informationen finden Sie unter Wie behebe ich den Fehler „Die Einstellung für verwalteten Beendigungsschutz für den Kapazitätsanbieter ist ungültig“ in Amazon ECS?

Der Kapazitätsanbieter steckt im ausgefallenen Zustand fest

Wenn Sie einen Kapazitätsanbieter verwenden, empfiehlt es sich, eine neue Auto-Scaling-Gruppe zu erstellen und eine vorhandene Gruppe nicht wiederzuverwenden. Instances im Status Wird ausgeführt, die der vorhandenen Gruppe zugeordnet und in einem Amazon ECS-Cluster registriert sind, werden möglicherweise nicht korrekt registriert.

Um den Status des Kapazitätsanbieters anzuzeigen, führen Sie den Befehl describe-capacity-providers aus. Überprüfen Sie außerdem die CloudTrail-Ereignisse, und suchen Sie nach Fehlern im Zusammenhang mit der ](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_CreateCapacityProvider.html)CreateCapacityProvider[-API.

Die Auto-Scaling-Gruppe steckt in einer Schleife aus Auf- und Abskalierung fest

Wenn der in der Skalierungsrichtlinie für den Amazon ECS-Service angegebene Metrikwert zu hoch ist, skaliert die Auto-Scaling-Gruppe Instances auf und startet sie. Wenn der Metrikwert jedoch nach dem plötzlichen Anstieg sinkt, versucht die Auto-Scaling-Gruppe, die Instances zu skalieren. Wenn der Metrikwert innerhalb kurzer Zeit mehrmals schwankt, bleibt die Auto-Scaling-Gruppe in einer Skalierungsschleife stecken. Um dieses Problem zu vermeiden, definieren Sie den Schwellenwert der Metrik in der Skalierungsrichtlinie entsprechend Ihrem Workload.

Ähnliche Informationen

Eingehende Analyse der automatischen Skalierung von Amazon ECS-Clustern

Wie behebe ich den Fehler DELETE_FAILED, wenn ich den Kapazitätsanbieter in Amazon ECS lösche?

Amazon ECS-Cluster für den Fargate-Starttyp

Amazon ECS-Kapazitätsanbieter für den EC2-Starttyp

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Monaten