Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verstehen der HAProxy-Statistiken für MySQL und PostgreSQL

Ein Load Balancer ist immer eine gute Option, um Ihre Datenbankumgebung zu verbessern. Es kann Ihnen helfen, Anwendungen auf verfügbare Datenbankknoten umzuleiten, den Datenverkehr auf mehrere Server zu verteilen, um die Leistung zu verbessern, oder bei Bedarf sogar ein Failover durchzuführen. Um zu wissen, was mit Ihrem Datenverkehr/System passiert, müssen Sie über ein gutes Überwachungssystem verfügen, um nicht nur Ihre Datenbankknoten, sondern auch Ihre Load Balancer zu überwachen und proaktive oder reaktive Maßnahmen zu ergreifen, um aktuelle oder zukünftige Probleme zu mindern. Um ein Problem finden zu können, müssen Sie verstehen, was jeder angezeigte Wert bedeutet.

In diesem Blog erklären wir, was die HAProxy-Statistiken bedeuten und wie man sie auf benutzerfreundliche Weise mit Grafiken und ClusterControl überwacht.

Was ist HAProxy?

HAProxy ist ein Open-Source-Proxy, der zur Implementierung von Hochverfügbarkeit, Lastenausgleich und Proxying für TCP- und HTTP-basierte Anwendungen verwendet werden kann.

Als Load Balancer verteilt HAProxy den Datenverkehr von einem Ursprung zu einem oder mehreren Zielen und kann für diese Aufgabe spezifische Regeln und/oder Protokolle definieren. Wenn eines der Ziele nicht mehr reagiert, wird es als offline markiert und der Datenverkehr wird an die restlichen verfügbaren Ziele gesendet.

HAProxy-Knotentypen

Wenn Sie Ihren HAProxy Load Balancer konfigurieren, müssen je nach gewünschter Funktionalität verschiedene Knotentypen konfiguriert werden. Die Optionen sind Frontend, Backend und Listen.

Frontend-Knoten

Wenn Sie HAProxy als Reverse-Proxy vor Ihren Backend-Servern platzieren, definiert ein Frontend-Abschnitt in der Konfigurationsdatei die IP-Adressen und Ports, mit denen sich Clients verbinden können. Die Anfragen gehen in den Load Balancer ein und die Antworten werden an den Client zurückgesendet. Sie passieren das Frontend.

frontend site1.com

     bind 10.10.10.150:80

     use_backend api_servers if { path_beg /api/ }

     default_backend web_servers

Backend-Knoten

Es definiert eine Gruppe von Servern, die je nach ausgewählter Richtlinie einen Lastenausgleich erhalten und zugewiesen werden, um Anfragen zu bearbeiten. HAProxy sendet Anfragen an ein Backend und erhält dann eine Antwort von einem der aktiven Server.

backend web_servers

     balance roundrobin

     cookie SERVERUSED insert indirect nocache

     option httpchk HEAD /

     default-server check maxconn 20

     server server1 10.10.10.151:80 cookie server1

     server server2 10.10.10.152:80 cookie server2

Zuhörknoten

Es kombiniert die beiden oben erwähnten HAProxy-Knotentypen. Möglicherweise bevorzugen Sie die Lesbarkeit, die durch getrennte Frontend- und Backend-Abschnitte gewonnen wird, oder Sie möchten eine übersichtlichere Konfiguration haben, indem Sie den Listen-Ansatz verwenden.

listen  haproxy_10.10.10.143_3307_rw

        bind *:3307

        mode tcp

        tcp-check connect port 9200

        timeout client  10800s

        timeout server  10800s

        balance leastconn

        option httpchk

        default-server port 9200 inter 2s downinter 5s rise 3 fall 2 slowstart 60s maxconn 64 maxqueue 128 weight 100

        server 10.10.10.139 10.10.10.139:3306 check

        server 10.10.10.140 10.10.10.140:3306 check backup

        server 10.10.10.141 10.10.10.141:3306 check backup

HAProxy-Statistikseite

HAProxy ermöglicht es Ihnen, eine Statistikseite mit Echtzeitinformationen zu aktivieren, um zu sehen, was in Ihrem Load Balancer passiert. Um die Statistikseite zu aktivieren, müssen Sie nur die Direktive „stats enable“ in Ihrer HAProxy-Konfigurationsdatei (/etc/haproxy/haproxy.cfg) verwenden. Sehen wir uns ein Beispiel an:

userlist STATSUSERS

        group admin users admin

        user admin insecure-password admin

        user stats insecure-password admin



listen admin_page

        bind *:9600

        mode http

        stats enable

        stats refresh 60s

        stats uri /

        acl AuthOkay_ReadOnly http_auth(STATSUSERS)

        acl AuthOkay_Admin http_auth_group(STATSUSERS) admin

        stats http-request auth realm admin_page unless AuthOkay_ReadOnly

Die Bindezeile legt fest, welche IP-Adresse und welchen Port Sie verwenden, um auf die Statistikseite zuzugreifen. Sie können auch die Authentifizierung und einen Aktualisierungszeitraum konfigurieren. Wenn Sie über den angegebenen Port (im Beispiel 9600) auf Ihren HAProxy-Knoten zugreifen, sehen Sie in etwa Folgendes:

Hier finden Sie verschiedene nützliche Metriken zur Überwachung Ihres HAProxy-Knotens.

HAProxy-Statistiken

Sehen wir uns nun an, was diese Metriken sind. Da die Bedeutung vom Kontext abhängt, teilen wir es in Frontend und Backend auf.

Warteschlange

Backend

Dieser Abschnitt gilt nur für Backends und zeigt, wie lange Clients darauf warten, dass ein Server verfügbar wird. HAProxy kann Verbindungen in die Warteschlange stellen, wenn Sie die maxconn-Einstellung verwenden.

Die Spalte „Cur“ zeigt die Anzahl der Client-Verbindungen, die derzeit in der Warteschlange stehen und noch keinem Server zugewiesen sind. Die Spalte „Max“ zeigt die meisten Verbindungen, die jemals auf einmal in die Warteschlange gestellt wurden. Die Spalte „Limit“ zeigt die maximale Anzahl von Verbindungen, die in die Warteschlange gestellt werden dürfen, wie durch die maxqueue-Einstellung in jeder Serverzeile in der Konfigurationsdatei definiert.

Sitzungsrate

Frontend

Beschreibt die Rate, mit der sich Clients mit HAProxy verbinden.

Die Spalte „Cur“ zeigt die aktuelle Rate, mit der Clientsitzungen oder vollständig hergestellte Verbindungen zwischen Client und Server erstellt werden. Wenn Sie mit der Maus über dieses Feld fahren, zeigt die Seite die folgenden Messwerte an:

  • Aktuelle Verbindungsrate:Die Rate, mit der Clients eine Verbindung zu HAProxy herstellen.
  • Aktuelle Sitzungsrate:  Die Rate, mit der Sitzungen erstellt werden, bei denen es sich um Entitäten handelt, die den Status einer End-to-End-Verbindung enthalten.
  • Aktuelle Anforderungsrate:Die Rate, mit der HTTP-Anforderungen über bestehende Verbindungen empfangen werden.

Die Spalte „Max“ zeigt die meisten Sitzungen, die jemals gleichzeitig verwendet wurden. Wenn Sie mit der Maus über dieses Feld fahren, zeigt die Seite die folgenden Messwerte an:

  • Max. Verbindungsrate:Die höchste Rate, mit der sich Clients mit HAProxy verbunden haben.
  • Max. Sitzungsrate:Die höchste Rate, mit der Clients Sitzungen aufgebaut haben, bei denen es sich um Entitäten handelt, die den Status einer End-to-End-Verbindung halten.
  • Max. Anforderungsrate:Die höchste Rate, mit der HTTP-Anforderungen über bestehende Verbindungen empfangen wurden.

Die Spalte „Limit“ zeigt die maximale Anzahl von Sitzungen pro Sekunde, die das Frontend akzeptiert, wie in der Einstellung „Rate-Limit Sessions“ festgelegt. Wenn dieses Limit überschritten wird, bleiben zusätzliche Verbindungen im Backlog des Sockets ausstehend.

Backend

Diese Statistiken zeigen die Rate, mit der Verbindungen zu einem Server hergestellt werden.

Die Spalte „Cur“ zeigt die aktuelle Rate pro Sekunde, mit der Verbindungen zum Server hergestellt werden. Die Spalte „Max“ zeigt die höchste Rate, mit der jemals Verbindungen zu dem angegebenen Server aufgebaut wurden. Die Spalte „Limit“ wird hier nicht verwendet.

Sitzungen

Frontend

Dieser Abschnitt zählt die Anzahl der Sitzungen oder vollständigen Client-zu-Server-Verbindungen, die auf dem Load Balancer verwendet werden.

