sql >> Database >  >> RDS >> Mysql

De HAProxy-statistieken voor MySQL en PostgreSQL begrijpen

Het hebben van een Load Balancer is altijd een goede optie om uw databaseomgeving te verbeteren. Het kan u helpen bij het omleiden van toepassingen naar beschikbare databaseknooppunten, het distribueren van het verkeer over meerdere servers om de prestaties te verbeteren, of zelfs failover indien nodig. Om te weten wat er met uw verkeer/systeem gebeurt, moet u een goed monitoringsysteem hebben om niet alleen uw databaseknooppunten maar ook uw Load Balancers te bewaken, om proactieve of reactieve acties te ondernemen om huidige of toekomstige problemen te verhelpen. Om een ​​probleem te kunnen vinden, moet u begrijpen wat elke waarde die u ziet, betekent.

In deze blog leggen we uit wat de HAProxy-statistieken betekenen en hoe je deze op een vriendelijke manier kunt monitoren met behulp van grafieken en ClusterControl.

Wat is HAProxy?

HAProxy is een open-source proxy die kan worden gebruikt voor het implementeren van hoge beschikbaarheid, taakverdeling en proxying voor op TCP en HTTP gebaseerde applicaties.

Als load balancer distribueert HAProxy verkeer van de ene oorsprong naar een of meer bestemmingen en kan specifieke regels en/of protocollen voor deze taak definiëren. Als een van de bestemmingen niet meer reageert, wordt deze gemarkeerd als offline en wordt het verkeer naar de overige beschikbare bestemmingen gestuurd.

HAProxy-knooppunttypen

Wanneer u uw HAProxy Load Balancer configureert, zijn er verschillende knooppunttypen om te configureren, afhankelijk van de gewenste functionaliteit. De opties zijn Frontend, Backend en Luisteren.

Frontend-knooppunten

Als je HAProxy als reverse proxy voor je backend-servers plaatst, definieert een frontend-sectie in het configuratiebestand de IP-adressen en poorten waarmee clients verbinding kunnen maken. De aanvragen komen de load balancer binnen en de antwoorden worden teruggestuurd naar de client. Ze passeren de frontend.

frontend site1.com

     bind 10.10.10.150:80

     use_backend api_servers if { path_beg /api/ }

     default_backend web_servers

Backend-knooppunten

Het definieert een groep servers die wordt belast en toegewezen om verzoeken te verwerken, afhankelijk van het geselecteerde beleid. HAProxy stuurt verzoeken naar een backend en ontvangt vervolgens een reactie van een van de actieve servers.

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

Luisterknooppunten

Het combineert de twee HAProxy-knooppunttypen die we hierboven noemden. Misschien geeft u de voorkeur aan de leesbaarheid die wordt verkregen door afzonderlijke frontend- en backend-secties te hebben, of misschien wilt u een meer beknopte configuratie hebben met behulp van de luisterbenadering.

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-statistiekenpagina

HAProxy stelt je in staat een statistiekenpagina met realtime informatie in te schakelen om te zien wat er in je Load Balancer gebeurt. Om de statistiekenpagina in te schakelen, hoeft u alleen maar de richtlijn "stats enable" in uw HAProxy-configuratiebestand (/etc/haproxy/haproxy.cfg) te gebruiken. Laten we een voorbeeld bekijken:

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

De bindregel stelt in welk IP-adres en welke poort je gebruikt om toegang te krijgen tot de statistiekenpagina. U kunt ook authenticatie en een vernieuwingsperiode configureren. Als u toegang krijgt tot uw HAProxy-knooppunt met behulp van de opgegeven poort (9600 in het voorbeeld), beheerders-/beheerdersreferenties, ziet u zoiets als dit:

Hier vindt u verschillende nuttige statistieken om uw HAProxy-knooppunt te controleren.

HAProxy-statistieken

Laten we eens kijken wat deze statistieken zijn. Omdat de betekenis afhangt van de context, splitsen we deze op in Frontend en Backend.

Wachtrij

Backend

Deze sectie is alleen van toepassing op backends en laat zien hoe lang clients wachten tot een server beschikbaar komt. HAProxy kan verbindingen in de wachtrij plaatsen wanneer u de maxconn-instelling gebruikt.

De kolom “Cur” toont het aantal clientverbindingen dat momenteel in de wachtrij staat en nog niet is toegewezen aan een server. De kolom "Max" toont de meeste verbindingen die ooit in een wachtrij zijn geplaatst. De kolom "Limiet" toont het maximale aantal verbindingen dat in de wachtrij mag worden geplaatst, zoals gedefinieerd door de maxqueue-instelling op elke serverregel in het configuratiebestand.

Sessiepercentage

Frontend

Beschrijft de snelheid waarmee clients verbinding maken met HAProxy.

