GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So richten Sie HAProxy als Load Balancer für Nginx in CentOS 7 ein

Geschrieben in C von Willy Tarreau, HAProxy, auch bekannt als High Availability Proxy, ist ein schneller und leichter HTTP-Load-Balancer und Proxy-Server. Es hat eine geringe CPU-Auslastung und wird durch einen geringen Speicherbedarf verursacht. Der Load Balancer wird von beliebten Websites wie StackOverflow, Twitter, Github und Tumblr verwendet, um nur einige zu nennen.

In dieser Anleitung zeigen wir Ihnen, wie Sie HAProxy als Load Balancer für Nginx-Webserver unter CentOS 7 einrichten. Der Load Balancer sitzt vor 2 Nginx-Webservern und verteilt HTTP-Anforderungen gerecht an die Server.

HAProxy-Balance-Algorithmus

Dies ist der Algorithmus, den der Load Balancer zur Auswahl der Webserver beim Verteilen von Arbeitslasten verwendet.

1. Roundrobin

Dies ist der einfachste der Algorithmen. Grundsätzlich wird jede neue Verbindung vom nächsten Webserver verarbeitet. Wenn Sie beispielsweise 4 Back-End-Server haben, verarbeitet jeder von ihnen Anfragen nacheinander. Wenn der letzte Webserver auf der Liste erreicht ist, beginnt der Load Balancer wieder ganz oben mit dem ersten Webserver.

2. Lastconn

Hier wird eine neue Anfrage von dem Server mit der geringsten Anzahl von Verbindungen bearbeitet. Dies ist praktisch, wenn Last und Zeiten von Anfragen stark voneinander abweichen.

Erste Schritte

Führen Sie zu Beginn eine Checkliste vor dem Flug durch und stellen Sie sicher, dass Sie Folgendes haben.

1. CentOS 7-Server

Hostname IP-Adresse des Servers
Load-Balancer 173.82.168.96
webserver-1 173.82.2.236
webserver-2 173.82.94.57

2. SSH-Zugriff auf alle Server

Nachfolgend finden Sie eine grafische Darstellung des Setups.

Schritt 1:Datei /etc/hosts im Load Balancer konfigurieren

Melden Sie sich mit SSH beim Load Balancer an und fügen Sie die IP-Adressen und Hostnamen der Nginx-Webserver wie gezeigt hinzu.

vim /etc/hosts


173.82.2.236    web-server-1

173.82.94.57    web-server-2

Speichern und beenden Sie den vim-Texteditor.

Melden Sie sich als Nächstes bei jedem der Webserver (Webserver-1 und Webserver-2) an und bearbeiten Sie /etc/hosts Datei auf den Load Balancer verweisen.


173.82.168.96   load-balancer

Speichern und beenden Sie den Texteditor.

Schritt 2:Installieren und konfigurieren Sie HAProxy auf dem Load-Balancer-Server

Das HAProxy-Repository ist im CentOS-Repository verfügbar. Um HAProxy zu installieren und einzurichten, melden Sie sich zuerst an und aktualisieren Sie die System-Repositories.

 yum update -y

Als nächstes installieren Sie HAProxy mit dem Befehl:

yum -y install haproxy

Beispielausgabe

Sobald die Installation erfolgreich und abgeschlossen ist, gehen Sie zum haproxy-Verzeichnis.

cd /etc/haproxy

Sichern Sie die haproxy.cfg Datei, indem Sie sie in haproxy.cfg.bak umbenennen

mv haproxy.cfg  haproxy.cfg.bak

Als nächstes erstellen Sie eine neue HAproxy-Konfigurationsdatei.

vim haproxy.cfg


#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    log         127.0.0.1 local2     #Log configuration

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy             #Haproxy running under user and group "haproxy"
    group       haproxy
    daemon

    # turn on stats unix socket
    stats socket /var/lib/haproxy/stats

#---------------------------------------------------------------------
# common defaults that all the 'listen' and 'backend' sections will
# use if not designated in their block
#---------------------------------------------------------------------
defaults
    mode                    http
    log                     global
    option                  httplog
    option                  dontlognull
    option http-server-close
    option forwardfor       except 127.0.0.0/8
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

#---------------------------------------------------------------------
#HAProxy Monitoring Config
#---------------------------------------------------------------------
listen haproxy3-monitoring *:8080                #Haproxy Monitoring run on port 8080
    mode http
    option forwardfor
    option httpclose
    stats enable
    stats show-legends
    stats refresh 5s
    stats uri /stats                             #URL for HAProxy monitoring
    stats realm Haproxy\ Statistics
    stats auth Password123: Password123            #User and Password for login to the monitoring dashboard
    stats admin if TRUE
    default_backend app-main                    #This is optionally for monitoring backend

#---------------------------------------------------------------------
# FrontEnd Configuration
#---------------------------------------------------------------------
frontend main
    bind *:80
    option http-server-close
    option forwardfor
    default_backend app-main

#---------------------------------------------------------------------
# BackEnd round robin as balance algorithm
#---------------------------------------------------------------------
backend app-main
    balance roundrobin                                     #Balance algorithm
    option httpchk HEAD / HTTP/1.1\r\nHost:\ localhost    #Check the server application is up and healty - 200 status code
    server web-server-1 173.82.2.236:80 check                 #Nginx1
    server web-server-2 173.82.94.57:80 check                 #Nginx2

