Canary-Verkehrsverlagerung nutzen - Amazon SageMaker AI

Canary-Verkehrsverlagerung nutzen

Mit Canary Traffic Shifting können Sie einen Teil Ihres Endpunktverkehrs auf der neuen Flotte testen, während die alte Flotte den Rest des Datenverkehrs abwickelt. Bei diesem Testschritt handelt es sich um eine Sicherheitsleitplanke, mit der die Funktionalität der neuen Flotte überprüft wird, bevor Ihr gesamter Verkehr auf die neue Flotte verlagert wird. Sie haben immer noch die Vorteile einer blauen/grünen Implementierung, und mit der zusätzlichen Canary-Funktion können Sie sicherstellen, dass Ihre neue (grüne) Flotte Rückschlüsse verarbeiten kann, bevor sie den gesamten Verkehr bewältigen kann.

Der Teil Ihrer grünen Flotte, der aktiviert wird, um Traffic zu empfangen, wird als Kanarienvogel bezeichnet, und Sie können die Größe dieses Kanarienvogels wählen. Beachten Sie, dass die Kanariengröße höchstens 50% der Kapazität der neuen Flotte betragen sollte. Sobald die Backphase abgelaufen ist und keine vordefinierten Amazon CloudWatch-Alarme ausgelöst werden, verlagert sich der restliche Verkehr von der alten (blauen) Flotte auf die grüne Flotte. Canary Traffic Shifting bietet Ihnen mehr Sicherheit bei der Bereitstellung, da alle Probleme mit dem aktualisierten Modell nur den Canary betreffen.

Das folgende Diagramm zeigt, wie Canary Traffic Shifting die Verteilung des Verkehrs zwischen den blauen und grünen Flotten regelt.

Eine erfolgreiche zweistufige Verlagerung des kanarischen Datenverkehrs von der alten zu der neuen Flotte.

Sobald SageMaker AI die grüne Flotte bereitgestellt hat, leitet SageMaker AI einen Teil des eingehenden Datenverkehrs (z. B. 25 %) an den Canary weiter. Dann beginnt die Backphase, in der Ihre CloudWatch-Alarme die Leistung der grünen Flotte überwachen. Während dieser Zeit sind sowohl die blaue als auch die grüne Flotte teilweise aktiv und empfangen Verkehr. Wenn einer der Alarme während der Backphase ausgelöst wird, leitet SageMaker AI einen Rollback ein und der gesamte Verkehr kehrt zur blauen Flotte zurück. Wenn keiner der Alarme ausgelöst wird, wird der gesamte Verkehr auf die grüne Flotte verlagert und es gibt eine letzte Backphase. Wenn die letzte Backphase endet, ohne dass ein Alarm ausgelöst wurde, bedient die grüne Flotte den gesamten Verkehr und SageMaker AI beendet die blaue Flotte.

Voraussetzungen

Bevor Sie eine Bereitstellung mit Canary Traffic Shifting einrichten, müssen Sie Amazon CloudWatch-Alarme erstellen, um Metriken von Ihrem Endpunkt aus zu überwachen. Die Alarme sind während der Backphase aktiv, und wenn Alarme ausgelöst werden, wird der gesamte Endpunktverkehr auf die blaue Flotte zurückgesetzt. Informationen zum Einrichten von CloudWatch-Alarmen auf einem Endpunkt finden Sie auf der Seite Konfiguration und Überwachung von Auto-Rollback mit den Voraussetzungen. Um mehr über CloudWatch-Alarme zu erfahren, siehe Verwenden von Amazon CloudWatch-Alarmen im Amazon CloudWatch-Benutzerhandbuch.

Konfigurieren Sie Canary Traffic Shifting

Sobald Sie für Ihre Bereitstellung bereit sind und Amazon CloudWatch-Alarme für Ihren Endpunkt eingerichtet haben, können Sie entweder die Amazon SageMaker AI UpdateEndpoint API oder den Befehl update-endpoint in der AWS CLI verwenden, um die Bereitstellung zu initiieren.

So aktualisieren Sie einen Endpunkt (API)

Das folgende Beispiel der updateEndpoint-API zeigt, wie Sie einen Endpunkt mit Canary Traffic Shifting aktualisieren können.

import boto3 client = boto3.client("sagemaker") response = client.update_endpoint( EndpointName="<your-endpoint-name>", EndpointConfigName="<your-config-name>", DeploymentConfig={ "BlueGreenUpdatePolicy": { "TrafficRoutingConfiguration": { "Type": "CANARY", "CanarySize": { "Type": "CAPACITY_PERCENT", "Value": 30 }, "WaitIntervalInSeconds": 600 }, "TerminationWaitInSeconds": 600, "MaximumExecutionTimeoutInSeconds": 1800 }, "AutoRollbackConfiguration": { "Alarms": [ { "AlarmName": "<your-cw-alarm>" } ] } } )

