View a markdown version of this page

Schnellere auto Skalierung mit hochauflösenden Metriken - 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.

Schnellere auto Skalierung mit hochauflösenden Metriken

Standardmäßig veröffentlicht CPUUtilization Amazon ECS MemoryUtilization Messwerte mit einer Auflösung von 60 Sekunden. Sie können eine Auflösung von 20 Sekunden konfigurieren, um die auto Skalierung von Diensten zu beschleunigen.

Die folgenden hochauflösenden vordefinierten Metriken sind für Skalierungsrichtlinien zur Zielverfolgung verfügbar:

PredefinedMetricType Description
ECSServiceAverageCPUUtilizationHighResolution Durchschnittliche CPU-Auslastung bei einer Auflösung von 20 Sekunden
ECSServiceAverageMemoryUtilizationHighResolution Durchschnittliche Speicherauslastung bei einer Auflösung von 20 Sekunden

Erstellen Sie einen neuen Service mit hochauflösenden Metriken für eine schnellere auto Skalierung

  1. Wählen Sie auf der Seite Cluster den Cluster aus, in dem Sie den Service erstellen möchten.

  2. Wählen Sie im Abschnitt Dienste die Option Create aus.

  3. Wählen Sie im Formular Dienst erstellen im Abschnitt Monitoring-Konfiguration die Option Metrikkonfiguration hinzufügen aus.

  4. Wählen Sie unter Metrikname die Metrik aus, die Sie mit hoher Auflösung erfassen möchten. Wählen Sie CPUUtilization oder MemoryUtilization.

  5. Wählen Sie für Auflösung (Sekunden) die Option 20 aus.

  6. (Optional) Um beide Metriken mit hoher Auflösung hinzuzufügen, wählen Sie erneut Metrikkonfiguration hinzufügen aus und wiederholen Sie die vorherigen beiden Schritte für die andere Metrik.

  7. Wählen Sie im Abschnitt Service Auto Scaling die Option Service Auto Scaling verwenden aus.

  8. Geben Sie unter Mindestanzahl an Aufgaben, die Untergrenze der Anzahl der Aufgaben an, die das Service-Auto-Scaling verwenden kann. Die gewünschte Anzahl wird diese Anzahl nicht unterschreiten.

  9. Geben Sie unter Höchstanzahl an Aufgaben die Obergrenze der Anzahl der Aufgaben an, die das Service-Auto-Scaling verwenden kann. Die gewünschte Anzahl wird diese Anzahl nicht überschreiten.

  10. Wählen Sie für Scaling policy type (Typ der Skalierungsrichtlinie) Target tracking (Ziel-Nachverfolgung) aus.

  11. Wählen Sie als Metriktyp die entsprechende Metrik mit hoher Auflösung aus. Wählen Sie beispielsweise aus, ECSServiceAverageCPUUtilizationHighResolution ob Sie eine Auflösung von 20 Sekunden oder ECSServiceAverageMemoryUtilizationHighResolution eine Auflösung von 20 Sekunden konfiguriert MemoryUtilization haben. CPUUtilization

  12. Geben Sie als Zielwert den Prozentsatz der Zielauslastung ein. Service Auto Scaling skaliert Ihre Kapazität, bis die durchschnittliche Auslastung den Zielwert erreicht oder bis die von Ihnen angegebene maximale Anzahl von Aufgaben erreicht ist.

  13. Konfigurieren Sie unter Zusätzliche Einstellungen Folgendes:

    1. Geben Sie für die Scale-out Abklingzeit die Zeit in Sekunden ein, nach der gewartet werden soll, bis eine vorherige Scale-Out-Aktivität wirksam wird.

    2. Geben Sie für die Scale-in Abklingzeit die Zeit in Sekunden nach Abschluss einer Scale-In-Aktivität ein, bevor eine weitere Scale-In-Aktivität beginnen kann.

  14. Wählen Sie Create, um den Service zu erstellen.

  1. Erstellen Sie den Dienst mit der Überwachungskonfiguration mithilfe des Befehls create-service.

    aws ecs create-service --region us-east-1 \ --cluster my-cluster \ --service-name my-service \ --task-definition my-app:1 \ --desired-count 2 \ --monitoring "metricConfigurations=[{metricNames=[CPUUtilization,MemoryUtilization],resolutionSeconds=20}]"
  2. Registrieren Sie den Dienst mithilfe des Befehls register-scalable-target als skalierbares Ziel.

    aws application-autoscaling register-scalable-target \ --service-namespace ecs \ --resource-id service/my-cluster/my-service \ --scalable-dimension ecs:service:DesiredCount \ --min-capacity 1 \ --max-capacity 10 \ --region us-east-1
  3. Erstellen Sie mithilfe des Befehls put-scaling-policy eine Skalierungsrichtlinie für die Zielverfolgung mit einer vordefinierten Metrik mit hoher Auflösung.

    aws application-autoscaling put-scaling-policy \ --service-namespace ecs \ --resource-id service/my-cluster/my-service \ --scalable-dimension ecs:service:DesiredCount \ --policy-name my-highres-cpu-policy \ --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration '{ "TargetValue": 50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution" } }' \ --region us-east-1
  4. Stellen Sie sicher, dass die Richtlinie mithilfe des Befehls describe-scaling-policies erstellt wurde.

    aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-service \ --scalable-dimension ecs:service:DesiredCount \ --region us-east-1

