Integration CodeDeploy mit Elastic Load Balancing - AWS CodeDeploy

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.

Integration CodeDeploy mit Elastic Load Balancing

Während der CodeDeploy Bereitstellung verhindert ein Load Balancer, dass Internet-Traffic an Instances weitergeleitet wird, wenn diese nicht bereit sind, für die sie gerade bereitgestellt werden oder als Teil einer Umgebung nicht mehr benötigt werden. Die genaue Rolle, die der Load Balancer spielt, hängt jedoch davon ab, ob er in einer Blau/Grün-Bereitstellung oder einer In-Situ-Bereitstellung verwendet wird.

Anmerkung

Die Verwendung von Elastic Load Balancing-Load Balancing-Load Balancern ist in blauen/grünen Bereitstellungen obligatorisch und in In-Place-Bereitstellungen optional.

Arten von Elastic Load Balancing

Elastic Load Balancing bietet drei Arten von Load Balancern, die in CodeDeploy Bereitstellungen verwendet werden können: Classic Load Balancers, Application Load Balancers und Network Load Balancers.

Classic Load Balancer

Führt das Routing und den Lastenausgleich auf Transportebene (TCP/SSL) oder Anwendungsebene (HTTP/HTTPS) durch. Es unterstützt eine VPC.

Anmerkung

Classic Load Balancer werden bei Amazon ECS-Bereitstellungen nicht unterstützt.

Application Load Balancer

Führt das Routing und den Lastenausgleich auf Anwendungsebene (HTTP/HTTPS) durch und unterstützt das pfadbasierte Routing. Er kann Anforderungen an Ports auf jeder EC2-Instance oder Container-Instance in Ihrer Virtual Private Cloud (VPC) leiten.

Anmerkung

Die Application Load Balancer Balancer-Zielgruppen müssen den Zieltyp instance für Bereitstellungen auf EC2-Instances und IP für Fargate-Bereitstellungen haben. Weitere Informationen finden Sie unter Zieltyp.

Network Load Balancer

Routen und Lastenausgleich auf der Transportschicht (TCP/UDP Layer-4) basieren auf Adressinformationen, die aus dem TCP-Paket-Header und nicht aus dem Paketinhalt extrahiert wurden. Network Load Balancers können Datenverkehrsspitzen verarbeiten, die Quell-IP-Adresse des Clients beibehalten und eine feste IP für die Nutzungsdauer des Load Balancers verwenden.

Weitere Informationen zu Elastic Load Balancing Load Balancers finden Sie in den folgenden Themen:

Blau/Grün-Bereitstellungen

Die Umleitung von Instance-Traffic hinter einen Elastic Load Balancing Load Balancer ist für CodeDeploy Blue-Green-Bereitstellungen von grundlegender Bedeutung.

Bei einer Blau/Grün-Bereitstellung erlaubt der Load Balancer, dass der Datenverkehr entsprechend von Ihnen angegebenen Regeln zu den neuen Instances in einer Bereitstellungsgruppe, für die die neueste Anwendungsrevision bereitgestellt wurde (die Ersatzumgebung), weitergeleitet wird, und dann der Datenverkehr von den alten Instances, auf denen die vorherige Anwendungsrevision ausgeführt wurde (die ursprüngliche Umgebung), gesperrt wird.

Nachdem Instances in einer Ersatzumgebung bei einem oder mehreren Load Balancern registriert wurden, werden Instances aus der ursprünglichen Umgebung deregistriert und, falls Sie möchten, beendet.

Für eine blaue/grüne Bereitstellung können Sie eine oder mehrere Classic Load Balancer-, Application Load Balancer-Zielgruppen oder Network Load Balancer Balancer-Zielgruppen in Ihrer Bereitstellungsgruppe angeben. Sie verwenden die CodeDeploy Konsole oder AWS CLI um die Load Balancer zu einer Bereitstellungsgruppe hinzuzufügen.

Weitere Informationen über Load Balancer in Blue/Green-Bereitstellungen finden Sie in den folgenden Themen:

In-Situ-Bereitstellungen

Während einer In-Situ-Bereitstellung verhindert ein Load Balancer, dass Internetdatenverkehr an eine Instance weitergeleitet wird, solange die Bereitstellung ausgeführt wird, und macht die Instance anschließend, wenn die Bereitstellung für sie abgeschlossen wurde, wieder für den Datenverkehr verfügbar.

Wenn in einer In-Situ-Bereitstellung kein Load Balancer verwendet wird, kann Internetdatenverkehr während des Bereitstellungsvorgangs an Instances geleitet werden. Ihre Kunden finden dann möglicherweise fehlerhafte, unvollständige oder veraltete Webanwendungen vor. Wenn Sie einen Elastic Load Balancing Load Balancer mit einer In-Place-Bereitstellung verwenden, werden Instances in einer Bereitstellungsgruppe vom Load Balancer abgemeldet, mit der neuesten Anwendungsversion aktualisiert und dann nach erfolgreicher Bereitstellung erneut beim Load Balancer als Teil derselben Bereitstellungsgruppe registriert. CodeDeploy wartet bis zu 1 Stunde, bis die Instance hinter dem Load Balancer wieder funktionsfähig ist. Wenn die Instance während der Wartezeit vom Load Balancer nicht als fehlerfrei markiert wird, wechselt sie CodeDeploy entweder zur nächsten Instance oder schlägt bei der Bereitstellung fehl, je nach Bereitstellungskonfiguration.