Um die Optionen Canary Traffic Shifting zu konfigurieren, machen Sie Folgendes:

  • Verwenden Sie für EndpointName den Namen des vorhandenen Endpunkts, den Sie aktualisieren möchten.

  • Verwenden Sie für EndpointConfigName den Namen der Endpunkt-Konfiguration, die Sie verwenden möchten.

  • Stellen Sie unter DeploymentConfig und BlueGreenUpdatePolicy, in TrafficRoutingConfiguration, den Type Parameter auf ein CANARY. Dies gibt an, dass die Bereitstellung Canary Traffic Shifting verwendet.

  • Im Feld CanarySize können Sie die Größe des Canary ändern, indem Sie die Parameter Type und Value ändern. Für Type, verwenden Sie CAPACITY_PERCENT, also den Prozentsatz Ihrer grünen Flotte, den Sie als Canary verwenden möchten, und setzen Sie dann Value auf 30. In diesem Beispiel nutzen Sie 30% der Kapazität der grünen Flotte als Kanarienvogel. Beachten Sie, dass die Größe des Kanarienvogels 50% oder weniger der Kapazität der grünen Flotte entsprechen sollte.

  • Geben Sie als WaitIntervalInSeconds 600ein. Der Parameter weist SageMaker AI an, zwischen jeder Intervallverschiebung die angegebene Zeit (in Sekunden) zu warten. Dieses Intervall entspricht der Dauer der Kanarienbackzeit. Im vorherigen Beispiel wartet SageMaker AI 10 Minuten nach der Canary-Verlagerung und schließt dann die zweite und letzte Verkehrsverlagerung ab.

  • Geben Sie als TerminationWaitInSeconds 600ein. Dieser Parameter weist SageMaker AI an, die angegebene Zeit (in Sekunden) zu warten, nachdem Ihre grüne Flotte voll aktiv ist, bevor die Instances in der blauen Flotte beendet werden. In diesem Beispiel wartet SageMaker AI nach der letzten Backphase 10 Minuten, bevor die blaue Flotte beendet wird.

  • Geben Sie als MaximumExecutionTimeoutInSeconds 1800ein. Dieser Parameter legt die maximale Zeit fest, die die Bereitstellung ausgeführt werden kann, bevor eine Zeitbeschränkung auftritt. Im vorherigen Beispiel gilt für Ihre Bereitstellung ein Limit von 30 Minuten bis zum Abschluss.

  • In AutoRollbackConfiguration können Sie im Feld Alarms Ihre CloudWatch-Alarme nach Namen hinzufügen. Erstellen Sie einen AlarmName: <your-cw-alarm> Eintrag für jeden Alarm, den Sie verwenden möchten.

Wie aktualisiert man einen Endpunkt mit einer vorhandenen blau/grünen Update-Richtlinie (API)

Wenn Sie die CreateEndpoint-API verwenden, um einen Endpunkt zu erstellen, können Sie optional eine Bereitstellungskonfiguration angeben, die für future Endpunkt-Updates wiederverwendet werden soll. Sie können dieselben DeploymentConfig Optionen wie im vorherigen UpdateEndpoint-API-Beispiel verwenden. Das Verhalten der CreateEndpoint-API wurde nicht geändert. Durch die Angabe der Bereitstellungskonfiguration wird nicht automatisch ein blau/grünes Update auf Ihrem Endpunkt durchgeführt.

Die Option, eine vorherige Bereitstellungskonfiguration zu verwenden, ist verfügbar, wenn Sie die UpdateEndpoint-API verwenden, um Ihren Endpunkt zu aktualisieren. Wenn Sie Ihren Endpunkt aktualisieren, können Sie die RetainDeploymentConfig Option verwenden, um die Bereitstellungskonfiguration beizubehalten, die Sie bei der Erstellung des Endpunkts angegeben haben.

Stellen Sie beim Aufrufen der UpdateEndpoint-API RetainDeploymentConfig auf True ein, um die DeploymentConfig Optionen aus Ihrer ursprünglichen Endpunktkonfiguration beizubehalten.

response = client.update_endpoint( EndpointName="<your-endpoint-name>", EndpointConfigName="<your-config-name>", RetainDeploymentConfig=True )

So aktualisieren Sie einen Endpunkt (CLI)

Wenn Sie den AWS CLI verwenden, zeigt das folgende Beispiel, wie Sie mit dem Befehl update-endpoint eine Blue/Green-Canary-Bereitstellung starten.

update-endpoint --endpoint-name <your-endpoint-name> --endpoint-config-name <your-config-name> --deployment-config '"BlueGreenUpdatePolicy": {"TrafficRoutingConfiguration": {"Type": "CANARY", "CanarySize": {"Type": "CAPACITY_PERCENT", "Value": 30}, "WaitIntervalInSeconds": 600}, "TerminationWaitInSeconds": 600, "MaximumExecutionTimeoutInSeconds": 1800}, "AutoRollbackConfiguration": {"Alarms": [{"AlarmName": "<your-alarm>"}]}'

Um die Optionen Canary Traffic Shifting zu konfigurieren, machen Sie Folgendes:

  • Verwenden Sie für endpoint-name den Namen des Endpunkts, den Sie aktualisieren möchten.

  • Verwenden Sie für endpoint-config-name den Namen der Endpunkt-Konfiguration, die Sie verwenden möchten.

  • Verwenden Sie für deployment-config ein BlueGreenUpdatePolicy-JSON-Objekt.

Anmerkung

Wenn Sie Ihr JSON-Objekt lieber in einer Datei speichern möchten, finden Sie weitere Informationen unter Generieren von AWS CLI Skelett- und Eingabeparametern im AWS CLIBenutzerhandbuch.