Aktualisieren Sie einen vorhandenen Service, um hochauflösende Metriken für eine schnellere auto Skalierung zu verwenden

Die Aktualisierung eines vorhandenen Dienstes zur Verwendung hochauflösender Metriken für eine schnellere auto Service-Skalierung erfolgt in zwei Schritten. Sie müssen zuerst die Überwachungsauflösung aktualisieren, wodurch eine Servicebereitstellung ausgelöst wird. Nachdem die Bereitstellung erfolgreich abgeschlossen wurde und alle Aufgaben Metriken mit einer Auflösung von 20 Sekunden ausgeben, können Sie dann eine Skalierungsrichtlinie mit hoher Auflösung konfigurieren.

Wichtig

Wenn Ihr Service zuvor eine metrische Auflösung von 60 Sekunden verwendet hat, sind hochauflösende Metriken für die Skalierungsrichtlinie erst in der Amazon ECS-Konsole verfügbar, nachdem Sie Ihren Service auf die metrische Auflösung von 20 Sekunden aktualisiert haben und die Servicebereitstellung abgeschlossen ist.

Schritt 1: Monitoring-Auflösung aktualisieren

  1. Wählen Sie auf der Seite Cluster den Cluster aus, der den Service enthält, den Sie aktualisieren möchten.

  2. Wählen Sie im Abschnitt Dienste den Service aus und klicken Sie auf Aktualisieren.

  3. Wählen Sie im Formular Service aktualisieren im Abschnitt Monitoring-Konfiguration die Option Metrikkonfiguration hinzufügen aus.

  4. Wählen Sie unter Metrikname die Metrik aus, die Sie mit hoher Auflösung erfassen möchten. Wählen Sie CPUUtilization oder MemoryUtilization.

  5. Wählen Sie für Auflösung (Sekunden) die Option 20 aus.

  6. (Optional) Um beide Metriken mit hoher Auflösung hinzuzufügen, wählen Sie erneut Metrikkonfiguration hinzufügen aus und wiederholen Sie die vorherigen beiden Schritte für die andere Metrik.

  7. Wählen Sie „Aktualisieren“, um die Änderung zu übermitteln. Dies löst eine Servicebereitstellung aus.

  8. Warten Sie, bis die Bereitstellung abgeschlossen ist. Sie können den Fortschritt auf der Seite mit den Servicedetails auf der Registerkarte Bereitstellungen überwachen.

    Anmerkung

    Die metrischen Optionen für hochauflösende Skalierung sind im Bereich Service Auto Scaling ausgegraut, bis die Bereitstellung erfolgreich ist und alle Aufgaben mit einer Auflösung von 20 Sekunden ausgegeben werden.

Schritt 2: Konfigurieren Sie die Richtlinie für die Skalierung mit hoher Auflösung

