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

Installieren und konfigurieren Sie HAProxy unter RHEL 8 / CentOS 8 Linux

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 werden Sie die Installation und Konfiguration von HAProxy auf RHEL 8 / CentOS 8 durchlaufen. 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.

In diesem Tutorial lernen Sie:

  • HAProxy-Architektur und -Konzepte
  • Konfigurieren Sie die Hosts-Datei für die Namensauflösung
  • HAProxy installieren und konfigurieren
  • Nginx installieren und konfigurieren
  • Testen der Load-Balancing-Funktion
  • Greifen Sie auf die HAProxy-Statistik-URL zu

HAProxy-Architektur.

Softwareanforderungen und verwendete Konventionen

Softwareanforderungen und Linux-Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder verwendete Softwareversion
System RHEL 8 / CentOS 8
Software HAProxy, Nginx
Andere Privilegierter Zugriff auf Ihr Linux-System als root oder über sudo Befehl.
Konventionen # – erfordert, dass bestimmte Linux-Befehle mit Root-Rechten ausgeführt werden, entweder direkt als Root-Benutzer oder durch Verwendung von sudo Befehl
$ – erfordert, dass bestimmte Linux-Befehle als normaler, nicht privilegierter Benutzer ausgeführt werden

HAProxy-Architektur und -Konzepte

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 den Layer-7-HTTP-Modus unterstützt.

Layer-4-Load-Balancing.

Layer-7-Load-Balancing.

Ausgleichsalgorithmus ist der Algorithmus, der von HAProxy verwendet wird, um den Server beim Lastausgleich 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.

Leastconn

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.

Hosts-Datei für Namensauflösung konfigurieren

Melden Sie sich beim Load Balancer-Server an und bearbeiten Sie die Datei /etc/hosts Datei und HAProxy-Loadbalancer, nginx1-, nginx2-Hostnamen. Kopieren Sie dieselbe Datei auf zwei andere Nginx-Knoten und überprüfen Sie die Netzwerkverbindung über den Befehl ping.

# vim /etc/hosts

192.168.1.108 loadbalancer.example.com
192.168.1.104 nginx1.example.com
192.168.1.105 nginx2.example.com

HAProxy installieren und konfigurieren

HAProxy ist im RHEL 8 / CentOS 8-Repository verfügbar, melden Sie sich also beim Loadbalancer-Server an und installieren Sie das Paket HAProxy mit diesem yum-Befehl.

# yum install haproxy

Nach erfolgreicher Installation können Sie den folgenden Befehl verwenden, um die Installation zu überprüfen.

# yum info haproxy
# yum info haproxy
Updating Subscription Management repositories.
Updating Subscription Management repositories.
Last metadata expiration check: 0:06:03 ago on Sat 16 Mar 2019 11:40:24 PM +04.
Installed Packages
Name         : haproxy
Version      : 1.8.14
Release      : 1.el8
Arch         : x86_64
Size         : 4.1 M
Source       : haproxy-1.8.14-1.el8.src.rpm
Repo         : @System
From repo    : rhel-8-for-x86_64-appstream-beta-rpms
Summary      : HAProxy reverse proxy for high availability environments
URL          : http://www.haproxy.org/
License      : GPLv2+
Description  : HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high
             : availability environments. Indeed, it can:
             :  - route HTTP requests depending on statically assigned cookies
             :  - spread load among several servers while assuring server persistence
             :    through the use of HTTP cookies
             :  - switch to backup servers in the event a main one fails
             :  - accept connections to special ports dedicated to service monitoring
             :  - stop accepting connections without breaking existing ones
             :  - add, modify, and delete HTTP headers in both directions
             :  - block requests matching particular patterns
             :  - report detailed status to authenticated users from a URI
             :    intercepted from the application

Wenn die Installation abgeschlossen ist, gehen Sie zu /etc/haproxy/ Verzeichnis und sichern Sie die ursprüngliche Konfigurationsdatei.

# cd /etc/haproxy/
# cp haproxy.cfg haproxy.cfg.orig