De kolom 'Cur' toont de huidige snelheid waarmee clientsessies, of volledig tot stand gebrachte verbindingen tussen client en server, worden gemaakt. Als u met uw muis over dit veld beweegt, geeft de pagina de volgende statistieken weer:

  • Huidige verbindingssnelheid:de snelheid waarmee clients verbinding maken met HAProxy.
  • Huidige sessiesnelheid:  de snelheid waarmee sessies, die entiteiten zijn die de status van een end-to-end-verbinding bevatten, worden gemaakt.
  • Huidige verzoeksnelheid:de snelheid waarmee HTTP-verzoeken worden ontvangen via bestaande verbindingen.

De kolom 'Max' toont de meeste sessies die ooit tegelijkertijd in gebruik zijn geweest. Als u met uw muis over dit veld beweegt, geeft de pagina de volgende statistieken weer:

  • Maximale verbindingssnelheid:de hoogste snelheid waarmee clients verbinding hebben gemaakt met HAProxy.
  • Maximale sessiesnelheid:de hoogste snelheid waarmee klanten sessies tot stand hebben gebracht, dit zijn entiteiten die de status van een end-to-end-verbinding hebben.
  • Maximale verzoeksnelheid:de hoogste snelheid waarmee HTTP-verzoeken zijn ontvangen via gevestigde verbindingen.

De kolom 'Limiet' toont het maximale aantal sessies per seconde dat de frontend zal accepteren, zoals ingesteld door de instelling voor het aantal sessies met de snelheidslimiet. Als deze limiet wordt overschreden, worden extra verbindingen in behandeling gehouden in de achterstand van de socket.

Backend

Deze statistieken tonen de snelheid waarmee verbindingen worden gemaakt met een server.

De kolom “Cur” toont de huidige snelheid, per seconde, waarmee verbindingen tot stand worden gebracht met de server. De kolom "Max" toont de hoogste snelheid waarmee ooit verbindingen tot stand zijn gebracht met de gegeven server. De kolom “Limiet” wordt hier niet gebruikt.

Sessies

Frontend

Deze sectie telt het aantal sessies, of volledige client-naar-server-verbindingen, in gebruik op de load balancer.

De kolom 'Cur' toont het huidige aantal gevestigde sessies. De kolom "Max" toont de meeste sessies die ooit gelijktijdig zijn opgezet. De kolom "Limit" toont de meest gelijktijdige sessies die zijn toegestaan, zoals gedefinieerd door de maxconn-instelling in de frontend. Die specifieke frontend stopt met het accepteren van nieuwe verbindingen wanneer deze limiet is bereikt. Als maxconn niet is ingesteld, is "Limit" hetzelfde als de maxconn-waarde in het algemene gedeelte van uw configuratie. Als dat niet is ingesteld, is de waarde gebaseerd op uw systeem. Wanneer u de muisaanwijzer over de kolom 'Totaal' beweegt, geeft de pagina de volgende statistieken weer:

  • Sperma. verbindingen:het cumulatieve aantal verbindingen dat tot stand is gebracht sinds HAProxy voor het laatst opnieuw is geladen.
  • Sperma. sessies:cumulatief aantal sessies (end-to-end-verbindingen) tot stand gebracht sinds de laatste keer opnieuw laden.
  • Sperma. HTTP-verzoeken:cumulatief aantal HTTP-verzoeken sinds de laatste keer opnieuw laden.
  • HTTP xxx-reacties:totaal aantal HTTP-verzoeken dat een xxx-reactie heeft ontvangen.
  • Gecomprimeerd 2xx:totaal aantal 2xx reacties dat is gecomprimeerd, als compressie is ingeschakeld. Het toont ook het percentage verzoeken dat is gecomprimeerd.
  • Andere reacties:totaal aantal HTTP-verzoeken dat een reactie heeft ontvangen die niet onder de andere statistieken valt.
  • Onderschepte verzoeken:totaal aantal verzoeken dat is onderschept en doorgestuurd naar de HAProxy-statistiekenpagina.

De kolommen “LbTot” en “Laatste” worden in deze sectie niet gebruikt.

Backend

Deze sectie toont het aantal huidige verbindingen met een van de actieve servers.

De kolom “Cur” geeft het aantal actieve verbindingen met een server weer. De kolom "Max" toont de meeste verbindingen die ooit gelijktijdig tot stand zijn gebracht met de opgegeven server. De kolom "Limit" toont het maximum aantal toegestane verbindingen voor een server, zoals ingesteld door de maxconn-parameter op een serverlijn.