Nachdem die Bereitstellung abgeschlossen ist, konfigurieren Sie die Skalierungsrichtlinie mit einer der folgenden Methoden:

Option A: Seite mit den Servicedetails
  1. Wählen Sie auf der Seite mit den Servicedetails die Registerkarte Service Auto Scaling aus.

  2. Wählen Sie Skalierungsrichtlinie erstellen (oder eine bestehende Richtlinie bearbeiten).

  3. Wählen Sie für Scaling policy type (Typ der Skalierungsrichtlinie) Target tracking (Ziel-Nachverfolgung) aus.

  4. Wählen Sie als Metriktyp die Metrik mit hoher Auflösung aus. Zum Beispiel ECSServiceAverageCPUUtilizationHighResolution oder ECSServiceAverageMemoryUtilizationHighResolution.

  5. Geben Sie unter Zielwert den Prozentsatz der Zielauslastung ein.

  6. Konfigurieren Sie unter Zusätzliche Einstellungen Folgendes:

    1. Geben Sie für die Scale-out Abklingzeit die Zeit in Sekunden ein, nach der gewartet werden soll, bis eine vorherige Scale-Out-Aktivität wirksam wird.

    2. Geben Sie für die Scale-in Abklingzeit die Zeit in Sekunden nach Abschluss einer Scale-In-Aktivität ein, bevor eine weitere Scale-In-Aktivität beginnen kann.

  7. Wählen Sie Skalierungsrichtlinie erstellen aus.

Option B: Serviceformular aktualisieren
  1. Wählen Sie auf der Seite mit den Servicedetails die Option Aktualisieren aus.

  2. Wählen Sie im Abschnitt Service Auto Scaling die Option Service Auto Scaling verwenden aus (falls nicht bereits aktiviert).

  3. Geben Sie für Mindestanzahl an Aufgaben die Untergrenze ein.

  4. Geben Sie für Maximale Anzahl von Aufgaben die Obergrenze ein.

  5. Wählen Sie für Scaling policy type (Typ der Skalierungsrichtlinie) Target tracking (Ziel-Nachverfolgung) aus.

  6. Wählen Sie als Metriktyp die Metrik mit hoher Auflösung aus (die jetzt nach Abschluss der Bereitstellung aktiviert ist).

  7. Geben Sie als Zielwert den Prozentsatz der Zielauslastung ein.

  8. Stellen Sie unter Zusätzliche Einstellungen die Scale-out Abklingzeit und die Scale-in Abklingzeit ein.

  9. Wählen Sie „Aktualisieren“, um die Änderung zu übermitteln.

Schritt 1: Monitoring-Auflösung aktualisieren

  1. Aktualisieren Sie den Dienst mit der Überwachungskonfiguration mithilfe des Befehls update-service.

    aws ecs update-service --region us-east-1 \ --cluster my-cluster \ --service my-service \ --monitoring "metricConfigurations=[{metricNames=[CPUUtilization,MemoryUtilization],resolutionSeconds=20}]"
  2. Warten Sie, bis die Bereitstellung abgeschlossen ist. Sie können den Fortschritt mit dem Befehl describe-services überwachen und den Bereitstellungsstatus überprüfen.

    aws ecs describe-services --region us-east-1 \ --cluster my-cluster \ --services my-service
  3. Stellen Sie nach Abschluss der Bereitstellung sicher, dass die Überwachungskonfiguration aktiv ist, indem Sie die Service-Revision beschreiben. Rufen Sie den ARN der aktiven Dienstrevision aus der describe-services Ausgabe ab und führen Sie dann Folgendes aus:

    aws ecs describe-service-revisions --region us-east-1 \ --service-revision-arns arn:aws:ecs:us-east-1:012345678910:service-revision/my-cluster/my-service/1234567890123456789

    Vergewissern Sie sich, dass die Überwachungskonfiguration in der Antwort erscheint:

    { "serviceRevisions": [ { ... "monitoring": { "metricConfigurations": [ { "metricNames": ["CPUUtilization", "MemoryUtilization"], "resolutionSeconds": 20 } ] } } ] }