Die Spalte „Cur“ zeigt die aktuelle Anzahl der eingerichteten Sitzungen. Die Spalte „Max“ zeigt die meisten Sitzungen, die jemals gleichzeitig aufgebaut wurden. Die Spalte „Limit“ zeigt die maximal zulässige Anzahl gleichzeitiger Sitzungen, wie durch die maxconn-Einstellung im Frontend definiert. Dieses bestimmte Frontend nimmt keine neuen Verbindungen mehr an, wenn dieses Limit erreicht ist. Wenn maxconn nicht gesetzt ist, dann ist „Limit“ gleich dem maxconn-Wert im globalen Abschnitt Ihrer Konfiguration. Wenn dies nicht festgelegt ist, basiert der Wert auf Ihrem System. Wenn Sie den Mauszeiger über die Spalte „Gesamt“ bewegen, werden auf der Seite die folgenden Messwerte angezeigt:

  • Komm. Verbindungen:Gesamtzahl der seit dem letzten Neuladen von HAProxy hergestellten Verbindungen.
  • Komm. Sitzungen:Gesamtzahl der Sitzungen (End-to-End-Verbindungen), die seit dem letzten Neuladen hergestellt wurden.
  • Komm. HTTP-Anfragen:Kumulierte Anzahl von HTTP-Anfragen seit dem letzten Neuladen.
  • HTTP xxx-Antworten:Gesamtzahl der HTTP-Anfragen, die eine xxx-Antwort erhalten haben.
  • Komprimiert 2xx:Gesamtzahl der 2xx-Antworten, die komprimiert wurden, wenn die Komprimierung aktiviert wurde. Außerdem wird der Prozentsatz der komprimierten Anfragen angezeigt.
  • Andere Antworten:Gesamtzahl der HTTP-Anfragen, die eine Antwort erhalten haben, die nicht von den anderen Metriken abgedeckt wird.
  • Abgefangene Anfragen:Gesamtzahl der Anfragen, die abgefangen und auf die HAProxy-Statistikseite umgeleitet wurden.

Die Spalten „LbTot“ und „Last“ werden in diesem Abschnitt nicht verwendet.

Backend

Dieser Abschnitt zeigt die Anzahl der aktuellen Verbindungen zu einem der aktiven Server.

Die Spalte „Cur“ listet die Anzahl der aktiven Verbindungen zu einem Server auf. Die Spalte „Max“ zeigt die meisten Verbindungen, die jemals gleichzeitig zu dem angegebenen Server aufgebaut wurden. Die Spalte „Limit“ zeigt die maximale Anzahl von Verbindungen, die für einen Server zulässig sind, wie durch den Parameter maxconn in einer Serverzeile festgelegt.

Die Backend-Zeile zeigt den Wert von fullconn für „Limit“ oder verwendet, falls nicht gesetzt, die folgende Formel:Summe der Session-Limit-Werte für Frontends, die zu diesem Backend routen, dividiert durch 10. Die Spalte „Gesamt“ zeigt die kumulierte Anzahl der Verbindungen, die den angegebenen Server verwendet haben. Wenn Sie den Mauszeiger über dieses Feld bewegen, zeigt die Seite die folgenden Messwerte an:

  • Komm. Sitzungen:Gesamtzahl der Verbindungen, die zu diesem Server hergestellt wurden.
  • Komm. HTTP-Antworten:Gesamtzahl der von diesem Server empfangenen HTTP-Antworten.
  • HTTP xxx Antworten:Gesamtzahl der HTTP xxx Antworten von diesem Server.
  • Andere Antworten:Gesamtzahl der HTTP-Antworten, die nicht von den anderen Metriken abgedeckt werden.
  • Warteschlangenzeit:Die Zeit in Millisekunden, die eine Verbindung in der Warteschlange verblieb, während sie auf einen Verbindungsslot zum Server wartete, gemittelt über die letzten 1024 erfolgreichen Verbindungen.
  • Verbindungszeit:Die Zeit in Millisekunden, die für eine erfolgreiche Verbindung zum Server benötigt wurde, gemittelt über die letzten 1024 erfolgreichen Verbindungen.
  • Antwortzeit:Die Antwortzeit des Servers in Millisekunden, gemittelt über die letzten 1024 erfolgreichen Verbindungen.
  • Gesamtzeit:Die gesamte Sitzungszeit in Millisekunden, gemittelt über die letzten 1024 erfolgreichen Verbindungen.