De backend-rij toont de waarde van fullconn voor "Limit" of, indien niet ingesteld, gebruikt deze de volgende formule:Som van de Sessions Limit-waarden voor frontends die naar deze backend leiden, gedeeld door 10. De kolom "Totaal" toont het cumulatieve aantal verbindingen dat de opgegeven server heeft gebruikt. Wanneer u de muisaanwijzer over dit veld beweegt, geeft de pagina de volgende statistieken weer:

  • Sperma. sessies:cumulatief aantal verbindingen tot stand gebracht met deze server.
  • Sperma. HTTP-reacties:cumulatief aantal ontvangen HTTP-reacties van deze server.
  • HTTP xxx-reacties:totaal aantal HTTP xxx-reacties van deze server.
  • Andere reacties:totaal aantal HTTP-reacties dat niet wordt gedekt door de andere statistieken.
  • Wachtrijtijd:de hoeveelheid tijd in milliseconden dat een verbinding in de wachtrij bleef staan ​​tijdens het wachten op een verbindingsslot naar de server, gemiddeld over de laatste 1024 succesvolle verbindingen.
  • Verbindingstijd:de hoeveelheid tijd in milliseconden die nodig was om verbinding te maken met de server, gemiddeld over de laatste 1024 succesvolle verbindingen.
  • Responstijd:de responstijd van de server in milliseconden, gemiddeld over de laatste 1024 succesvolle verbindingen.
  • Totale tijd:de totale sessietijd in milliseconden, gemiddeld over de laatste 1024 succesvolle verbindingen.

De kolom "LbTot" toont het totale aantal keren dat de opgegeven server is geselecteerd om een ​​verzoek te behandelen. Dit kan te wijten zijn aan normale taakverdeling of aan een herverzending vanaf een defecte server. De kolom "Laatste" toont de tijd sinds de laatste verbinding werd ontvangen.

Bytes

Frontend

In deze sectie wordt de cumulatieve hoeveelheid gegevens weergegeven die tussen HAProxy en clients zijn verzonden en ontvangen. De kolom "In" toont het totale aantal ontvangen bytes en de kolom "Out" toont het totale aantal verzonden bytes.

Backend

In deze sectie wordt de hoeveelheid gegevens weergegeven die tussen HAProxy en de server is verzonden en ontvangen. De kolom "In" toont het aantal bytes dat naar de server is verzonden. De kolom "Uit" toont het aantal terugontvangen bytes.

Geweigerd

Het toont het aantal verzoeken en reacties dat is afgewezen vanwege veiligheidsproblemen in zowel de frontend- als de backend-sectie.

Frontend

De kolom 'Verzoek' toont het aantal verzoeken dat is geweigerd vanwege configuratierichtlijnen (http-verzoek weigeren, http-verzoek weigeren, enz.) die in de sectie Frontend of Luisteren zijn geplaatst.

De kolom "Resp" toont het aantal reacties dat is geweigerd door een http-response deny-instructie die in een frontend of listen is geplaatst.

Backend

De kolom 'Req' is alleen van toepassing op de backend als geheel. Het toont het aantal verzoeken dat is afgewezen door configuratierichtlijnen (http-request deny, http-request reject, etc) in een backend.

De kolom "Resp" toont het aantal reacties dat voor een bepaalde server is afgewezen vanwege configuratierichtlijnen voor http-response deny of tcp-response content weigering in een backend.

Fouten

Frontend

Alleen de kolom “Req” wordt hier gebruikt. Het toont het aantal verzoeken waarbij een fout is opgetreden.

Mogelijke oorzaken zijn:

  • Vroegtijdige beëindiging door de klant
  • Een leesfout van de klant
  • Time-out voor client
  • De klant heeft de verbinding verbroken
  • De klant heeft een onjuist opgemaakt verzoek verzonden
  • Het verzoek is afgewezen

Backend

Het toont het aantal fouten met betrekking tot communicatie met een backend-server.

De kolom “Req” wordt niet gebruikt. De kolom "Conn" toont het aantal verzoeken waarbij een fout is opgetreden tijdens het proberen verbinding te maken met de server. De kolom "Resp" toont fouten die zijn opgetreden tijdens het ontvangen van het antwoord.

Waarschuwingen

Backend

Alleen voor backends. In deze sectie wordt het aantal nieuwe pogingen en herverzendingen weergegeven. Als u een richtlijn voor nieuwe pogingen aan uw backend heeft toegevoegd, toont de kolom "Retr" het totale aantal keren dat een verbinding opnieuw is geprobeerd. De kolom "Redis" toont het aantal keren dat HAProxy er niet in slaagde een verbinding met een server tot stand te brengen en deze opnieuw naar een andere server te verzenden. Hiervoor moet u een instructie voor het opnieuw verzenden van een optie hebben toegevoegd.

Server

Frontend

Het enige veld uit deze sectie dat van toepassing is op een frontend is het veld Status. Wanneer Status OPEN is, werkt de frontend normaal en is deze klaar om verkeer te ontvangen.