Notieren Sie sich die Webserver, die in den letzten 2 Zeilen angegeben wurden, wie in der Ausgabe gezeigt.

Speichern und beenden Sie den Texteditor.

Als nächstes werden wir das rsyslog konfigurieren Daemon zum Protokollieren der HAProxy-Statistiken.

Bearbeiten Sie die rsyslog.conf Datei, damit der UDP-Port 514 von rsyslog verwendet werden kann.

vim /etc/rsyslog.conf

Um eine UDP-Verbindung über Port 154 zuzulassen, kommentieren Sie die folgenden Zeilen aus.


$ModLoad imudp
$UDPServerRun 514

Speichern und beenden Sie den Texteditor.

Als nächstes erstellen Sie eine neue HAProxy-Konfigurationsdatei für syslog.

vim  /etc/rsyslog.d/haproxy.conf

Fügen Sie die folgende Konfiguration ein


local2.=info     /var/log/haproxy-access.log    #For Access Log
local2.notice    /var/log/haproxy-info.log      #For Service Info - Backend, loadbalancer

Speichern und beenden Sie den Texteditor.

Fahren Sie fort und starten Sie rsyslog neu.

systemctl restart rsyslog

Starten Sie als Nächstes Haproxy und aktivieren Sie es, um beim Hochfahren zu starten.


systemctl start haproxy
systemctl enable haproxy

Um zu bestätigen, dass HaProxy betriebsbereit ist, führen Sie Folgendes aus:

systemctl status haproxy

Im nächsten Schritt werden wir Nginx auf unseren Webservern installieren.

Schritt 3:Nginx installieren und konfigurieren

Der einzige entscheidende Schritt, der noch bleibt, ist die Installation von Nginx auf jedem unserer Webserver.

Aber installieren Sie zuerst das EPEL-Repository wie gezeigt

yum install epel-release

Als nächstes installieren Sie Nginx

yum install nginx -y

Beispielausgabe

Wenn Nginx auf beiden Servern installiert ist, werden wir die index.html ändern Dateien in jedem der Nginx-Webserver, um bei der Simulation mit dem HAproxy-Load-Balancer eine Unterscheidung zwischen den einzelnen Servern zu erstellen.

Wechseln Sie wie gezeigt in das HTML-Verzeichnis:

cd /usr/share/nginx/html/

Sichern Sie die index.html-Datei

mv index.html index.html.bak

Erstellen Sie als Nächstes eine neue index.html-Datei und fügen Sie einige Beispielinhalte ein.

Für Webserver 1

echo "web-server-1. Hey ! This is your first web server" > index.html 

Für Webserver 2

echo "web-server-2. Hey ! This is your second web server" > index.html 

Starten Sie als Nächstes Nginx auf beiden Webservern und bestätigen Sie, ob der Dienst ausgeführt wird


systemctl start  nginx
systemctl status nginx

Load-Balancing testen

Um zu überprüfen, ob alles geklappt hat, führen Sie den folgenden Befehl wiederholt aus.

curl 173.82.168.96

Ihre Ausgabe sollte ungefähr so ​​aussehen.

Wie Sie genau beobachten können, wechselt die Ausgabe bei jedem weiteren Ausführen des Befehls curl zwischen dem ersten und dem zweiten Inhalt des Webservers Perfekt!

Lassen Sie uns nun versuchen, mit dem Webbrowser zu testen.

https://load-balancer-IP-address

Dadurch wird der Inhalt auf einem der Webserver angezeigt, in diesem Fall Webserver-2.

Versuchen Sie jetzt ein- oder zweimal zu aktualisieren, und die Ausgabe zeigt auf den anderen Webserver, in diesem Fall web-server-1.

Genial! Dies bestätigt, dass unser Load Balancer in der Lage ist, HTTP-Anfragen gerecht zwischen unseren Webservern zu verteilen.

Um weitere Statistiken des Load-Balancer-Browsers zu sammeln, verwenden Sie die folgende URL

https://load-balancer-IP:8080/stats

Verwenden Sie das Passwort123 als Benutzernamen und Passwort, wie wir es in haproxy.cfg definiert haben Konfigurationsdatei.

Dies fasst dieses Tutorial zum Einrichten des HAProxy-Load-Balancers für Nginx unter CentOS 7 zusammen. Probieren Sie es gerne aus und teilen Sie dieses Handbuch in Ihren sozialen Netzwerken. Wie immer wird Ihr Feedback geschätzt.


Linux
  1. So konfigurieren Sie NGINX als TCP/UDP-Load-Balancer unter Linux

  2. So richten Sie HAProxy in Ubuntu 16.04 ein

  3. So konfigurieren Sie den HAProxy-Load-Balancer

  4. Wie richte ich einen NTP-Server in CentOS ein?

  5. Wie richte ich VSFTPD unter CentOS 7.x ein?

So richten Sie Nginx als Reverse Proxy für Apache auf Ubuntu 18.04 VPS ein

So richten Sie HAProxy unter CentOS 8 ein

Wie installiere ich Nginx unter CentOS 7?

So richten Sie einen NGINX RTMP-Server für das Streaming ein

So installieren Sie Nginx unter CentOS 8

So richten Sie Traefik Load Balancer mit Docker in Ubuntu 20.04 ein