Problembehandlung in Azure Load Balancer

Abgeschlossen

Azure Load Balancer arbeitet in der Transportschicht des Netzwerkstapels. Load Balancer stellt eine einzige öffentliche IP-Adresse bereit, mit der sich alle Clients verbinden. Load Balancer verwendet dann eigene Routing- und Adressübersetzungsregeln, um eingehende TCP-Anforderungen an eine von mehreren ausgehenden Adressen weiterzuleiten. Üblicherweise ist jeder ausgehenden Adresse ein eigener virtueller Computer (VM) zugeordnet, wobei auf jedem dieser Computer eine Instanz Ihrer Anwendung ausgeführt wird.

Load Balancer verwendet einen Integritätstest, um die Verfügbarkeit jeder VM im Back-End-Pool zu ermitteln. Load Balancer sendet Anforderungen nur an VMs, die melden, dass sie fehlerfrei sind.

Im Beispielszenario haben Sie Benachrichtigungen erhalten, denen zufolge Load Balancer keine Anforderungen an VMs im Back-End-Pool weiterleiten kann. Sie vermuten, dass eine kürzliche Änderung der Netzwerkkonfiguration der Grund für das Problem sein könnte. Sie müssen allerdings erst verstehen, wie Netzwerkänderungen sich auf den Betrieb von Load Balancer auswirken.

Am Ende dieser Lerneinheit werden Sie zu Folgendem in der Lage sein:

  • Beschreiben einer typischen Konfiguration von Load Balancer und der an der Weiterleitung von Anforderungen an VMs beteiligten Komponenten
  • Erklären von häufig auftretenden Problemen, die dazu führen können, dass in Load Balancer beim Verteilen von Anforderungen auf VMs Fehler auftreten

Wie funktioniert Load Balancer?

Azure Load Balancer umfasst viele Komponenten:

  • Eine Front-End-IP-Adresse
  • Einen Back-End-Pool von VM-Adressen
  • Eine oder mehrere Routingregeln
  • Einen Integritätstest
  • Mehrere VMs, üblicherweise in einem virtuellen Netzwerk

Im folgenden Diagramm wird gezeigt, wie die verschiedenen von Load Balancer verwendeten Elemente zusammenarbeiten.

Diagram that shows the components of Azure Load Balancer.

Front-End-IP-Adresse und Back-End-Pool

Azure Load Balancer stellt eine transparente End-to-End-Verbindung zwischen einem Client und einer Anwendung her, die in einer Sammlung von VMs ausgeführt wird. Azure Load Balancer speichert die IP-Adressen dieser VMs in einem Repository, das häufig als Back-End-Pool bezeichnet wird. Azure Load Balancer stellt eigene Front-End-IP-Adressen für Clients zur Verfügung. Wenn ein Client eine Anforderung an diese Adresse übermittelt, wählt Load Balancer die IP-Adresse von einer VM aus dem Back-End-Pool aus. Load Balancer leitet die Anforderung über diese Back-End-IP-Adresse an die VM weiter.

Der Client hat keine Kenntnis über Load Balancer. Der Client sieht eine IP-Adresse oder einen DNS-Namen und sendet Anforderungen an dieses Ziel. Dieser Prozess ist identisch mit der direkten Kommunikation zwischen dem Client und der VM. Wenn die VM die Anforderung empfängt, wird die Adresse des ursprünglichen Clients beibehalten.

Außerdem ist die Nutzlast von Nachrichten, die vom Client an die VM gesendet werden, für Load Balancer nicht transparent. Die Inhalte von Nachrichten werden nicht von Load Balancer untersucht oder geändert. Die Nachrichten werden an die ausgewählte VM umgeleitet.

Load Balancer wählt die IP-Adresse einer VM aus dem Back-End-Pool anhand eines Algorithmus für die gleichmäßige Verteilung von Anforderungen aus. Load Balancer generiert einen Hash mithilfe der folgenden Informationen:

  • Quell-IP und Portadresse des Clients
  • IP-Adresse und Port des Ziels
  • Netzwerkprotokoll

Der Hashwert wird als Schlüssel für eine Tabelle verwendet, die die IP-Adressen im Back-End-Pool speichert.

Skalierbarkeit

Sie können jederzeit weitere VM-Instanzen starten und ihre IP-Adressen zum Back-End-Pool hinzufügen. Load Balancer bezieht diese neuen Instanzen beim Verteilen der Benutzeranforderungen ein.

Load Balancer kann mehrere öffentliche Front-End-IP-Adressen zur Verfügung stellen und über mehrere Back-End-Pools verfügen. Durch dieses Schema können Sie dieselbe Instanz von Load Balancer wiederverwenden, um Anforderungen für andere Systeme zu verarbeiten.

Routingregeln

