GNU/Linux >> Znalost Linux >  >> Cent OS

Nainstalujte a nakonfigurujte HAProxy na RHEL 8 / CentOS 8 Linux

HAProxy nebo High Availability Proxy je open source software pro vyrovnávání zátěže TCP a HTTP a proxy server. HAProxy byl napsán Willy Tarreau v C, podporuje SSL, komprese, zachování, vlastní formáty protokolů a přepisování záhlaví. HAProxy je rychlý a lehký proxy server a nástroj pro vyrovnávání zatížení s malou paměťovou náročností a nízkým využitím CPU. Používají ho velké weby jako Github, StackOverflow, Reddit, Tumblr, Twitter a další. V posledních letech se stal nejoblíbenějším softwarovým nástrojem pro vyrovnávání zatížení a proxy serverem.

V tomto tutoriálu projdete instalací a konfigurací HAProxy na RHEL 8 / CentOS 8. Nainstalujeme HAProxy na jeden server a poté nainstalujeme webový server Nginx na ostatní servery. HAProxy bude fungovat jako vyvažovač zatížení pro webové servery Nginx.

V tomto tutoriálu se naučíte:

  • Architektura a koncepty HAProxy
  • Nakonfigurujte soubor hostitelů pro rozlišení názvů
  • Nainstalujte a nakonfigurujte HAProxy
  • Nainstalujte a nakonfigurujte Nginx
  • Testování funkce Load Balancing
  • Přístup k adrese URL statistiky HAProxy

Architektura HAProxy.

Požadavky na software a použité konvence

Softwarové požadavky a konvence příkazového řádku systému Linux
Kategorie Požadavky, konvence nebo použitá verze softwaru
Systém RHEL 8 / CentOS 8
Software HAProxy, Nginx
Jiné Privilegovaný přístup k vašemu systému Linux jako root nebo prostřednictvím sudo příkaz.
Konvence # – vyžaduje, aby dané linuxové příkazy byly spouštěny s právy root buď přímo jako uživatel root, nebo pomocí sudo příkaz
$ – vyžaduje, aby dané linuxové příkazy byly spouštěny jako běžný neprivilegovaný uživatel

Architektura a koncepty HAProxy

HAProxy může běžet ve dvou režimech:TCP režim Layer 4 a HTTP Mode Layer 7. V režimu Layer 4 TCP předává HAProxy RAW TCP pakety z klienta na aplikační servery. V režimu HTTP vrstvy 7 HAProxy analyzuje hlavičku HTTP, než je předá aplikačním serverům. V tomto tutoriálu použijeme Nginx jako webový server, který podporuje režim HTTP Layer 7.

Layer 4 Load Balancing.

Layer 7 Load Balancing.

Balance Algorithm je algoritmus, který používá HAProxy k výběru serveru při vyrovnávání zátěže. K dispozici jsou následující režimy:

Roundrobin

Toto je nejjednodušší balanční algoritmus. Každé nové připojení bude zpracováno dalším backendovým serverem. Pokud je dosaženo posledního backendového serveru v seznamu, začne znovu od začátku backendového seznamu.

Leastconn

Nové připojení bude zpracováno backendovým serverem s nejmenším počtem připojení. To je užitečné, když se čas a zatížení požadavků hodně liší.

Zdroj

Toto je pro pevné relace, IP klienta bude hashována, aby se určil backendový server, který přijal poslední požadavek z této IP. Takže IP A bude vždy zpracována backendem1 a IP B bude vždy zpracována banckend2, aby nedošlo k přerušení relací.

Nakonfigurujte soubor hostitelů pro rozlišení názvů

Přihlaste se k serveru nástroje pro vyrovnávání zatížení a upravte /etc/hosts soubor a HAProxy loadbalancer, názvy hostitelů nginx1, nginx2. Zkopírujte stejný soubor na další dva uzly nginx a zkontrolujte síťové připojení pomocí příkazu 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

Nainstalujte a nakonfigurujte HAProxy

HAProxy je k dispozici v úložišti RHEL 8 / CentOS 8, proto se přihlaste k serveru loadbalancer a nainstalujte balíček HAProxy pomocí tohoto příkazu yum.

# yum install haproxy

Po úspěšné instalaci můžete použít níže uvedený příkaz k ověření instalace.

# 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

