PERF05-BP04 Nutzen von Lastausgleich und Verschlüsselungsauslagerung
Nutzen Sie Load-Balancer, um eine optimale Leistungseffizienz Ihrer Zielressourcen zu gewährleisten und die Reaktionsfähigkeit Ihres Systems zu verbessern.
Gewünschtes Ergebnis: Reduzierung der Anzahl der Computing-Ressourcen zur Bewältigung Ihres Datenverkehrs. Vermeiden Sie eine ungleichmäßige Auslastung der Ressourcen in Ihren Zielen. Verlagern Sie rechenintensive Aufgaben auf den Load-Balancer. Nutzen Sie die Elastizität und Flexibilität der Cloud, um die Leistung zu verbessern und Ihre Architektur zu optimieren.
Typische Anti-Muster:
-
Sie berücksichtigen bei der Wahl des Load-Balancer-Typs nicht die Anforderungen Ihres Workloads.
-
Sie nutzen die Funktionen des Load-Balancers nicht zur Optimierung der Leistung.
-
Der Workload ist direkt mit dem Internet verbunden, ohne dass ein Load-Balancer zum Einsatz kommt.
Risikostufe, wenn diese bewährte Methode nicht eingeführt wird: hoch
Implementierungsleitfaden
Load-Balancer fungieren als Eingangspunkt für Ihren Workload und verteilen den Datenverkehr von dort aus auf Ihre Backend-Ziele – wie Computing-Instances oder Container. Die Wahl des richtigen Load-Balancer-Typs ist der erste Schritt zur Optimierung Ihrer Architektur.
Starten Sie mit einer Auflistung Ihrer Workload-Merkmale wie Protokoll (z. B. TCP, HTTP, TLS oder WebSockets), Zieltyp (z. B. Instances, Container oder Serverless), Anwendungsanforderungen (z. B. langfristige Verbindungen, Benutzerauthentifizierung oder Stickiness) und Platzierung (z. B. Region, lokale Zone, Outposts oder Zonenisolierung).
Nachdem Sie sich für den richtigen Load-Balancer entschieden haben, können Sie damit beginnen, seine Funktionen zu nutzen, um die Belastung Ihres Backends durch den Datenverkehr zu verringern.
So können Sie beispielsweise sowohl mit Application Load Balancer (ALB) als auch mit Network Load Balancer (NLB) die SSL/TLS-Verschlüsselung auslagern, was die Möglichkeit bietet, den CPU-intensiven TLS-Handshake bei Ihren Zielen zu vermeiden und die Verwaltung der Zertifikate zu verbessern.
Wenn Sie SSL/TLS-Offloading in Ihrem Load-Balancer konfigurieren, übernimmt dieser die Verschlüsselung des Datenverkehrs von und zu den Clients. Er leitet den Datenverkehr dann unverschlüsselt an Ihre Backends weiter, wodurch Ihre Backend-Ressourcen entlastet werden und die Reaktionszeit für die Clients verbessert wird.
Application Load Balancer kann außerdem HTTP2-Datenverkehr ausliefern, ohne dass Sie ihn auf Ihren Zielen unterstützen müssen. Diese einfache Entscheidung kann die Reaktionszeit Ihrer Anwendung verbessern, da HTTP2 TCP-Verbindungen effizienter nutzt.
Load-Balancer können ebenfalls verwendet werden, um Ihre Architektur flexibler zu gestalten, indem der Datenverkehr auf verschiedene Backend-Typen wie Container und Serverless verteilt wird. Application Load Balancer kann beispielsweise mit Listener-Regeln konfiguriert werden, die den Datenverkehr auf der Grundlage der Anfrageparameter wie Header, Methode oder Muster an verschiedene Gruppen weiterleiten.
Bei der Definition der Architektur sollten Sie zudem die Anforderungen an die Latenz Ihres Workloads berücksichtigen. Wenn Sie beispielsweise eine latenzempfindliche Anwendung haben, können Sie sich für Network Load Balancer mit einer extrem niedrigen Latenz entscheiden. Alternativ können Sie Ihren Workload auch näher an Ihre Kunden heranbringen, indem Sie Application Load Balancer in AWS Local Zones
Eine weitere Überlegung für latenzempfindliche Workloads ist das zonenübergreifende Load-Balancing. Beim zonenübergreifenden Load-Balancing nimmt jeder Load-Balancer-Knoten eine Verteilung des Datenverkehrs auf die registrierten Ziele in allen aktivierten Availability Zones vor. Dies verbessert die Verfügbarkeit, kann aber die Latenz im einstelligen Millisekundenbereich erhöhen.
Schließlich bieten sowohl ALB als auch NLB Monitoring-Ressourcen wie Protokolle und Metriken. Wenn Sie das Monitoring richtig einrichten, können Sie Erkenntnisse über die Leistung Ihrer Anwendung gewinnen. So können Sie beispielsweise anhand von ALB-Zugriffsprotokollen feststellen, welche Anfragen länger brauchen, um beantwortet zu werden, oder welche Backend-Ziele Leistungsprobleme verursachen.
Implementierungsschritte
-
Wählen Sie den richtigen Load-Balancer für Ihren Workload aus.
-
Verwenden Sie Application Load Balancer für HTTP/HTTPS Workloads.
-
Verwenden Sie Network Load Balancer für Nicht-HTTP-Workloads, die TCP oder UDP nutzen.
-
Verwenden Sie eine Kombination aus beiden (ALB als Ziel von NLB
) aus, wenn Sie die Funktionen beider Produkte nutzen möchten. Dies ist zum Beispiel möglich, wenn Sie die statischen IP-Adressen von NLB zusammen mit dem HTTP-Header-basierten Routing von ALB verwenden möchten oder wenn Sie Ihren HTTP-Workload an AWS PrivateLink anbinden möchten. -
Einen vollständigen Vergleich von Load-Balancern finden Sie im ELB-Produktvergleich
.
-
-
Verwenden Sie SSL/TLS-Offloading.
-
Konfigurieren Sie HTTPS/TLS-Listener, bei denen Application Load Balancer und Network Load Balancer mit AWS Certificate Manager
integriert sind. -
Beachten Sie, dass einige Workloads aus Compliance-Gründen eine Ende-zu-Ende-Verschlüsselung benötigen können. In diesem Fall ist es erforderlich, die Verschlüsselung an den Zielen zu aktivieren.
-
Bewährte Methoden für die Sicherheit finden Sie unter SEC09-BP02 Erzwingen einer Verschlüsselung bei der Übertragung.
-
-
Wählen Sie den richtigen Routing-Algorithmus aus.
-
Der Routing-Algorithmus kann einen entscheidenden Einfluss darauf haben, wie gut Ihre Backend-Ziele ausgelastet sind und wie sie die Leistung beeinflussen. ALB bietet zum Beispiel zwei Optionen für Routing-Algorithmen:
-
Am wenigsten ausstehende Anfragen: Verwenden Sie diese Option, um eine bessere Verteilung der Last auf Ihre Backend-Ziele zu erreichen, wenn die Anfragen für Ihre Anwendung unterschiedlich komplex sind oder Ihre Ziele unterschiedliche Kapazitäten für die Verarbeitung haben.
-
Round Robin: Verwenden Sie diese Option, wenn die Anfragen und Ziele ähnlich sind oder wenn Sie die Anfragen gleichmäßig auf die Ziele verteilen müssen.
-
-
Ziehen Sie eine zonenübergreifende Verarbeitung oder Zonenisolierung in Betracht.
-
Verwenden Sie die deaktivierte zonenübergreifende Isolierung (Zonenisolierung), um die Latenz zu verbessern und Domänen mit Zonenfehlern zu vermeiden. In NLB ist dies standardmäßig deaktiviert. In ALB können Sie die Option pro Gruppe deaktivieren.
-
Verwenden Sie die aktivierte zonenübergreifende Verarbeitung für eine höhere Verfügbarkeit und Flexibilität. Standardmäßig ist die zonenübergreifende Verarbeitung für ALB aktiviert. In NLB können Sie sie pro Gruppe aktivieren.
-
-
Aktivieren Sie HTTP-Keep-Alives für Ihre HTTP-Workloads.
-
Aktivieren Sie bei HTTP-Workloads die HTTP-Keep-Alive-Funktion in den Einstellungen des Webservers für Ihre Backend-Ziele. Mit dieser Funktion kann der Load-Balancer Backend-Verbindungen wiederverwenden, bis die Keep-Alive-Zeit abgelaufen ist, wodurch sich Ihre HTTP-Anfrage- und Reaktionszeiten verbessern und die Auslastung der Ressourcen auf Ihren Backend-Zielen reduziert wird. Details zu dieser Funktion für Apache und Nginx finden Sie unter What are the optimal settings for using Apache or NGINX as a backend server for ELB?
(Was sind die optimalen Einstellungen für die Verwendung von Apache oder NGINX als Backend-Server für ELB?).
-
-
Verwenden Sie die Elastic Load Balancing-Integration für eine bessere Orchestrierung von Computing-Ressourcen.
-
Verwenden Sie die Auto Scaling-Integration für Ihren Load-Balancer. Einer der Schlüssel für ein leistungsfähiges System ist die richtige Größenanpassung Ihrer Backend-Ressourcen. Zu diesem Zweck können Sie Load-Balancer-Integrationen für Backend-Zielressourcen nutzen. Mithilfe der Load-Balancer-Integration mit Auto Scaling-Gruppen werden Ziele je nach Bedarf als Reaktion auf den eingehenden Datenverkehr zum Load-Balancer hinzugefügt oder aus ihm entfernt.
-
Load-Balancer können für containerisierte Workloads außerdem mit Amazon ECS und Amazon EKS integriert werden.
-
-
Überwachen Sie Ihren Load-Balancer, um Leistungsengpässe zu finden.
-
Aktivieren Sie die Zugriffsprotokolle für Ihre Application Load Balancer und Network Load Balancer.
-
Die wichtigsten zu berücksichtigenden Elemente für ALB sind
request_processing_time
,request_processing_time
undresponse_processing_time
. -
Die wichtigsten Elemente für NLB sind
connection_time
undtls_handshake_time
. -
Bereiten Sie sich darauf vor, die Protokolle bei Bedarf abfragen zu können. Sie können Amazon Athena verwenden, um sowohl ALB-Protokolle als auch NLB-Protokolle abzufragen.
-
Erstellen Sie Warnungen für leistungsbezogene Metriken wie
TargetResponseTime
für ALB.
-
Ressourcen
Zugehörige bewährte Methoden:
Zugehörige Dokumente:
-
Improving Performance and Reducing Cost Using Availability Zone Affinity
(Verbesserung der Leistung und Senkung der Kosten durch Availability Zone-Affinität) -
Step by step for Log Analysis with Amazon Athena
(Schritt für Schritt zur Protokollanalyse mit Amazon Athena) -
Monitor your Application Load Balancers (Überwachen Ihrer Application Load Balancer)
-
Monitor your Network Load Balancers (Überwachen Ihrer Network Load Balancer)
Zugehörige Videos:
-
AWS re:Invent 2018: [REPEAT 1] Elastic Load Balancing: Deep Dive and Best Practices (NET404-R1)
(AWS re:Invent 2018: [WIEDERHOLUNG 1] Elastic Load Balancing: Vertiefung und bewährte Methoden (NET404-R1)) -
AWS re:Invent 2021 – How to choose the right load balancer for your AWS workloads
(AWS re:Invent 2021 – So wählen Sie den richtigen Load Balancer für Ihre AWS-Workloads aus) -
AWS re:Inforce 2022 – How to use Elastic Load Balancing to enhance your security posture at scale (NIS203)
(AWS re:Inforce 2022 – So verbessen Sie mit Elastic Load Balancing Ihren Sicherheitsstatus im großen Umfang (NIS203)) -
AWS re:Invent 2019: Get the most from Elastic Load Balancing for different workloads (NET407-R2)
(AWS re:Invent 2019: Holen Sie das Beste aus Elastic Load Balancing für verschiedene Workloads heraus (NET407-R2))
Zugehörige Beispiele:
-
CDK and CloudFormation samples for Log Analysis with Amazon Athena
(CDK und CloudFormation-Beispiele für die Protokollanalyse mit Amazon Athena)