Sie definieren Lastenausgleichsregeln, um festzulegen, wie an Front-End-IP-Adressen geleitete Anforderungen einem Back-End-Pool zugeordnet werden. Eine Lastenausgleichsregel legt auch das zu vergleichende Protokoll und optional den Quellport (Client) und Zielport fest. Bei einer Front-End-IP-Adresse eingehende Anforderungen, die nicht mit den Protokoll- und Portanforderungen übereinstimmen, werden von Load Balancer verworfen. Eine Lastenausgleichsregel kann auch die Sitzungspersistenz konfigurieren, sodass die Anforderungen eines bestimmter Clients wahrscheinlich an dieselbe VM weitergeleitet werden, sodass Anwendungen, die auf einer VM ausgeführt werden, die Vorteile der Zwischenspeicherung von sitzungsspezifischen Informationen nutzen können.

Integritätstests

Load Balancer muss ermitteln, ob alle vom Back-End-Pool referenzierten VMs zum Verarbeiten von Anforderungen verfügbar sind. Die Verfügbarkeit wird durch Hinzufügen eines Integritätstests bestimmt. Ein Integritätstest sendet regelmäßig Pingnachrichten an einen Port, den Sie für die VMs im Back-End-Pool festlegen. Sie stellen einen Dienst auf den VMs bereit, der auf diese Pingnachrichten mit der Nachricht „HTTP 200 (OK)“ reagiert.

Wenn die VM nach einer festgelegten Anzahl von Versuchen nicht reagiert, geht Load Balancer davon aus, dass sie fehlerhaft ist, und entfernt sie aus der Liste der VMs, die Benutzeranforderungen annehmen können. Die Workload wird dann an die verbleibenden fehlerfreien VMs verteilt. Load Balancer sendet weiterhin Pingnachrichten an eine nicht reagierende VM. Wenn die VM antwortet, wird sie wieder zur Liste der fehlerfreien VMs hinzugefügt und empfängt wieder Benutzeranforderungen.

Wenn Sie keinen Integritätstest bereitstellen, kann Load Balancer nicht ermitteln, ob eine VM fehlerfrei ist. Stattdessen wird davon ausgegangen, dass alle VMs reaktionsfähig sind.

Virtuelles Netzwerk

Die virtuellen Computer, auf die vom Back-End-Pool verwiesen wird, werden in einem virtuellen Azure-Netzwerk-Subnetz gehostet. Die VMs in diesem Netzwerk schützen Sie, indem Sie eine Netzwerksicherheitsgruppe (NSG) konfigurieren. Eine NSG implementiert Sicherheitsregeln für eingehenden und ausgehenden Datenverkehr des virtuellen Netzwerks und schränkt diesen auf klar definierte Endpunkte ein.

Die VMs im Back-End-Pool von Load Balancer lassen von außerhalb des virtuellen Netzwerks eingehenden Datenverkehr in der Regel über Port 80 (HTTP) und Port 443 (HTTPS) zu. VMs können jedoch Datenverkehr blockieren, der über andere Ports erfolgt.

Symptome und Ursachen für Fehler bei Load Balancer

Wenn die Verbindung zwischen Load Balancer und mindestens einer VM im Back-End-Pool verloren geht, treten Fehler auf. Folgende Symptome sind gängig:

  • Die Anwendung ist nicht erreichbar.
  • Die VMs, die die Anwendung ausführen, sind nicht erreichbar.
  • Die Reaktionszeiten sind langsam.
  • Bei Benutzeranforderungen treten Timeouts auf.

Für diese Fehler ist eine Vielzahl von Gründen möglich. In der Regel sind sie auf Testfehler und Datenpfadfehler zurückzuführen.

Testfehler

Testfehler treten auf, wenn mindestens eine VM im Back-End-Pool nicht auf Integritätstestanforderungen reagiert. Diese Fehler können folgende Ursachen haben:

  • Eine fehlerhafte Testkonfiguration liegt vor, z. B. eine falsche Angabe für die URL oder den Port.
  • Eine VM reagiert nicht auf den Test, weil der erforderliche Port nicht geöffnet ist.

Datenpfadfehler

Datenpfadfehler treten auf, wenn Load Balancer eine Clientanforderung nicht an die Anwendung weiterleiten kann, die auf einer VM im Back-End-Pool ausgeführt wird. Folgende Ursachen sind möglich:

  • Eine NSG-Regel oder Firewall blockiert die Ports oder IP-Adressen, die von der Anwendung verwendet werden.
  • Eine VM ist ausgefallen oder reagiert nicht. Möglicherweise ist die VM deaktiviert, sie schlägt fehl oder es liegt ein Sicherheitsproblem vor, z. B. wenn ein Zertifikat auf dem Server abgelaufen ist.
  • Die Anwendung reagiert nicht. Möglicherweise sind die VMs überlastet, die Anwendung lauscht auf den falschen Port oder die Anwendung stürzt ab.

Überprüfen Sie Ihr Wissen

1.

Was passiert, wenn kein Integritätstest konfiguriert ist und eine VM ausfällt?

2.

Sie haben einen Port in einer Netzwerksicherheitsgruppe geschlossen, die von einem virtuellen Netzwerk verwendet wird, das die VMs im Load Balancer-Pool hostet. Wie kann sich dies auf den Lastenausgleich auswirken?