Po dokončení instalace přejděte do /etc/haproxy/ adresář a zálohujte původní konfigurační soubor.

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

Dále proveďte níže uvedené změny v konfiguračním souboru HAProxy haproxy.cfg s kterýmkoli editorem.

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

Uložte tento konfigurační soubor a ukončete jej.

Nyní nakonfigurujeme démona rsyslog pro protokolování statistik HAProxy. Upravte soubor rsyslog.conf aby rsyslog mohl používat UDP port 514. Otevřete konfigurační soubor rsyslog a odkomentujte řádky, abyste povolili připojení UDP.

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

Uložte soubor s výše uvedenými změnami a ukončete. Poté vytvořte nový konfigurační soubor HAProxy pro rsyslog a přidejte do něj níže uvedené položky.

# 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

Nyní restartujte rsyslog a poté spusťte službu HAProxy a přidejte HAProxy, aby se spustila při spouštění.

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

Nainstalujte a nakonfigurujte Nginx

Nginx je již součástí stávajícího repozitáře RHEL 8 / CentOS 8 a lze jej nainstalovat pomocí následujícího příkazu.

# yum install nginx

Po instalaci můžete instalaci ověřit pomocí tohoto příkazu.

# 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.

Jakmile je Nginx nainstalován, přejděte do webového adresáře a změňte index.html soubor podle toho. Ujistěte se, že na serveru nginx1 a nginx2 provádíte níže uvedené kroky.

# 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

Dále přidejte Nginx, aby se spustil v době spouštění, a poté spusťte démona pomocí příkazů níže.

# systemctl enable nginx
# systemctl start nginx

Testování funkce Load Balancing

Testování lze provést procházením a přístupem k loadbalanceru IP 192.168.1.108 (pro můj případ) a uvidíte, že jednou to jde do uzlu Nginx1 a podruhé to půjde do uzlu Nginx2 v kruhovém režimu.

Webová stránka na NGINX Node1.

Webová stránka na NGINX Node2.

Můžete také zkontrolovat /var/log/haproxy-access.log abyste získali podrobné informace o vyrovnávání zátěže.

Přístup k URL statistiky HAProxy

Přístup k řídicímu panelu pro HAProxy Statistical Report, který běží na portu 8080 s uživatelským jménem a heslem definovaným v haproxy.cfg soubor.

http://192.168.1.108:8080/stats

Přístup k URL statistik HAProxy.

Dashboard statistiky HAProxy.

HAProxy funguje úspěšně a funguje jako vyvažovač zatížení pro dva webové servery Nginx.

Závěr

HAProxy nebo High Availability proxy je software s otevřeným zdrojovým kódem, který poskytuje vysokou dostupnost pro služby založené na TCP, funguje jako vyrovnávání zatížení HTTP a proxy server. Tento software je napsán v jazyce C a podporuje SSL, keep-alive a kompresi. HAProxy je správnou volbou pro každého, kdo potřebuje nástroj pro vyrovnávání zátěže a proxy server, který je rychlý a lehký, má malé nároky na paměť a nízké využití CPU. Haproxy může běžet v režimu Layer 4 TCP a Layer 7 HTTP. Nginx podporuje pouze režim HTTP Layer 7 s HAProxy. Pokud chcete použít režim TCP na 4. vrstvě, můžete použít jiné webové servery, jako je Apache. Na RHEL 8 / CentOS 8 Linux je HAProxy k dispozici ve výchozím úložišti. Snadno se instaluje a konfiguruje.


Cent OS
  1. Jak nainstalovat DNS server na RHEL 8 / CentOS 8 Linux

  2. Instalace a konfigurace FTP serveru na CentOS 7 / RHEL 7 – (vsftpfd)

  3. CentOS / RHEL 5 :Jak nainstalovat a nakonfigurovat server vsftpd

  1. Jak nainstalovat a nakonfigurovat R na RHEL 8 / CentOS 8 Linux System

  2. Jak nainstalovat a nakonfigurovat sambu na RHEL 8 / CentOS 8

  3. Jak nainstalovat a nakonfigurovat HAProxy na CentOS/RHEL 7/6

  1. Jak nainstalovat a nakonfigurovat VNC na CentOS 7

  2. Jak nainstalovat a nakonfigurovat server NFS na CentOS 8

  3. Jak nainstalovat a nakonfigurovat VNC na CentOS 8