Load Balancing eines Layers - AWS OpsWorks

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.

Load Balancing eines Layers

Wichtig

Der AWS OpsWorks Stacks Dienst hat am 26. Mai 2024 das Ende seiner Lebensdauer erreicht und wurde sowohl für neue als auch für bestehende Kunden deaktiviert. Wir empfehlen Kunden dringend, ihre Workloads so bald wie möglich auf andere Lösungen zu migrieren. Wenn Sie Fragen zur Migration haben, wenden Sie sich an das AWS Support Team auf AWS re:POST oder über den AWS Premium-Support.

AWS OpsWorks Stacks bietet zwei Load-Balancing-Optionen, Elastic Load Balancing und HAProxy, die in der Regel verwendet werden, um die Last auf die Instanzen einer Anwendungsserverebene zu verteilen. In diesem Thema werden die Vorteile und Einschränkungen der beiden Optionen beschrieben, sodass Sie besser entscheiden können, welche Option sich für Sie besser eignet, wenn Sie eine Lastverteilungsfunktion zu einem Layer hinzufügen möchten. In einigen Fällen ist es am besten, beide Optionen zu verwenden.

SSL-Terminierung

Die integrierte HAProxy-Schicht verarbeitet keine SSL-Terminierung. Sie müssen SSL auf den Servern beenden. Das hat den Vorteil, dass der Datenverkehr verschlüsselt ist, bis er die Server erreicht. Allerdings müssen die Server die Verschlüsselung verarbeiten, wodurch deren Last erhöht wird. Darüber hinaus müssen Sie Ihre SSL-Zertifikate auf den Anwendungsservern speichern, auf die Benutzer leichter zugreifen können.

Mit Elastic Load Balancing können Sie SSL am Load Balancer beenden. Dadurch wird die Belastung Ihrer Anwendungsserver reduziert, der Datenverkehr zwischen dem Load Balancer und dem Server wird jedoch nicht verschlüsselt. Elastic Load Balancing ermöglicht es Ihnen auch, SSL auf dem Server zu beenden, aber die Einrichtung ist etwas kompliziert.

Skalierung

Wenn der eingehende Datenverkehr die Kapazität eines HAProxy-Load Balancers übersteigt, müssen Sie diese manuell erhöhen.

Elastic Load Balancing skaliert automatisch, um eingehenden Datenverkehr zu verarbeiten. Um sicherzustellen, dass ein Elastic Load Balancing Load Balancer über ausreichend Kapazität verfügt, um die zu erwartende Last zu bewältigen, wenn er zum ersten Mal online geht, können Sie ihn vorwärmen.

Load Balancer-Ausfall

Wenn die Instance ausfällt, auf der Ihr HAProxy-Server gehostet wird, ist möglicherweise die gesamte Website so lange offline, bis Sie die Instance neu starten können.

Elastic Load Balancing ist ausfallresistenter als HAProxy. So werden beispielsweise Load Balancing-Knoten für jede verfügbare Availability Zone bereitgestellt, für die EC2 Instances registriert wurden. Wenn der Service in einer Zone unterbrochen wird, können die anderen Knoten weiterhin den eingehenden Datenverkehr verarbeiten. Weitere Informationen finden Sie unter Elastic Load Balancing Concepts.

Timeout bei Leerlauf

Beide Load Balancer beenden eine Verbindung, wenn sich ein Server für eine bestimmte Zeit im Leerlauf befindet.

  • HAProxy — Der Wert für das Leerlauf-Timeout hat keine Obergrenze.

  • Elastic Load Balancing — Der Standardwert für das Leerlauf-Timeout beträgt 60 Sekunden mit einem Maximum von 3600 Sekunden (60 Minuten).

Das Leerlaufzeitlimit von Elastic Load Balancing ist für die meisten Zwecke ausreichend. Wir empfehlen die Verwendung von HAProxy, wenn eine längere Leerlaufzeit benötigt wird. Beispielsweise:

  • Eine lange andauernde HTTP-Verbindung für Push-Benachrichtigungen

  • Eine administrative Schnittstelle, mit der Sie Aufgaben ausführen, die länger als 60 Minuten dauern

URL-basierte Zuweisung

Sie können einen Load Balancer anweisen, eine eingehende Anforderung an einen bestimmten Server basierend auf der URL der Anforderung zu übermitteln. Angenommen, Sie haben eine Gruppe von zehn Anwendungsservern, die eine kommerzielle Online-Anwendung unterstützen. Acht der Server verarbeiten den Katalog und zwei die Zahlungen. Sie möchte alle HTTP-Anforderungen, die mit der Zahlung zusammenhängen, basierend auf der Anforderungs-URL an die Zahlungsserver umleiten. In diesem Fall würden Sie alle URLs, die „Zahlung„ oder „Auschecken“ beinhalten, an einen der Zahlungsserver umleiten.

Mit HAProxy können Sie über die URL-basierte Zuweisung URLs mit bestimmten Zeichenfolgen an bestimmte Server umleiten. Um das URL-basierte Mapping mit AWS OpsWorks Stacks zu verwenden, müssen Sie eine benutzerdefinierte HAProxy-Konfigurationsdatei erstellen, indem Sie die haproxy-default.erb Vorlage im integrierten Cookbook überschreiben. haproxy Weitere Informationen finden Sie im HAProxy Configuration Manual und unter Verwenden von benutzerdefinierten Vorlagen. Sie können URL-basierte Zuweisungen nicht für HTTPS-Anforderungen nutzen. Eine HTTPS-Anforderung ist verschlüsselt, somit kann HAProxy die Anforderungs-URL nicht überprüfen.

Elastic Load Balancing bietet eingeschränkte Unterstützung für URL-Mapping. Weitere Informationen finden Sie unter Listener Configurations for Elastic Load Balancing (Listener-Konfigurationen für Elastic Load Balancing).

Empfehlung: Wir empfehlen die Verwendung von Elastic Load Balancing für den Load Balancing, sofern Sie keine Anforderungen haben, die nur von HAProxy erfüllt werden können. In diesem Fall könnte der beste Ansatz darin bestehen, beide zu kombinieren, indem Elastic Load Balancing als Frontend-Load Balancer verwendet wird, der den eingehenden Traffic auf eine Reihe von HAProxy-Servern verteilt. So gehen Sie vor:

  • Richten Sie eine HAProxy-Instance in den einzelnen Availability Zones des Stacks ein, um Anforderungen auf die Anwendungsserver der Zone zu verteilen.

  • Weisen Sie die HAProxy-Instances einem Elastic Load Balancing Load Balancer zu, der dann eingehende Anfragen an die HAProxy Load Balancer verteilt.

Dieser Ansatz ermöglicht es Ihnen, die URL-basierte Zuweisung von HAProxy zur Verteilung unterschiedlicher Arten von Anforderungen an die entsprechenden Anwendungsserver zu nutzen. Wenn jedoch einer der HAProxy-Server offline geht, funktioniert die Site weiterhin, da der Elastic Load Balancing Load Balancer den eingehenden Traffic automatisch auf die fehlerfreien HAProxy-Server verteilt. Beachten Sie, dass Sie Elastic Load Balancing als Frontend-Load Balancer verwenden müssen. Ein HAProxy-Server kann Anfragen nicht an andere HAProxy-Server verteilen.