Für eine direkte Bereitstellung können Sie eine oder mehrere Classic Load Balancer, Application Load Balancer-Zielgruppen oder Network Load Balancer Balancer-Zielgruppen angeben. Sie können die Load Balancer als Teil der Konfiguration der Bereitstellungsgruppe angeben, oder Sie können ein von bereitgestelltes Skript verwenden, um die Load Balancer CodeDeploy zu implementieren.

Geben Sie den Load Balancer für die direkte Bereitstellung mithilfe einer Bereitstellungsgruppe an

Um Load Balancer zu einer Bereitstellungsgruppe hinzuzufügen, verwenden Sie die CodeDeploy Konsole oder. AWS CLI Weitere Informationen zur Angabe eines Load Balancers in einer Bereitstellungsgruppe bei In-Situ-Bereitstellungen finden Sie in den folgenden Themen:

Geben Sie den Load Balancer für die direkte Bereitstellung mithilfe eines Skripts an

Befolgen Sie die Schritte im folgenden Verfahren, um Bereitstellungslebenszyklusskripts zum Einrichten des Load Balancers für In-Situ-Bereitstellungen zu verwenden.

Anmerkung

Sie sollten den verwenden. CodeDeployDefault OneAtATime-Bereitstellungskonfiguration nur, wenn Sie ein Skript verwenden, um einen Load Balancer für eine direkte Bereitstellung einzurichten. Gleichzeitige Läufe werden nicht unterstützt, und die. CodeDeployDefault OneAtDie ATime-Einstellung gewährleistet eine serielle Ausführung der Skripts. Weitere Informationen zu Bereitstellungskonfigurationen finden Sie unter Arbeiten mit Bereitstellungskonfigurationen in CodeDeploy.

Im CodeDeploy Samples-Repository unter finden Sie Anleitungen und Beispiele GitHub, die Sie an die Verwendung von CodeDeploy Elastic Load Balancing Balancing-Load Balancers anpassen können. Diese Repositorys enthalten drei Beispielskripte — register_with_elb.shderegister_from_elb.sh, und common_functions.sh —, die den gesamten Code enthalten, den Sie für den Einstieg benötigen. Bearbeiten Sie einfach die Platzhalter in diesen drei Skripts, und verweisen Sie dann aus der Datei appspec.yml auf diese Skripts.

Gehen Sie wie folgt vor, um In-Place-Bereitstellungen CodeDeploy mit Amazon EC2 EC2-Instances einzurichten, die bei Elastic Load Balancing Load Balancers registriert sind:

  1. Laden Sie die Beispiele für den Load-Balancer-Typ herunter, den Sie für eine In-Situ-Bereitstellung verwenden möchten:

  2. Stellen Sie sicher, dass auf jeder Ihrer Amazon EC2 EC2-Zielinstanzen die AWS CLI installiert ist.

  3. Stellen Sie sicher, dass jede Ihrer Amazon EC2 EC2-Ziel-Instances über ein IAM-Instance-Profil verfügt, das mindestens mit den Berechtigungen elasticloadbalancing: * und autoscaling: * verknüpft ist.

  4. Fügen Sie im Quellcodeverzeichnis Ihrer Anwendung die Bereitstellungslebenszyklus-Ereignisskripts (register_with_elb.sh, deregister_from_elb.sh und common_functions.sh) hinzu.

  5. Geben Sie in der Version appspec.yml für die Anwendung Anweisungen CodeDeploy zur Ausführung des Skripts während des ApplicationStartEreignisses und des register_with_elb.sh Skripts während des Ereignisses anderegister_from_elb.sh. ApplicationStop

  6. Wenn die Instance Teil einer Amazon EC2 Auto Scaling Scaling-Gruppe ist, können Sie diesen Schritt überspringen.

    Im common_functions.sh-Skript:

    • Wenn Sie den Classic Load Balancer verwenden, geben Sie die Namen der Elastic Load Balancing Balancing-Load Balancer unter an ELB_LIST="" und nehmen Sie alle erforderlichen Änderungen an den anderen Bereitstellungseinstellungen in der Datei vor.

    • Wenn Sie den Application Load Balancer oder den Network Load Balancer verwenden, geben Sie die Namen der Elastic Load Balancing Balancing-Zielgruppen unter an und nehmen Sie alle erforderlichen Änderungen an den anderen Bereitstellungseinstellungen in der Datei vor. TARGET_GROUP_LIST=""

  7. Bündeln Sie den Quellcode der Anwendung, die appspec.yml und die Bereitstellungslebenszyklus-Ereignisskripts in einer Anwendungsrevision, und laden Sie diese dann hoch. Stellen Sie die Revision auf den Amazon EC2 EC2-Instances bereit. Während der Bereitstellung melden die Skripte für das Deployment Lifecycle Event die Amazon EC2 EC2-Instance beim Load Balancer ab, warten, bis die Verbindung leer ist, und registrieren die Amazon EC2 EC2-Instance nach Abschluss der Bereitstellung erneut beim Load Balancer.