GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

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

HAProxy oder High Availability Proxy ist eine Open-Source-TCP- und HTTP-Load-Balancer- und Proxy-Server-Software. HAProxy wurde von Willy Tarreau in C geschrieben, es unterstützt SSL, Komprimierungen, Keep-Alive, benutzerdefinierte Protokollformate und Überschreiben von Headern. HAProxy ist ein schneller und leichter Proxy-Server und Load Balancer mit geringem Speicherbedarf und geringer CPU-Auslastung. Es wird von großen Websites wie Github, StackOverflow, Reddit, Tumblr, Twitter und anderen verwendet. Es hat sich in den letzten Jahren zum beliebtesten Software-Load-Balancer und Proxy-Server entwickelt.

In diesem Tutorial werde ich Sie durch die Installation und Konfiguration von HAProxy für 3 Server, einen Load Balancer und zwei Nginx-Webserver führen. Wir werden HAProxy auf einem einzelnen Server installieren und dann den Nginx-Webserver auf den anderen Servern installieren. HAProxy fungiert als Load Balancer für die Nginx-Webserver.

Basiskonzept mit HAProxy

Schicht 4 und Schicht 7

HAProxy kann in zwei Modi ausgeführt werden:TCP-Modus Layer 4 und HTTP-Modus Layer 7. Im Layer-4-TCP-Modus leitet HAProxy die RAW-TCP-Pakete vom Client an die Anwendungsserver weiter. Im Layer-7-HTTP-Modus analysiert HAProxy den HTTP-Header, bevor er sie an die Anwendungsserver weiterleitet. In diesem Tutorial verwenden wir Nginx als Webserver, der nur den Layer-7-HTTP-Modus unterstützt.

Balance-Algorithmus

Dies ist der Algorithmus, der von HAProxy verwendet wird, um den Server beim Lastenausgleich auszuwählen. Die folgenden Modi sind verfügbar:

Roundrobin

Dies ist der einfachste Ausgleichsalgorithmus. Jede neue Verbindung wird vom nächsten Backend-Server verarbeitet. Wenn der letzte Backend-Server in der Liste erreicht ist, beginnt er wieder am Anfang der Backend-Liste.

Lastconn

Die neue Verbindung wird vom Back-End-Server mit der geringsten Anzahl von Verbindungen verarbeitet. Dies ist nützlich, wenn Zeit und Last der Anfragen stark variieren.

Quelle

Dies gilt für Sticky-Sessions, die Client-IP wird gehasht, um den Backend-Server zu ermitteln, der die letzte Anfrage von dieser IP erhalten hat. Eine IP A wird also immer von backend1 verarbeitet und IP B wird immer von banckend2 verarbeitet, um Sitzungen nicht zu unterbrechen

Es gibt andere Algorithmen – Einzelheiten finden Sie auf der offiziellen HAProxy-Website.

Voraussetzungen

  • 3 CentOS 7

Loadbalancer
            192.168.1.102

           nginx1
           192.168.1.104

            nginx2
            192.168.1.105

  • Root-Rechte auf allen 3 Servern.

Schritt 1 - Konfigurieren Sie die /etc/hosts-Dateien

Melden Sie sich beim Load-Balancer-Server an und bearbeiten Sie die Datei /etc/hosts.

ssh [email protected]
sudo su
vi /etc/hosts

nginx1- und nginx2-Hostnamen hinzufügen:

192.168.1.104    nginx1.loadbalancer.me     nginx1
192.168.1.105    nginx2.loadbalancer.me     nginx2

Speichern Sie die Datei und verlassen Sie den Editor.

Bearbeiten Sie als Nächstes die Hosts-Datei auf den Nginx-Servern (nginx1 und nginx2):

ssh [email protected]
ssh [email protected]

Bearbeiten und fügen Sie eine neue Zeile für den Load Balancer in den Hosts-Dateien hinzu:

vi /etc/host

Fügen Sie den Loadbalancer-Hostnamen auf jedem Nginx-Server hinzu:

192.168.1.102    loadbalancer

tun Sie dies auf den Servern nginx1 und nginx2.

Schritt 2 – HAProxy installieren und konfigurieren

HAProxy ist im CentOS 7-Repository verfügbar, melden Sie sich beim Loadbalancer-Server an und aktualisieren Sie die Paketlisten:

ssh [email protected]
yum -y update

Installieren Sie nun HAProxy mit diesem Yum-Befehl:

yum -y install haproxy

Wenn die Installation abgeschlossen ist, gehen Sie in das Verzeichnis "/etc/haproxy/" und sichern Sie die ursprüngliche Konfigurationsdatei:

cd /etc/haproxy/
mv haproxy.cfg haproxy.cfg.orig

Als nächstes fügen Sie mit dem vi-Editor eine neue HAProxy-Konfigurationsdatei „haproxy.cfg“ hinzu:

vi haproxy.cfg

Fügen Sie die Konfiguration unten ein:

#---------------------------------------------------------------------
# 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 howtoforge:howtoforge            #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 roundrobin 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 nginx1 192.168.1.104:80 check                 #Nginx1
    server nginx2 192.168.1.105:80 check                 #Nginx2

Speichern Sie die Konfigurationsdatei und beenden Sie.

Als nächstes konfigurieren Sie rsyslog für HAProxy.

Wir werden den rsyslog-Daemon konfigurieren, um die HAProxy-Statistiken zu protokollieren. Bearbeiten Sie die Datei rsyslog.conf, damit der UDP-Port 514 von rsyslog verwendet werden kann.

vi /etc/rsyslog.conf

Kommentieren Sie diese Zeile aus, um die UDP-Verbindung zu aktivieren:

$ModLoad imudp
$UDPServerRun 514

Wenn Sie eine bestimmte IP verwenden möchten, können Sie eine neue Zeile wie die folgende hinzufügen:

$UDPServerAddress 127.0.0.1

Speichern Sie die Datei und beenden Sie sie.

Erstellen Sie dann eine neue Haproxy-Konfigurationsdatei für rsyslog:

cd /etc/rsyslog.d/
vi haproxy.conf

Konfiguration unten einfügen:

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.

Starten Sie nun rsyslog neu und starten Sie dann den Haproxy:

systemctl restart rsyslog
systemctl start haproxy

Fügen Sie Haproxy hinzu, um beim Booten zu starten:

systemctl enable haproxy

Schritt 3 – Nginx installieren und konfigurieren

In diesem Abschnitt werden wir Nginx aus dem Epel-Repository auf den Servern nginx1 und nginx2 installieren.

Melden Sie sich bei den Servern an:

ssh [email protected]
ssh [email protected]

Installieren Sie das epel-Repository mit dem folgenden yum-Befehl:

yum -y install epel-release

Jetzt können Sie Nginx installieren:

yum -y install nginx

Nginx ist installiert. Gehen Sie in das Webverzeichnis und ändern Sie die Indexdatei, damit wir sehen können, welcher der beiden Server die HTML-Datei geliefert hat:

cd /usr/share/nginx/html/
echo "<h1>nginx1.loadbalance.me</h1>" > index.html     #For nginx1 server
echo "<h1>nginx2.loadbalance.me</h1>" > index.html     #For nginx2 server

Fügen Sie als Nächstes Nginx hinzu, um es beim Booten zu starten, und starten Sie es dann:

systemctl enable nginx
systemctl start nginx

Stellen Sie sicher, dass Sie diesen Schritt auf den Servern nginx1 und nginx2 ausführen.

Schritt 4 – Testen

Testen vom Browser durch Zugriff auf die Loadbalancer-IP:192.168.1.102

Testen mit Curl-Befehl:

curl 192.168.1.102

Testen der Anmeldung bei der HAProxy-Webüberwachung, die auf Port 8080 mit Benutzername und Passwort „howtoforge“ ausgeführt wird:

http://192.168.1.102:8080/stats

HAProxy arbeitet erfolgreich und fungiert als Load-Balancer für unsere beiden Nginx-Webserver.

Schlussfolgerung

HAProxy oder High Availability Proxy ist eine Open-Source-Software, die Hochverfügbarkeit für TCP-basierte Dienste bietet und als HTTP-Load-Balancer und Proxy-Server fungiert. Die Software ist in C geschrieben und unterstützt SSL, Keep-Alive und Komprimierung. HAProxy ist die richtige Wahl für alle, die einen schnellen und leichten Load Balancer und Proxy-Server mit geringem Speicherbedarf und geringer CPU-Auslastung benötigen. Haproxy kann im Layer-4-TCP-Modus und im Layer-7-HTTP-Modus ausgeführt werden. Nginx unterstützt nur den Layer-7-HTTP-Modus mit HAProxy. Wenn Sie den Layer-4-TCP-Modus verwenden möchten, können Sie andere Webserver wie Apache verwenden. Unter CentOS 7 ist HAProxy im Standard-Repository verfügbar. Es ist einfach zu installieren und zu konfigurieren.


Cent OS
  1. So installieren Sie Nginx unter CentOS 7

  2. So installieren Sie Nginx unter CentOS 8

  3. So installieren Sie Magento 2.1 auf CentOS 7

  4. So konfigurieren Sie den HAProxy-Load-Balancer

  5. So richten Sie den VNC-Server für neue Benutzer in CentOS/RHEL 5 ein

So installieren Sie HAProxy unter CentOS 8

So richten Sie HAProxy als Load Balancer für Nginx unter CentOS 8 ein

So installieren Sie Varnish Cache 6 für Nginx unter CentOS/RHEL 8

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

So richten Sie HAProxy unter CentOS 8 ein

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