Die Spalte „LbTot“ zeigt an, wie oft der angegebene Server insgesamt ausgewählt wurde, um eine Anfrage zu bedienen. Dies kann am normalen Lastenausgleich oder an einem Redispatch von einem ausgefallenen Server liegen. Die Spalte „Letzte“ zeigt die Zeit seit dem letzten Verbindungsempfang.

Bytes

Frontend

Dieser Abschnitt zeigt die Gesamtmenge der zwischen HAProxy und Clients gesendeten und empfangenen Daten. Die Spalte „In“ zeigt die Gesamtzahl der empfangenen Bytes und die Spalte „Out“ die Gesamtzahl der gesendeten Bytes.

Backend

Dieser Abschnitt zeigt die Datenmenge an, die zwischen HAProxy und dem Server gesendet und empfangen wurde. Die Spalte „In“ zeigt die Anzahl der an den Server gesendeten Bytes. Die Spalte „Out“ zeigt die Anzahl der zurückgesendeten Bytes.

Abgelehnt

Es zeigt die Anzahl der Anfragen und Antworten, die aufgrund von Sicherheitsbedenken sowohl im Frontend- als auch im Backend-Bereich abgelehnt wurden.

Frontend

Die Spalte „Req“ zeigt die Anzahl der Anfragen, die aufgrund von Konfigurationsanweisungen (http-request deny, http-request abgelehnt usw.) im Frontend- oder Listen-Bereich abgelehnt wurden.

Die Spalte „Resp“ zeigt die Anzahl der Antworten, die durch eine HTTP-Response-Deny-Direktive abgelehnt wurden, die in einem Frontend oder Listen platziert wurde.

Backend

Die Spalte „Req“ gilt nur für das gesamte Backend. Es zeigt die Anzahl der Anfragen, die durch Konfigurationsdirektiven (http-request deny, http-request abgelehnt, etc.) in einem Backend abgelehnt wurden.

Die Spalte „Resp“ zeigt die Anzahl der Antworten, die für einen bestimmten Server aufgrund der Konfigurationsanweisungen http-response deny oder tcp-response content reject in einem Backend zurückgewiesen wurden.

Fehler

Frontend

Hier wird nur die Spalte „Req“ verwendet. Es zeigt die Anzahl der Anfragen, bei denen ein Fehler aufgetreten ist.

Mögliche Ursachen sind:

  • Vorzeitige Kündigung durch den Kunden
  • Ein Lesefehler vom Client
  • Zeitüberschreitung beim Client
  • Der Client hat die Verbindung geschlossen
  • Der Client hat eine fehlerhafte Anfrage gesendet
  • Die Anfrage war geteert

Backend

Zeigt die Anzahl der Fehler im Zusammenhang mit der Kommunikation mit einem Backend-Server.

Die Spalte „Req“ wird nicht verwendet. Die Spalte „Conn“ zeigt die Anzahl der Anfragen, bei denen beim Versuch, eine Verbindung zum Server herzustellen, ein Fehler aufgetreten ist. Die Spalte „Antwort“ zeigt Fehler, die beim Abrufen der Antwort aufgetreten sind.

Warnungen

Backend

Nur für Backends. In diesem Abschnitt wird die Anzahl der Wiederholungen und Redispatches angezeigt. Wenn Sie Ihrem Backend eine Wiederholungsanweisung hinzugefügt haben, zeigt die Spalte „Retr“ die Gesamtzahl der Wiederholungsversuche einer Verbindung an. Die Spalte „Redis“ zeigt, wie oft HAProxy keine Verbindung zu einem Server herstellen konnte und diese an einen anderen Server weiterleitete. Dazu müssen Sie eine Option-Redispatch-Anweisung hinzugefügt haben.

Server

Frontend

Das einzige Feld aus diesem Abschnitt, das für ein Frontend gilt, ist das Statusfeld. Wenn der Status OFFEN ist, funktioniert das Front-End normal und ist bereit, Datenverkehr zu empfangen.

Backend

Dieser Abschnitt zeigt Details zum Status, Zustand und Gewicht jedes Servers. Die Spalte „Status“ zeigt an, ob der Server derzeit aktiv ist und wie lange. Es kann einen der folgenden Status anzeigen:

  • UP:Der Server wird als fehlerfrei gemeldet.
  • DOWN:Der Server meldet einen fehlerhaften Zustand und kann keine Anfragen empfangen.
  • NOLB:Sie haben http-check disable-on-404 zum Back-End hinzugefügt und die zustandsgeprüfte URL hat eine HTTP 404-Antwort zurückgegeben.
  • MAINT:Der Server wurde deaktiviert oder in den Wartungsmodus versetzt.
  • DRAIN:Der Server wurde in den Drain-Modus versetzt.
  • no check:Zustandsprüfungen sind für diesen Server nicht aktiviert.

