Technologieaustausch

Haproxy baut Webcluster auf

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1: Fallanalyse

1: Fallübersicht

2: Vorfallwissen

3: Fallumgebung

2: Fallimplementierung

1: Kompilieren und installieren Sie den Nginx-Server (die Schritte für die beiden Nginx-Websites sind genau gleich, nur die Testseite ist unterschiedlich)

[root@localhost ~]# yum -y installiere pcre-devel zlib-devel gcc*

[root@localhost ~]# useradd -M -s /sbin/nologin nginx

[root@localhost ~]# tar zxvf nginx-1.12.0.tar.gz

[root@localhost ~]# cd nginx-1.12.0/

[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module

[root@localhost nginx-1.12.0]# make && make install

[root@localhost nginx-1.12.0]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/

[root@localhost nginx-1.12.0]# cd /usr/local/nginx/html/0

[root@localhost html]# echo "test web01" > test.html

[root@localhost ~]# systemctl stoppe Firewall

[root@localhost ~]# nginx -t

[root@localhost ~]# nginx ##Starten Sie den Nginx-Prozess

[root@localhost ~]# netstat -anpt | grep nginx

2: Kompilieren und installieren Sie Haproxy

[root@localhost ~]# systemctl stoppe Firewall

[root@localhost ~]# setenforce 0

[root@localhost ~]# yum -y installiere pcre-devel bzip2-devel gcc*

[root@localhost ~]# tar zxvf haproxy-1.5.19.tar.gz

[root@localhost ~]# cd haproxy-1.5.19/

[root@localhost haproxy-1.5.19]# make TARGET=linux26

[root@localhost haproxy-1.5.19]# make install

Notiz:

linux22 für Linux 2.2

linux24 für Linux 2.4 und höher (Standard)

linux24e für Linux 2.4 mit Unterstützung für ein funktionierendes Epoll (> 0.21)

linux26 für Linux 2.6 und höher

Solaris für Solaris 8 oder 10 (andere ungetestet)

freebsd für FreeBSD 5 bis 8.0 (andere ungetestet)

openbsd für OpenBSD 3.1 bis 4.6 (andere ungetestet)

cygwin für Cygwin

generisch für jedes andere Betriebssystem.

Benutzerdefiniert, um jede Einstellung manuell anzupassen

3: Haproxy-Serverkonfiguration

(1) Erstellen Sie eine Haproxy-Konfigurationsdatei

[root@localhost haproxy-1.5.19]# mkdir /etc/haproxy

[root@localhost haproxy-1.5.19]# cp Beispiele/haproxy.cfg /etc/haproxy/

(2) Erstellen Sie ein Dienstskript

[root@localhost haproxy-1.5.19]# cp Beispiele/haproxy.init /etc/init.d/haproxy

[root@localhost haproxy-1.5.19]# ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

[root@localhost haproxy-1.5.19]# chmod +x /etc/init.d/haproxy

[root@localhost ~]# chkconfig --add haproxy

(3) Einführung in die Haproxy-Konfiguration

[root@localhost haproxy-1.5.19]# vi /etc/haproxy/haproxy.cfg

weltweit

Protokoll 127.0.0.1 local0

Protokoll 127.0.0.1 local1 Hinweis

#log loghost local0 info

maxconn 4096

Flüssigkeit 99

99.

Daemon

#debuggen

#ruhig

Vorgabewerte

globales Protokoll

Modus http

Option httplog

Option dontlognull

Wiederholungsversuche 3

# erneut versenden

maxconn 2000

Zeitüberschreitung 5000

klimatimeout 50000

Serverzeitüberschreitung 50000

hören Sie Webcluster 0.0.0.0:80

Option httpchk GET /index.html

Rundenturnier

Server inst1 192.168.1.61:80 überprüfen Sie Inter 2000 Fall 3

Server inst2 192.168.1.62:80 überprüfen Sie Inter 2000 Fall 3

Sie können nach jedem Server eine Gewichtung hinzufügen, um den Gewichtungswert festzulegen.

Server inst1 192.168.1.61:80 überprüfen Sie Inter 2000 Fall 3Gewicht 1

Server inst2 192.168.1.62:80 überprüfen Sie Inter 2000 Fall 3Gewicht 2

Erläuterung jeder Aussage

weltweit

Protokoll 127.0.0.1 local0 \Protokollierung konfigurieren,lokal0Ist das Protokollgerät, der Standardwert ist Systemprotokoll

Protokoll 127.0.0.1 local1 Hinweis \Die Protokollebene istbeachten

#log loghost local0 info

maxconn 4096 \Maximale Anzahl an Verbindungen

UID 99 \BenutzerBenutzerkennung

gid 99 \Benutzergid

Daemon \Als Daemon-Prozess ausführen

#debug \Debug-Modus, Startinformationen an die Standardausgabe ausgeben

#ruhig \Leiser Modus, keine Ausgabe beim Start

Vorgabewerte

log global \verwendenglobleProtokoll definiert in

Modus http \Der Modus isthttp

Option httplog \verwendenhttpDas Format der Protokollierung

Option dontlognull \sicherstellenHAProxyZeichnen Sie nicht die vom Load Balancer der oberen Ebene gesendeten Heartbeat-Pakete auf, um Statusdaten zu erkennen.

Wiederholungsversuche 3 \Überprüfen Sie die Anzahl der Knotenverbindungsfehler, die überschritten wird3Der Knoten gilt als nicht verfügbar

  # erneut versenden\beim LadenWenn der Wert sehr hoch ist, werden Verbindungen, die über einen längeren Zeitraum in der aktuellen Warteschlange verarbeitet wurden, automatisch beendet.

maxconn 2000 \Maximale Anzahl an Verbindungen

Zeitüberschreitung 5000 \VerbindungszeitüberschreitungMS

klimatimeout 50000Client-TimeoutMS

Serverzeitüberschreitung 50000Server-TimeoutMS

hören Sie Webcluster 0.0.0.0:80 \Definieren Sie Cluster- und Überwachungsportnummern

Option httpchk GET /index.html \Überprüfen Sie die des ServersHauptseitedokumentieren,URL-Einstellungen für die Heartbeat-Erkennung

Bilanz-Roundrobin \Der Planungsalgorithmus für den Lastausgleich ist ein Round-Robin-Algorithmus

Server inst1 192.168.1.61:80 überprüfen inter 2000 Herbst 3 \Online-Knoten definieren

Server inst2 192.168.1.62:80 überprüfen Sie Inter 2000 Fall 3

Überprüfen Sie Inter 2000besteht darin, die Herzschlagfrequenz zu erkennen (jeden2000 msEinmal erkannt),Herbst 3Ja3Bei einem Ausfall gilt der Server als nicht verfügbar

In der neuen Version wurden die Timeout-Einstellungen wie folgt angepasst:

contimeout wird durch timeout connect ersetzt:Definieren Sie den Timeout-Zeitraum, den Haproxy auf die Weiterleitung von Client-Anfragen an den Backend-Server wartet

clitimeout wird durch timeout client ersetzt:Das Timeout für Client-Inaktivität ist die Zeit, die die App benötigt, um eine Verbindung zu Haproxy herzustellen

srvtimeout wird durch timeout server ersetzt:Nachdem der Client eine Verbindung mit dem Server hergestellt hat, ist die Wartezeit für den Server die Zeit, die Haproxy benötigt, um eine Verbindung zum Backend-Webserver herzustellen.

Notiz:

AbonnierenEs gibt acht Planungsalgorithmen

    1. Leastconn-GleichgewichtMindestanzahl an Verbindungen
    2. RundenturnierUmfrage
    3. Balance-QuelleNach Angaben des KundenIPWie man Hashing durchführt
    4. statisches rrNach Gewicht
    5. uriauf AnfrageURI
    6. URL-Parameterauf AnfrageURLParameter
    7. hdr(Name)entsprechendHTTPAnforderungsheader, jedes Mal zu sperrenHTTPfragen
    8. rdp-cookie(Name)entsprechendKeks(Name)jedes Mal sperren und hashenTCPfragen

chroot /usr/share/haproxy \Das heißt, den Speicherort des Stammverzeichnisses zu ändern, auf den verwiesen wird, wenn das Programm ausgeführt wird. Wenn Sie über diesen Code verfügen, müssen Sie dieses Verzeichnis erstellen.

Über Protokollebenen

statische Ebene DEBUG

DEBUG Level weist darauf hin, dass feinkörnige Informationsereignisse für das Debuggen von Anwendungen sehr hilfreich sind.

statische Ebene INFO

Die INFO-Ebene gibt an, dass die Nachricht den laufenden Prozess der Anwendung auf einer grobkörnigen Ebene hervorhebt.

statischer Pegel WARN

Die Stufe WARN weist auf eine mögliche Fehlersituation hin.

statischer Level FEHLER

Die Stufe „FEHLER“ gibt an, dass ein Fehlerereignis zwar auftritt, sich jedoch nicht auf den weiteren Betrieb des Systems auswirkt.

statisches Niveau FATAL

Die Stufe FATAL gibt an, dass jedes schwerwiegende Fehlerereignis zum Beenden der Anwendung führt.

Darüber hinaus stehen zwei spezielle Protokollierungsstufen zur Verfügung:

statische Ebene ALLE

ALL Level ist die niedrigste Ebene und wird verwendet, um die gesamte Protokollierung zu aktivieren.

statischer Pegel AUS

OFF Level ist die höchste Stufe und wird verwendet, um die gesamte Protokollierung auszuschalten.

4: Starten

[root@localhost haproxy-1.5.19]# /etc/init.d/haproxy start

5: Testen Sie den Webcluster

http://192.168.1.60/test.html

Aktualisieren Sie die Seite zum Testen

oder mit Skript testen

[root@localhost ~]# für i in $(seq 10); führe curl http://192.168.1.60/test.html aus; fertig

6: Haproxy-Protokoll

Haproxy zeichnet standardmäßig keine Protokolle auf. Zusätzlich zur Angabe der Protokollausgabe im globalen Abschnitt in haproxy.conf müssen Sie auch die Systemprotokollkonfigurationsdatei konfigurieren.

Methode eins:

[root@localhost haproxy-1.4.24]# vi /etc/haproxy/haproxy.cfg

weltweit

# Protokoll 127.0.0.1 local0

# log 127.0.0.1 local1 Hinweis

#log loghost local0 info

maxconn 4096

chroot /usr/share/haproxy

Flüssigkeit 99

99.

Daemon

#debuggen

#ruhig

log /dev/log local0 info

log /dev/log local0 Hinweis

[root@localhost haproxy-1.4.24]# touch /etc/rsyslog.d/haproxy.conf

[root@localhost haproxy-1.4.24]# vi /etc/rsyslog.d/haproxy.conf

wenn ($programname == 'haproxy' und $syslogseverity-text == 'info') dann -/var/log/haproxy/haproxy-info.log

& ~

wenn ($programname == 'haproxy' und $syslogseverity-text == 'notice') dann -/var/log/haproxy/haproxy-notice.log

& ~

[root@localhost haproxy-1.4.24]# Dienst rsyslog neu starten

[root@localhost ~]#/etc/init.d/haproxy neu starten

[root@localhost ~]# cat /var/log/haproxy/haproxy-info.log

Methode Zwei:

(1) Bearbeiten Sie /etc/haproxy/haproxy.conf

[root@localhost ~]# vi /etc/haproxy/haproxy.cfg

weltweit

Protokoll 127.0.0.1 local3

#local3 ist das Gerät, entsprechend der Konfiguration in /etc/rsyslog.conf, und die Protokollebene der Informationen wird standardmäßig recycelt.

(2) Schreiben Sie eine Haproxy-Protokolldatei

[root@localhost ~]# vim /etc/rsyslog.d/haproxy.conf

$ModLoad imudp

$UDPServerRun 514

local3.* /var/log/haproxy.log

&~

Notiz:

$ModLoad imudpProtokoll UDP zum Sammeln von Protokollen

$UDPServerRun 514Geben Sie die Portnummer an, die für die Protokollerfassung verwendet wird

local3.* /var/log/haproxy.logGeben Sie den Speicherort für das Protokoll an

(3) Konfigurieren Sie die Hauptkonfigurationsdatei von rsyslog und aktivieren Sie die Remote-Protokollierung (optional).

[root@localhost ~]# vim /etc/sysconfig/rsyslog

SYSLOGD_OPTIONS=”-c 2 -r -m 0″

#-c 2 Kompatibilitätsmodus verwenden, der Standardwert ist -c 5

#-r Remote-Protokollierung aktivieren

#-m 0 markiert den Zeitstempel.Die Einheit ist Minuten. Wenn sie 0 ist, bedeutet dies, dass die Funktion deaktiviert ist.

(4) Starten Sie die Haproxy- und Rsyslog-Dienste neu

[root@localhost ~]# systemctl rsyslog neu starten

[root@localhost ~]# systemctl restart haproxy

(5) Überprüfen Sie das Protokoll nach dem Besuch der Website

[root@localhost ~]# cat /var/log/haproxy.log

Erweiterung: Proxy-MySQL

hören Sie MySQL 0.0.0.0:3306

Server MySQL1 192.168.10.205:3306 Überprüfen Sie Port 3306 Maxconn 300