Nehmen Sie als Nächstes die folgenden Änderungen in der HAProxy-Konfigurationsdatei haproxy.cfg vor mit einem der Herausgeber.

#---------------------------------------------------------------------
# Example configuration for a possible web application.  See the
# full configuration options online.
#
#   https://www.haproxy.org/download/1.8/doc/configuration.txt
#
#---------------------------------------------------------------------

#---------------------------------------------------------------------
# Global settings
#---------------------------------------------------------------------
global
    # to have these messages end up in /var/log/haproxy.log you will
    # need to:
    #
    # 1) configure syslog to accept network log events.  This is done
    #    by adding the '-r' option to the SYSLOGD_OPTIONS in
    #    /etc/sysconfig/syslog
    #
    # 2) configure local2 events to go to the /var/log/haproxy.log
    #   file. A line like the following can be added to
    #   /etc/sysconfig/syslog
    #
    #    local2.*                       /var/log/haproxy.log
    #
    log         127.0.0.1 local2

    chroot      /var/lib/haproxy
    pidfile     /var/run/haproxy.pid
    maxconn     4000
    user        haproxy
    group       haproxy
    daemon

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

    # utilize system-wide crypto-policies
    ssl-default-bind-ciphers PROFILE=SYSTEM
    ssl-default-server-ciphers PROFILE=SYSTEM

#---------------------------------------------------------------------
# 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 stats 
    bind loadbalancer.example.com: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 admin:admin                   # User and Password for login to the monitoring dashboard
    #stats admin if TRUE
    default_backend loadbalancer                 # This is optionally for monitoring backend
#---------------------------------------------------------------------
# main frontend which proxys to the backends
#---------------------------------------------------------------------
frontend loadbalancer
    bind loadbalancer.example.com:80
    #acl url_static       path_beg       -i /static /images /javascript /stylesheets
    #acl url_static       path_end       -i .jpg .gif .png .css .js

    #use_backend static          if url_static
    option http-server-close
    option forwardfor
    default_backend       loadbalancer

#---------------------------------------------------------------------
# static backend for serving up images, stylesheets and such
#---------------------------------------------------------------------
#backend static
#    balance     roundrobin
#    server      static 127.0.0.1:4331 check

#---------------------------------------------------------------------
# round robin balancing between the various backends
#---------------------------------------------------------------------
backend loadbalancer
    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.example.com 192.168.1.104:80 check         # NGINX Server1
    server  nginx2.example.com 192.168.1.105:80 check         # NGNIX Server2

Speichern Sie diese Konfigurationsdatei und beenden Sie.

Jetzt werden wir den rsyslog-Daemon konfigurieren, um die HAProxy-Statistiken zu protokollieren. Bearbeiten Sie die rsyslog.conf Datei, damit der UDP-Port 514 von rsyslog verwendet werden kann. Öffnen Sie die rsyslog-Konfigurationsdatei und kommentieren Sie die Zeilen aus, um die UDP-Verbindung zu aktivieren.

# vim /etc/rsyslog.conf
module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

Speichern Sie die Datei mit den obigen Änderungen und beenden Sie sie. Erstellen Sie dann eine neue HAProxy-Konfigurationsdatei für rsyslog und fügen Sie die folgenden Einträge in diese Datei ein.

# cd /etc/rsyslog.d/
# vi haproxy.conf
local2.=info     /var/log/haproxy-access.log    # For Access Log
local2.notice    /var/log/haproxy-info.log      # For Service Info - Backend, loadbalancer

Starten Sie nun rsyslog neu und starten Sie dann den HAProxy-Dienst und fügen Sie HAProxy hinzu, um beim Booten zu starten.

# systemctl restart rsyslog
# systemctl start haproxy
# systemctl enable haproxy

Nginx installieren und konfigurieren

Nginx ist bereits Bestandteil des bestehenden RHEL 8 / CentOS 8 Repos und kann mit folgendem Befehl installiert werden.

# yum install nginx

Nach der Installation können Sie die Installation mit Hilfe dieses Befehls überprüfen.