Die Spalte „LastChk“ zeigt einen Wert wie L7OK/200 in Xms. Dieser Wert bedeutet, dass eine Schicht-7-Zustandsprüfung durchgeführt wurde; es hat eine HTTP 200 OK-Antwort zurückgegeben, und zwar innerhalb von X Millisekunden.

Die Spalte „Wght“ zeigt den Anteil des Datenverkehrs an, der akzeptiert wird, wie durch den Gewichtungsparameter in der Serverleitung festgelegt. Die Spalte „Act“ zeigt an, ob der Server aktiv (mit einem Y markiert) oder ein Backup (mit einem - markiert) ist. Die Spalte „Bck“ zeigt an, ob der Server ein Backup (mit einem Y markiert) oder aktiv (mit einem - markiert) ist.

Die Spalte „Chk“ zeigt die Anzahl der fehlgeschlagenen Zustandsprüfungen. Die Spalte „Dwn“ zeigt die Anzahl der Übergänge von UP nach DOWN. Die Spalte „Dwntme“ zeigt an, wie lange der Server ausgefallen ist.

Wenn Sie einer Serverzeile einen Slowstart-Parameter hinzugefügt haben, zeigt die Spalte „Thrtle“ den Prozentsatz des Datenverkehrs, den der Server akzeptiert, wenn Sie diesen Server deaktivieren und später aktivieren. Der Prozentsatz steigt über den von Ihnen festgelegten Zeitraum allmählich auf 100 % an.

Diese Informationen basieren auf einem HAProxy-Blogpost, auf den Sie für weitere Informationen verweisen können.

HAProxy auf ClusterControl

Neben Bereitstellung und Verwaltung bietet ClusterControl auch Einblick in HAProxy-Statistiken und Echtzeit-Dashboards von der Benutzeroberfläche. Von ClusterControl aus können Sie auf die Statistikseite zugreifen unter ClusterControl -> Cluster auswählen -> Knoten -> wählen Sie den HAProxy-Knoten ähnlich wie im folgenden Screenshot:

Sie können einen Server für den Lastenausgleich aktivieren/deaktivieren, indem Sie das Häkchen setzen/deaktivieren die Checkbox-Schaltfläche in der Spalte „Aktiviert“. Dies ist sehr nützlich, wenn Sie möchten, dass Ihre Anwendung die Verbindung zu einem Server absichtlich überspringt, z. B. zu Wartungszwecken oder zum Testen und Validieren neuer Konfigurationsparameter oder optimierter Abfragen.

Sie können Ihre HAProxy-Server auch von ClusterControl aus überwachen, indem Sie den Dashboard-Bereich überprüfen.

Um es zu aktivieren, müssen Sie nur zu ClusterControl gehen -> Cluster auswählen -> Dashboards -> Agentenbasierte Überwachung aktivieren. Dadurch wird ein Agent auf jedem Knoten bereitgestellt, um alle Informationen zum Generieren der entsprechenden Diagramme zu erhalten.

Hier sehen Sie nicht nur alle notwendigen Metriken zur Überwachung des HAProxy-Knotens, sondern auch zur Überwachung der gesamten Umgebung mithilfe der verschiedenen Dashboards.

Fazit

HAProxy ist ein gutes und leistungsstarkes Tool zur Verbesserung Ihrer Datenbank- und Anwendungsleistung. Es ist auch nützlich, Hochverfügbarkeit und Failover zu Ihrer Umgebung hinzuzufügen. Um zu wissen, was in Ihrem HAProxy-Knoten passiert, müssen Sie die Metriken verstehen, die auf der Statistikseite überwacht werden, oder diese Überwachung sogar verbessern, indem Sie ein Dashboard hinzufügen, um es benutzerfreundlicher zu gestalten.

In diesem Blog haben wir jede Metrik erklärt, die auf der HAProxy-Statistikseite erwähnt wird, und wir haben auch gezeigt, wie sie auf ClusterControl aussieht, wo Sie vom selben System aus auf HAProxy-Abschnitte sowohl für Statistiken als auch für Dashboards zugreifen können.