Backend

Deze sectie toont details over de status, gezondheid en het gewicht van elke server. In de kolom "Status" wordt weergegeven of de server momenteel actief is en voor hoe lang. Het kan een van de volgende statussen weergeven:

  • UP:de server rapporteert als gezond.
  • DOWN:de server meldt dat deze niet in orde is en kan geen verzoeken ontvangen.
  • NOLB:u heeft http-check disable-on-404 aan de backend toegevoegd en de op gezondheid gecontroleerde URL heeft een HTTP 404-reactie geretourneerd.
  • ONDERHOUD:de server is uitgeschakeld of in onderhoudsmodus gezet.
  • DRAIN:de server is in de afvoermodus gezet.
  • geen controle:statuscontroles zijn niet ingeschakeld voor deze server.

De kolom “LastChk” toont een waarde zoals L7OK/200 in Xms. Die waarde betekent dat er een Layer 7-gezondheidscontrole is uitgevoerd; het retourneerde een HTTP 200 OK-antwoord en deed dit binnen X milliseconde.

De "Wght"-kolom toont het deel van het verkeer dat het zal accepteren, zoals ingesteld door de gewichtsparameter op de serverregel. In de kolom "Act" wordt weergegeven of de server actief is (gemarkeerd met een Y) of een back-up (gemarkeerd met een -). De kolom "Bck" laat zien of de server een back-up is (gemarkeerd met een Y) of actief is (gemarkeerd met een -).

De kolom 'Chk' toont het aantal mislukte statuscontroles. De kolom “Dwn” toont het aantal overgangen van OMHOOG naar OMLAAG. De kolom "Dwntme" laat zien hoe lang de server niet beschikbaar is geweest.

Als je een slowstart-parameter aan een serverregel hebt toegevoegd, en wanneer je die server uitschakelt en later weer inschakelt, toont de kolom 'Thrtle' het percentage verkeer dat de server accepteert. Het percentage zal geleidelijk stijgen tot 100% gedurende de periode die je hebt ingesteld.

Deze informatie is gebaseerd op een HAProxy-blogbericht dat u kunt raadplegen voor meer gedetailleerde informatie.

HAProxy op ClusterControl

Behalve implementatie en beheer biedt ClusterControl ook inzicht in HAProxy-statistieken en realtime dashboards vanuit de gebruikersinterface. Vanuit ClusterControl hebt u toegang tot de statistiekenpagina op ClusterControl -> Selecteer Cluster -> Knooppunten -> kies het HAProxy-knooppunt vergelijkbaar met onderstaande schermafbeelding:

U kunt een server in-/uitschakelen van de taakverdeling door aan/uit te vinken de checkbox-knop onder de kolom "Ingeschakeld". Dit is erg handig als u wilt dat uw toepassing de verbinding met een server opzettelijk overslaat, bijvoorbeeld voor onderhoud of voor het testen en valideren van nieuwe configuratieparameters of geoptimaliseerde zoekopdrachten.

U kunt uw HAProxy-servers ook vanuit ClusterControl controleren door het gedeelte Dashboard te bekijken.

Om het in te schakelen, hoeft u alleen maar naar ClusterControl -> Cluster selecteren te gaan -> Dashboards -> Controle op basis van agenten inschakelen. Dit zal een agent op elk knooppunt inzetten om alle informatie te krijgen om de bijbehorende grafieken te genereren.

Hier ziet u niet alleen alle benodigde statistieken om de HAProxy-node te bewaken, maar ook om de hele omgeving te bewaken met behulp van de verschillende Dashboards.

Conclusie

HAProxy is een goed en krachtig hulpmiddel om de prestaties van uw database en applicatie te verbeteren. Het is ook handig om High Availability en Failover aan uw omgeving toe te voegen. Om te weten wat er in uw HAProxy-knooppunt gebeurt, moet u de statistieken begrijpen die worden gemonitord op de pagina met statistieken, of deze monitoring zelfs verbeteren door een dashboard toe te voegen om het gebruiksvriendelijker te maken.

In deze blog hebben we elke statistiek uitgelegd die wordt genoemd op de HAProxy-statistiekenpagina, en we hebben ook laten zien hoe deze eruitziet op ClusterControl, waar u vanuit hetzelfde systeem toegang hebt tot zowel statistieken als HAProxy-dashboards.


  1. 11 manieren om een ​​primaire sleutel in SQL Server op te halen (T-SQL-voorbeelden)

  2. Kan geen verbinding maken met heroku postgresql-database vanuit de lokale node-app met sequelize

  3. PostgreSQL's date_trunc in mySQL

  4. MySQL kan geen beperking voor externe sleutels toevoegen