# yum info nginx
# yum info nginx
Updating Subscription Management repositories.
Updating Subscription Management repositories.
Last metadata expiration check: 0:06:14 ago on Sat 16 Mar 2019 11:40:24 PM +04.
Installed Packages
Name         : nginx
Epoch        : 1
Version      : 1.14.0
Release      : 3.el8+1631+ba902cf0
Arch         : x86_64
Size         : 568 k
Source       : nginx-1.14.0-3.el8+1631+ba902cf0.src.rpm
Repo         : rhel-8-for-x86_64-appstream-beta-rpms
Summary      : A high performance web server and reverse proxy server
URL          : http://nginx.org/
License      : BSD
Description  : Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3 and
             : IMAP protocols, with a strong focus on high concurrency, performance and low
             : memory usage.

Sobald Nginx installiert ist, gehen Sie in das Webverzeichnis und ändern Sie die index.html Datei entsprechend. Stellen Sie sicher, dass Sie die folgenden Schritte auf den Servern nginx1 und nginx2 ausführen.

# cd /usr/share/nginx/html
# ls -lrth
total 20K
-rw-r--r--. 1 root root 2.8K Oct 31  2016 poweredby.png
-rw-r--r--. 1 root root  368 Oct 31  2016 nginx-logo.png
-rw-r--r--. 1 root root 3.7K Mar 16 20:39 50x.html
-rw-r--r--. 1 root root 3.6K Mar 16 20:39 404.html
-rw-r--r--. 1 root root 3.7K Mar 16 20:42 index.html

Fügen Sie als Nächstes Nginx hinzu, um beim Booten zu starten, und starten Sie dann den Daemon mit den folgenden Befehlen.

# systemctl enable nginx
# systemctl start nginx

Testen der Load-Balancing-Funktion

Das Testen kann durch Durchsuchen und Zugreifen auf die Loadbalancer-IP 192.168.1.108 (für meinen Fall) durchgeführt werden, und Sie werden sehen, dass sie einmal an den Nginx-Knoten 1 und das zweite Mal an Nginx-Knoten 2 im Round-Robin-Verfahren geht.

Webseite auf NGINX Node1.

Webseite auf NGINX Node2.

Sie können auch die /var/log/haproxy-access.log überprüfen um detaillierte Informationen über den Lastenausgleich zu erhalten.

Zugriff auf die HAProxy-Statistik-URL

Greifen Sie auf das Dashboard für den HAProxy Statistical Report zu, der auf Port 8080 ausgeführt wird, mit Benutzername und Passwort, die in haproxy.cfg definiert sind Datei.

http://192.168.1.108:8080/stats

Greifen Sie auf die HAProxy Stats-URL zu.

HAProxy-Statistik-Dashboard.

HAProxy funktioniert erfolgreich und fungiert als Load Balancer für die 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 RHEL 8 / CentOS 8 Linux ist HAProxy im Standard-Repository verfügbar. Es ist einfach zu installieren und zu konfigurieren.


Cent OS
  1. So installieren und konfigurieren Sie R auf einem Linux-System mit RHEL 8 / CentOS 8

  2. So installieren Sie den DNS-Server unter RHEL 8 / CentOS 8 Linux

  3. FTP-Server unter CentOS 7 / RHEL 7 installieren und konfigurieren – (vsftpfd)

  4. So installieren und konfigurieren Sie HAProxy unter CentOS/RHEL 7/6

  5. CentOS / RHEL 5 :So installieren und konfigurieren Sie den vsftpd-Server

Installieren und konfigurieren Sie den FreeIPA-Server unter CentOS 8

So installieren und konfigurieren Sie den VNC-Server unter CentOS 7

So installieren und konfigurieren Sie den VNC-Server in CentOS 7 / RHEL 7

Check_MK Server auf CentOS 7 installieren und konfigurieren

So installieren und konfigurieren Sie HAproxy unter CentOS 6

So installieren und konfigurieren Sie VNC Server unter CentOS/RHEL 8