Schritt 2: Konfigurieren Sie die Skalierungsrichtlinie für hohe Auflösung

  1. Registrieren Sie den Dienst mit dem Befehl register-scalable-target als skalierbares Ziel, falls er noch nicht registriert ist.

    aws application-autoscaling register-scalable-target \ --service-namespace ecs \ --resource-id service/my-cluster/my-service \ --scalable-dimension ecs:service:DesiredCount \ --min-capacity 1 \ --max-capacity 10 \ --region us-east-1
  2. Erstellen Sie mithilfe des Befehls put-scaling-policy eine Skalierungsrichtlinie für die Zielverfolgung mit einer hochauflösenden vordefinierten Metrik. Das folgende Beispiel zielt auf eine CPU-Auslastung von 50% ab:

    aws application-autoscaling put-scaling-policy \ --service-namespace ecs \ --resource-id service/my-cluster/my-service \ --scalable-dimension ecs:service:DesiredCount \ --policy-name my-highres-cpu-policy \ --policy-type TargetTrackingScaling \ --target-tracking-scaling-policy-configuration '{ "TargetValue": 50.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ECSServiceAverageCPUUtilizationHighResolution" } }' \ --region us-east-1
  3. Stellen Sie sicher, dass die Richtlinie erstellt wurde:

    aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-service \ --scalable-dimension ecs:service:DesiredCount \ --region us-east-1

Validieren Sie die schnellere auto Skalierung von Diensten

Teil 1: Stellen Sie sicher, dass hochauflösende Metriken veröffentlicht werden

  1. Navigieren Sie zur CloudWatch Konsole.

  2. Wählen Sie im Navigationsbereich Metriken und dann Alle Metriken aus.

  3. Wählen Sie den Namespace AWS/ECS aus.

  4. Wählen Sie ClusterName, ServiceName.

  5. Suchen Sie die MemoryUtilization Metriken CPUUtilization und Kennzahlen für Ihren Service.

  6. Stellen Sie den Zeitraum auf 20 Sekunden ein. In Intervallen von 20 Sekunden sollten Ihnen Datenpunkte angezeigt werden, die bestätigen, dass hochauflösende Messwerte aktiv sind.

Teil 2: Stellen Sie sicher, dass die Skalierungsrichtlinie die hochauflösende Metrik verwendet

  1. Wählen Sie auf der Seite mit den Servicedetails die Registerkarte Service Auto Scaling aus.

  2. Sehen Sie sich Ihre bestehenden Skalierungsrichtlinien an und vergewissern Sie sich, dass die Metrik auf eine Variante mit hoher Auflösung (ECSServiceAverageCPUUtilizationHighResolutionoderECSServiceAverageMemoryUtilizationHighResolution) eingestellt ist.

  3. Überprüfen Sie alternativ mit der CLI:

    aws application-autoscaling describe-scaling-policies \ --service-namespace ecs \ --resource-id service/my-cluster/my-service \ --scalable-dimension ecs:service:DesiredCount \ --region us-east-1

    Vergewissern Sie sich, dass PredefinedMetricType in der Antwort auf eine Metrik mit hoher Auflösung eingestellt ist.

Überlegungen

  • Die Überwachung von Konfigurationsänderungen führt zu einer neuen Service-Revision und erfordert eine Servicebereitstellung. Die Skalierungsmetrik mit hoher Auflösung ist erst verfügbar, wenn die Bereitstellung abgeschlossen ist und alle Aufgaben mit einer Auflösung von 20 Sekunden ausgegeben werden.

  • High-resolution Metriken werden für Dienste unterstützt, die Application Load Balancers und Network Load Balancers verwenden. Dienste, die Classic Load Balancers ohne Zielgruppen verwenden, werden nicht unterstützt.

  • High-resolution Metriken werden für Dienste, die die Typen CODE_DEPLOY oder EXTERNAL Deployment Controller verwenden, nicht unterstützt.

  • Sie können die Überwachungskonfiguration für Ihren Service mithilfe von anzeigenDescribeServiceRevisions. Die Überwachungskonfiguration wird in CreateService oder in den UpdateService Antworten nicht zurückgegeben.