Können Elastic Load Balancer den Datenverkehr korrekt auf Instanzen unterschiedlicher Größe verteilen?


10

Ich habe gerade Elastic Load Balancers untersucht. Soweit ich weiß, machen sie nur Round-Robin und verteilen die Verbindungen gleichmäßig auf die Server hinter ihnen. Was passiert also, wenn sich hinter einer ELB Instanzen unterschiedlicher Größe befinden? Sendet es mehr Verbindungen an die größere Instanz oder verteilt es die Verbindungen weiterhin gleichmäßig, was bedeuten würde, dass Sie wirklich keine Instanzen unterschiedlicher Größe verwenden sollten.

Antworten:


15

Soweit ich weiß, machen sie nur Round-Robin und verteilen die Verbindungen gleichmäßig auf die Server hinter ihnen.

Art, aber nicht ganz ich denke - leider ist die Amazon ELB- Routing-Dokumentation nicht vorhanden, so dass man einige Teile zusammensetzen muss, um eine Schlussfolgerung zu ziehen. Hier ist das einzige Fragment aus dem Entwicklerhandbuch für den elastischen Lastausgleich, das mir bekannt ist, siehe Abschnitt Sticky Sessions im Überblick über den elastischen Lastausgleich :

Standardmäßig leitet ein Load Balancer jede Anforderung unabhängig an die Anwendungsinstanz mit der geringsten Last weiter . Sie können jedoch die Sticky-Session-Funktion (auch als Sitzungsaffinität bezeichnet) verwenden, mit der der Load Balancer die Sitzung eines Benutzers an eine bestimmte Anwendungsinstanz binden kann. Dadurch wird sichergestellt, dass alle Anforderungen, die vom Benutzer während der Sitzung eingehen, an dieselbe Anwendungsinstanz gesendet werden. [Hervorhebung von mir]

Was bedeutet nun kleinste Last genau? Die einzige Erklärung, die mir bekannt ist, ist die etwas vage Antwort des AWS-Teams von 2009 auf die ELB-Strategie :

ELB verfolgt lose, wie viele Anforderungen (oder Verbindungen im Fall von TCP) in jeder Instanz ausstehen. Die Ressourcennutzung (z. B. CPU oder Speicher) wird nicht bei jeder Instanz überwacht. ELB wird derzeit unter den Fällen, von denen es glaubt, dass sie die wenigsten ausstehenden Anfragen haben, ein Round-Robin-Verfahren durchführen. [Hervorhebung von mir]

Dies ist in Bezug auf die Systemarchitektur und die angesprochenen Anwendungsfälle sehr sinnvoll, bietet jedoch offensichtlich nicht die Transparenz und / oder Kontrolle des Routings, die Sie für erweiterte HA-Szenarien benötigen oder benötigen.

Bitte beachten Sie, dass dies je nach Interpretation möglicherweise durch eine neuere Antwort des AWS-Teams auf die Richtlinien für den elastischen Lastausgleich - Lastverteilung ein wenig widerlegt wird oder nicht :

Round-Robin kommt zwar ins Spiel, aber die Client-Sitzungen berücksichtigen nicht immer TTL- oder DNS-Caches, sodass Sie verzerrte Ergebnisse und ungleichmäßige Verteilungen von Anforderungen erhalten können. Die ELB berücksichtigt nicht, welche Verkehrs- / Anforderungsinstanzen bisher in ihren Verkehrsroutingentscheidungen erhalten haben. [Hervorhebung von mir]

Gesundheitschecks

Natürlich wird das oben Gesagte durch die ordnungsgemäß dokumentierten, transparenten und kontrollierbaren Integritätsprüfungen geändert , die Ihnen eine gewisse Hebelwirkung bieten, um (möglicherweise vorübergehend) Instanzen aus dem Routing zu entfernen, wie in der oben genannten Antwort des AWS-Teams an ELB zusammengefasst Strategie auch:

Der Load Balancer überwacht den Zustand Ihrer bei Ihrem Load Balancer registrierten Instanzen. Wenn der Load Balancer ein Problem mit einer Instanz erkennt, wird die Verteilung des Datenverkehrs an diese Instanz beendet. Wenn die Instanz wieder fehlerfrei ist, startet der Load Balancer die Verteilung des Datenverkehrs neu. Dieser Prozess ermöglicht es Ihrer Anwendung, automatisch auf fehlgeschlagene Instanzen zu reagieren, ohne dass Sie über die Konfiguration des Integritätsprüfungsprogramms hinaus involviert sein müssen.

Fazit

Obwohl dies sicherlich ungewöhnlich ist, verstehe ich nicht, warum ELB nicht auch mit einem Pool verschiedener Amazon EC2- Instanztypen arbeiten sollte. Ich habe dies jedoch nicht selbst versucht und würde sowohl die Überwachung Ihres Load Balancers mit CloudWatch als auch die Überwachung empfehlen Ihre einzelnen EC2-Instanzen und korrelieren die Ergebnisse, um letztendlich einen Einblick und ein Vertrauen in ein solches Setup zu erhalten.


1
Vielen Dank für eine so ausführliche Antwort, genau das, wonach ich gesucht, aber nicht gefunden habe.
Sean Bannister

1
Aus Erfahrung kann ich Ihnen sagen, dass eine ELB den Datenverkehr mit einem Pool, der mehrere Instanztypen enthält, NICHT gut verteilt.
Ubiquitousthey

Hat jemand Informationen zu AWS Application Load Balancers (ALB) und verschiedenen Instanztypen?
Etwas am

1

Basierend auf den bisher gemachten Aussagen ist der Verteilungsalgorithmus äußerst einfach.

Das Front-End von ELB besteht normalerweise aus mehr als einer ELB-Instanz, und die Verteilung erfolgt im Round-Robin-Verfahren.

Das Back-End (Ihre Instanzen) algo behauptet:

ELB verfolgt lose, wie viele Anforderungen (oder Verbindungen im Fall von TCP) in jeder Instanz ausstehen. Die Ressourcennutzung (z. B. CPU oder Speicher) wird nicht bei jeder Instanz überwacht. ELB wird derzeit unter den Fällen, von denen es glaubt, dass sie die wenigsten ausstehenden Anfragen haben, ein Round-Robin-Verfahren durchführen.

Dies würde darauf schließen, dass mehr Verkehr an eine größere Instanz weitergeleitet wird, wenn eine größere Instanz weniger ausstehende Anforderungen hat. Es gibt keine Möglichkeit, dies zu garantieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.