Detaillierte Erläuterung der HAProxy-Installation und -Konfiguration

1. Einführung in Haproxy

  HAProxy ist eine vom Franzosen Willy Tarreau entwickelte Open-Source-Software. Es handelt sich um einen leistungsstarken TCP- und HTTP-Load-Balancer, der mehr als 10.000 gleichzeitige Client-Verbindungen verarbeiten kann. Es werden Funktionen bereitgestellt, die Cookie-basierte Persistenz, inhaltsbasiertes Switching, erweiterte Verkehrsüberwachung zum Schutz vor Überlastung, automatisches Failover, auf regulären Ausdrücken basierende Header-Steuerung der Laufzeit, webbasierte Berichte, erweiterte Protokollierung zur Unterstützung bei der Fehlerbehebung bei Anwendungen oder Netzwerken und andere Funktionen bereitstellen .
  HAProxy bietet Hochverfügbarkeit, Lastausgleich und Proxying für TCP- und HTTP-Anwendungen und unterstützt virtuelle Hosts. Es ist eine kostenlose, schnelle und zuverlässige Lastausgleichslösung. HAProxy eignet sich besonders für Websites mit hoher Auslastung, die in der Regel Sitzungspersistenz oder Layer-7-Verarbeitung erfordern. HAProxy läuft auf aktueller Hardware und kann Zehntausende gleichzeitiger Verbindungen unterstützen. Und sein Betriebsmodus ermöglicht eine einfache und sichere Integration in Ihre aktuelle Architektur und schützt gleichzeitig Ihren Webserver vor der Gefährdung durch das Internet.

Offizielle Website: https://www.haproxy.com/

1. Unterschiede zwischen LVS, Haproxy und Nginx

  1. LVS implementiert einen sanften Lastausgleich basierend auf dem Linux-Betriebssystem, während Haproxy und Nginx einen sanften Lastausgleich basierend auf Anwendungen von Drittanbietern implementieren.
  2. LVS ist eine IP-Lastausgleichstechnologie, die Layer 4 implementieren kann, jedoch keine Weiterleitung basierend auf Verzeichnissen und URLs implementieren kann. Sowohl Haproxy als auch Nginx können Layer-4- und Layer-7-Technologien implementieren. Haproxy kann umfassende Lastausgleichslösungen für TCP- und HTTP-Anwendungen bereitstellen.
  3. Da LVS auf der vierten Ebene des ISO-Modells arbeitet, ist seine Statusüberwachungsfunktion eine einzige, während Haproxy über umfangreichere und leistungsfähigere Statusüberwachungsfunktionen verfügt und mehrere Statusüberwachungsmethoden wie Ports, URLs und Skripte unterstützen kann.
  4. Haproxy ist leistungsstark, aber seine Gesamtleistung ist geringer als die des LVS-Lastausgleichs im Layer-4-Modus
  5. Nginx wird hauptsächlich für Webserver oder Cache-Server verwendet
  6. Haproxy unterstützt auch virtuelle Hosts
  7. Haproxy unterstützt 8 Load-Balancer-Strategien
  8. Die Vorteile von Haproxy können einige der Nachteile von Nginx ergänzen, z. B. die Unterstützung der Sitzungsaufbewahrung, der Cookie-Anleitung und die Unterstützung der Statuserkennung des Back-End-Servers durch Abrufen der angegebenen URL.
  9. Haproxy ähnelt LVS. Es handelt sich lediglich um eine Lastausgleichssoftware. In Bezug auf die Effizienz verfügt Haproxy über eine bessere Lastausgleichsgeschwindigkeit als Nginx und ist auch in Bezug auf die gleichzeitige Verarbeitung besser als Nginx.
  10. Haproxy unterstützt die Lastausgleichsweiterleitung des TCP-Protokolls

Ein Bild fasst den Vergleich zusammen.
Ein detaillierter Vergleich erfolgt aus der Perspektive der Vor- und Nachteile, Anwendbarkeit und Größe der drei Lastausgleichssoftware Nginx, LVS und HAProxy.
Fügen Sie hier eine Bildbeschreibung ein

2. HAProxy-Funktionen und Vorteile:

  1. Unterstützt Original-SSL und unterstützt sowohl Client- als auch Server-SSL.
  2. Unterstützt IPv6- und UNIX-Sockets
  3. Unterstützt HTTP Keep-Alive
  4. Unterstützt HTTP/1.1-Komprimierung, um Bandbreite zu sparen
  5. Unterstützt optimierte Integritätserkennungsmechanismen (SSL, Skript-TCP, Prüfagent ...)
  6. Unterstützt Layer-7-Lastausgleich.
  7. Zuverlässigkeit und Stabilität sind sehr gut.
  8. Es gibt 40.000 bis 50.000 gleichzeitige Verbindungen, die maximale Anforderungsverarbeitung pro Zeiteinheit beträgt 20.000 und die maximale Datenverarbeitung beträgt 10 Gbit/s.
  9. Unterstützt 8 Lastausgleichsalgorithmen und unterstützt die Sitzungserhaltung.
  10. Unterstützen Sie virtuelles Hosting.
  11. Unterstützt Verbindungsablehnung und vollständig transparenten Proxy.
  12. Verfügt über eine Seite zur Überwachung des Serverstatus.
  13. Unterstützt ACL.

3. Drei Lösungen für HAProxy zur Aufrechterhaltung von Sitzungen

HAProxy verwaltet Sitzungen, damit derselbe Client auf den Server zugreifen kann. Es gibt drei Lösungen: Client-IP, Cookie und Sitzung.

  1. Der Hash wird über die Client-IP berechnet und gespeichert, um sicherzustellen, dass er an den festen realen Server weitergeleitet werden kann, wenn dieselbe IP auf den Proxyserver zugreift.
  2. Verlassen Sie sich darauf, dass der reale Server die Cookie-Informationen des Clients zur Sitzungswartung sendet.
  3. Die Sitzungs- und Server-ID des realen Servers werden gespeichert, um Sitzungspersistenz zu erreichen. (HAProxy erfordert lediglich, dass der Backend-Server mit dem Netzwerk verbunden werden kann, und es gibt keine umständliche ARP-Konfiguration wie bei LVS.)

4. HAProxys Balance-8-Lastausgleichsalgorithmen:

  1. roundrobin: Basierend auf gewichtetem Round-Robin.
  2. static-rr: Basierend auf gewichtetem Round-Robin. Statischer Algorithmus, Änderungen zur Laufzeit können nicht wirksam werden
  3. source: Algorithmus basierend auf der IP der Anforderungsquelle. Führen Sie eine Hash-Operation für die Quell-IP der Anfrage durch, dividieren Sie das Ergebnis durch das Gesamtgewicht des Backend-Servers und leiten Sie es dann an einen passenden Server weiter. Ermöglicht, dass Clientanfragen von derselben IP immer an einen bestimmten Backend-Server weitergeleitet werden.
  4. leastconn: Mindestverbindung. (Geeignet für den Datenbanklastausgleich, nicht geeignet für Umgebungen mit kurzen Sitzungen)
  5. uri: Führen Sie eine Hash-Operation für einen Teil oder den gesamten URI durch, dividieren Sie ihn durch das Gesamtgewicht des Servers und leiten Sie ihn schließlich an das entsprechende Backend weiter.
  6. uri_param: Gemäß den Parametern im URL-Pfad weiterleiten, um sicherzustellen, dass dieselbe Benutzeranforderung an denselben Computer verteilt wird, wenn die Anzahl der Back-End-Server unverändert bleibt.
  7. hdr(<name>): Basierend auf dem HTTP-Header weiterleiten, wenn kein http-Header vorhanden ist. Dann verwenden Sie ein einfaches Round-Robin.

5. HAProxy-Hauptarbeitsmodus

  • TCP-Modus: Zwischen dem Client und dem Server wird eine Vollduplex-Verbindung hergestellt, und im einfachen Modus werden Schicht-7-Nachrichten nicht verarbeitet.
    Wird normalerweise in SSL, SSH, SMTP und anderen Anwendungsschichten verwendet.
  • http-Modus (allgemeine Verwendung): Client-Anfragen werden gründlich analysiert, bevor sie an den Backend-Server weitergeleitet werden. Alle Anfragen, die nicht mit dem RFC-Format kompatibel sind, werden abgelehnt.

2. HAProxy-Installation

Es gibt zwei Möglichkeiten zur Installation: Im Vergleich zur Kompilierung und Bereitstellung sind das tar.gz-Paket und die Yum-Methode einfacher und bequemer über Yum zu installieren.

1. Beschreibung der HAProxy-Version

In diesem Artikel wird gezeigt, wie Sie HAProxy schnell unter CentOS 7 installieren.
Der Nachteil besteht jedoch darin, dass die Standard-Haproxy-Version in der Yum-Quelle von CentOS relativ niedrig ist.

Wenn wir uns die Haproxy-Version ansehen, die in unserem System installiert werden kann, können wir sehen, dass es sich um 1.5.18 handelt:

yum list haproxy

[root@localhost ~]# yum list haproxy
已加载插件:fastestmirror
Repodata is over 2 weeks old. Install yum-cron? Or run: yum makecache fast
Determining fastest mirrors
 * base: mirrors.bupt.edu.cn
 * extras: mirrors.bupt.edu.cn
 * updates: mirrors.huaweicloud.com
可安装的软件包
haproxy.x86_64                                                                          1.5.18-9.el7_9.1                                                                           update

Was ist, wenn wir den neuesten Haproxy installieren möchten?

Methode 1: Installationsprozess des RPM-Pakets (empfohlen)

HAPROXY stellt offiziell keine RPM-bezogenen Pakete bereit. Sie können
das RPM-Paket von der Drittanbieter-Website über das RPM-Paket des Drittanbieter-Warehouses herunterladen: https://pkgs.org/download/haproxy
. Wählen Sie die entsprechende Version aus. Unsere Demonstration findet auf CentOS7 statt. 9 Installieren Sie die neuere Version haproxy 2.2

  1. Überprüfen Sie die Version von Haproxy im System. Lecker: yum info haproxy
    Die Versionsinformationen für CentOS7 lauten 1.5.18. Die Version ist noch sehr alt.

    #CentOS7 上的版本信息 1.5.18  版本还是很老的了,我们在这个CentOS7.9 上演示编译安装最新版本的HAPROXY
    [root@localhost ~]# yum info haproxy
    已加载插件:fastestmirror
    Loading mirror speeds from cached hostfile
     * base: mirrors.huaweicloud.com
     * extras: mirrors.huaweicloud.com
     * updates: mirrors.huaweicloud.com
    可安装的软件包
    名称    :haproxy
    架构    :x86_64
    版本    :1.5.18
    发布    :9.el7_9.1
    大小    :835 k
    源    :updates/7/x86_64
    简介    : TCP/HTTP proxy and load balancer for high availability environments
    网址    :http://www.haproxy.org/
    协议    : GPLv2+
    描述    : HAProxy is a TCP/HTTP reverse proxy which is particularly suited for high
    
  2. Laden Sie die Repo-Informationsdatei herunterwget https://repo.ius.io/ius-release-el7.rpm

    [root@localhost ~]# wget https://repo.ius.io/ius-release-el7.rpm
    --2023-03-16 14:35:48--  https://repo.ius.io/ius-release-el7.rpm
    正在解析主机 repo.ius.io (repo.ius.io)... 104.85.67.135, 2600:140b:5000:98d::3898, 2600:140b:5000:982::3898
    正在连接 repo.ius.io (repo.ius.io)|104.85.67.135|:443... 已连接。
    已发出 HTTP 请求,正在等待回应... 200 OK
    长度:8412 (8.2K) [application/x-rpm]
    正在保存至: “ius-release-el7.rpm”
    100%[================================================================================================================================================>] 8,412       --.-K/s 用时 0s     
    [root@localhost ~]# ll
    -rw-r--r--. 1 root root    8412 13 14:05 ius-release-el7.rpm
    
  3. Installieren Sie Epel-Releaseyum -y install epel-release

  4. Installieren Sie ius-release-el7.rpmrpm -Uvh ius-release*rpm

  5. Installieren Sie Haproxy Version 2.2yum install haproxy22

  6. Starten Sie Haproxysystemctl start haproxy

# 安装 haproxy 2.2.22版
[root@localhost ~]# yum install haproxy22
# 查看端口监听 看不到有  haproxy 相关的
[root@localhost ~]# ss -tlnp | grep haproxy   

# 启动服务,再查看端口监听
[root@localhost ~]# systemctl start haproxy
[root@localhost ~]# ss -tlnp | grep haproxy   
LISTEN     0      128          *:5000                     *:*                   users:(("haproxy",pid=1416,fd=7))

# 查看版本
[root@localhost ~]# haproxy -v
HA-Proxy version 2.2.29-c5b927c 2023/02/14 - https://haproxy.org/
Status: long-term supported branch - will stop receiving fixes around Q2 2025.
Known bugs: http://www.haproxy.org/bugs/bugs-2.2.29.html
Running on: Linux 3.10.0-1127.el7.x86_64 #1 SMP Tue Mar 31 23:36:51 UTC 2020 x86_64
# 查看生成的文件   
[root@localhost ~]# rpm -ql haproxy22    
/etc/haproxy     					#haproxy 主要目录之一
/etc/haproxy/haproxy.cfg			#此文件是配置文件,很重要
/etc/logrotate.d/haproxy
/etc/sysconfig/haproxy
/usr/bin/halog
/usr/bin/iprange
/usr/lib/systemd/system/haproxy.service		#haproxy 启动文件
/usr/sbin/haproxy
/usr/share/doc/haproxy22-2.2.29
/usr/share/doc/haproxy22-2.2.29/51Degrees-device-detection.txt
………

Methode 2: IUS-Installationsprozess

IUS ist ein Yum-Repository, das neuere Versionen ausgewählter Software für RHEL und CentOS bereitstellt.

Es bietet leckere Quellen der neuesten Softwareversionen für CentOS von RHEL.

  1. Konfigurieren Sie die IUS-yum-Quelle:vim /etc/yum.repos.d/ius-7.repo

    [ius]
    name = IUS for Enterprise Linux 7 - $basearch
    baseurl = https://repo.ius.io/7/$basearch/
    enabled = 1
    repo_gpgcheck = 0
    gpgcheck = 1
    gpgkey = https://repo.ius.io/RPM-GPG-KEY-IUS-7
    [ius-debuginfo]
    name = IUS for Enterprise Linux 7 - $basearch - Debug
    baseurl = https://repo.ius.io/7/$basearch/debug/
    enabled = 0
    repo_gpgcheck = 0
    gpgcheck = 1
    gpgkey = https://repo.ius.io/RPM-GPG-KEY-IUS-7
    [ius-source]
    name = IUS for Enterprise Linux 7 - Source
    baseurl = https://repo.ius.io/7/src/
    enabled = 0
    repo_gpgcheck = 0
    gpgcheck = 1
    gpgkey = https://repo.ius.io/RPM-GPG-KEY-IUS-7
    
  2. Cache leeren:yum clean all

  3. Cache aktualisieren:yum makecache fast

  4. Überprüfen Sie die Version: yum list|grep haproxy
    Sie können sehen, dass die installierbare Version unter der Basisquelle 1.5.18 ist. Unter der ius-Quelle gibt es viele Versionen, einschließlich der neuesten Version 2.2.

    [root@localhost ~]# yum list|grep haproxy
    haproxy.x86_64                              1.5.18-9.el7_9.1           updates  
    haproxy18u.x86_64                           1.8.30-1.el7.ius           ius      
    haproxy20.x86_64                            2.0.30-1.el7.ius           ius      
    haproxy22.x86_64                            2.2.29-1.el7.ius           ius      
    pcp-pmda-haproxy.x86_64                     4.3.2-13.el7_9             updates  
    [root@localhost ~]# 
    
  5. Installieren Sie Version 2.2:yum install -y haproxy22

  6. Installierten Haproxy anzeigen:yum list installed |grep haproxy

  7. Version anzeigen: haproxy -vSie können sehen, dass die Version 2.2.1 ist

  8. Haproxy-Status anzeigen: systemctl status haproxy.
    Da wir haproxy noch nicht gestartet haben, lautet der jetzt angezeigte Status inaktiv.

3. Verwendung von HAProxy

1.HAProxy-Konfigurationsdatei

Die Haproxy-Konfigurationsdatei besteht aus zwei Teilen: globale Einstellungen und Proxy-Einstellungen, unterteilt in fünf Abschnitte: global, Standardeinstellungen, Frontend, Backend, Listen

  • global: Die globale Konfiguration wird hauptsächlich zum Definieren globaler Parameter verwendet und ist eine Konfiguration auf Prozessebene, die normalerweise mit der Betriebssystemkonfiguration zusammenhängt.
  • default: Konfigurieren Sie Standardparameter, die in Frontend-, Backend- und Listen-Komponenten verwendet werden können.
  • frontend: Der virtuelle Front-End-Knoten, der die Anforderung empfängt. Das Front-End kann das Backend angeben, um das Backend speziell zu verwenden.
  • backend: Konfiguration des Backend-Dienstclusters, realer Server, ein Backend entspricht einem oder mehreren Entitätsservern.
  • listen: Eine Kombination aus Front- und Backend, z. B. die Konfiguration des Haproxy-Instanzstatusüberwachungsteils. Die einzige Konfigurationsmethode vor Haproxy1.3.

Pfad der Konfigurationsdateivim /etc/haproxy/haproxy.cfg

Globale globale Konfiguration

global
    log 127.0.0.1 local0  info		//定义haproxy日志输出设置
    log loghost local0 info		//定义haproxy日志级别
    maxconn 20480			//定义最大连接数
    chroot /usr/local/haproxy		//chroot运行路径
    pidfile /var/run/haproxy.pid	//haproxy进程PID文件   
    user haproxy			//运行haproxy用户,可用uid代替
    group haproxy			//运行haproxy用户组,可用gid代替
    daemon				//以后台形式运行haproxy

Standardkonfiguration

  • Wird zum Festlegen von Konfigurationsstandardparametern verwendet, die in Frontend-, Backend- und Listen-Komponenten verwendet werden können. Die in diesem Abschnitt festgelegten Parameterwerte werden standardmäßig automatisch auf die folgenden Frontend-, Backend- und Listen-Abschnitte verwiesen. Wenn einige Parameter zur öffentlichen Konfiguration gehören, müssen Sie sie nur einmal im Abschnitt „Standardeinstellungen“ hinzufügen. Und wenn die Frontend-, Backend- und Listen-Teile ebenfalls mit denselben Parametern wie der Standardteil konfiguriert sind, werden die Werte, die den Standardteil-Parametern entsprechen, automatisch überschrieben.
  • mode http: Legen Sie den Ausführungsmodus von haproxy fest. Es gibt drei {http|tcp|health}. Hinweis: Wenn in Haproxy auch Layer-4-Anwendungen (Modus TCP) verwendet werden, ist es nicht empfehlenswert, hier die Betriebsart von Haproxy zu definieren.
    tcp模式: In diesem Modus stellen Client und Server eine Vollduplex-Verbindung her, ohne dass Layer-7-Nachrichten überprüft werden. Der Standardwert ist der TCP-Modus, der häufig in SSL, SSH, SMTP und anderen Anwendungen verwendet wird.
    http模式: In diesem Modus werden Client-Anfragen vor der Weiterleitung an den Backend-Server tief aufgeteilt und alle Anfragen, die nicht mit dem RFC-Format kompatibel sind, werden abgelehnt.
    health: Grundsätzlich nicht mehr verwendet.
defaults
    mode http		//所处理的类别(7层代理http,4层代理tcp)
    log global		//引入global定义的日志格式
    option dontlognull	//不记录健康检查日志信息
    option httpclose	//每次请求完毕后主动关闭http通道,haproxy不支持keep-alive模式
    option httplog	//日志类别为http日志格式
    option forwardfor	//如果后端服务器需要获取客户端的真是ip,需要配置的参数,可以从http header中获取客户端的ip
    option redispatch
    balance roundrobin	//设置默认负载均衡方式,轮询方式
    timeout connect 10s	//默认连接超时时间
    timeout client 10s	//默认客户端超时时间
    timeout server 10s	//默认服务器超时时间
    timeout check 10s	//设置超时检查超时时间 
    maxconn 60000	//最大连接数
    retries 3		//3次连接失败就认为服务器不可用,也可以通过后面设置

Frontend-Konfiguration

  • Frontend ist eine Komponente, die nach Haproxy-Version 1.3 zusammen mit der Backend-Komponente eingeführt wurde. Durch die Einführung dieser Komponenten wird die Komplexität von Haproxy-Konfigurationsdateien erheblich vereinfacht. forntend kann das zu verwendende Backend basierend auf ACL-Regeln direkt angeben.
    wie:
frontend http_80_in 
bind 0.0.0.0:80    //设置侦听端口,即haproxy提供的web服务端口,和lvs的vip类似
mode http	
log  global   
    option httpclose  
    option httplog  
option forwardfor
default_backend  webserver //设置请求默认转发的后端服务池

Die Backend-Konfiguration
wird verwendet, um die Konfiguration des Backend-Dienstclusters, eines echten Servers, zu definieren. Ein Backend entspricht einem oder mehreren Entitätsservern

backend  webserver  //定义webserver服务器组
mode  http
option  redispath
option  abortonclose
balancer  source   //负载均衡的方式,源哈希算法
cookie  SERVERID  //允许插入serverid到cookie中,serverid后面可以定义
option  httpdchk  GET  /test.html    //心跳测试
server  web1  192.168.92.100:80  cookie  2 weight 3  check  inter 2000  rise 2 fall 3 maconn 8

Die Listen-Konfiguration
wird häufig zur Statusseitenüberwachung und Backend-Server-Inspektion verwendet und ist eine Kombination aus Fronted und Backend.

listen admin_stats	//frontend和backend的组合体,监控组的名称,按需自定义名称
    bind 0.0.0.0:8189	//侦听端口
    stats enable	//开启监控
    mode http
    log global
    stats uri /haproxy_stats    //监控页面的url访问路径
    stats realm Haproxy\ Statistics  //监控页面的提示信息
    stats auth admin:admin  //监控页面的用户和密码
    #stats hide-version   //隐藏统计页面上的haproxy版本信息
    stats admin if TRUE  //手工启用/禁用,后端服务器haproxy
    stats refresh 30s   //每个30秒自动刷新监控页面

Greifen Sie auf die Überwachungsoberfläche zu:http://192.168.92.110:8189/haproxy_stats
Fügen Sie hier eine Bildbeschreibung ein

2. Implementieren Sie einen Lastausgleich

Umweltvorbereitung

CPU-Name IP Adresse Anmerkung
Haproxy 192.168.92.110 haproxy
Webserver 192.168.92.100 Netz
Webserver 192.168.92.1101 Netz

listen implementiert einen einfachen Lastausgleich

#实现一个负载均衡
listen  webcluster 0.0.0.0:80
    option  httpchk GET /index.html
    balance roundrobin
    server  inst1 192.168.92.101:80 check inter 2000 fall 3
    server  inst1 192.168.92.100:80 check inter 2000 fall 3

Starten Sie Haproxy neu, nachdem Sie die Konfigurationsdatei geändert haben
systemctl restart haproxy

Fügen Sie hier eine Bildbeschreibung ein

Konfigurieren Sie die ACL, um unterschiedliche URL-Anfrage-ACLs zu verarbeiten:

Access Control Lists (ACL, Access Control Lists) ist eine Zugriffskontrolltechnologie, die auf Paketfilterung basiert. Sie kann Datenpakete, die über den Server übertragen werden, gemäß festgelegten Bedingungen filtern (Bedingungsanpassung), d. h. sie kann die empfangenen Pakete filtern. Matching und Filtern Sie basierend auf der Quelladresse, dem Quellport, der Zieladresse, dem Zielport, der Anforderungsmethode, der URL, dem Dateisuffix und anderen Informationsinhalten im Header der Anforderungsnachricht, passen Sie sie an und führen Sie weitere Vorgänge durch, z. B. das Zulassen oder Verwerfen.
Spezifische andere Verwendungsmethoden finden Sie unter: Haproxy ACL-Konfiguration und -Fälle

Als Beispiel wird der folgende häufig verwendete URL-Abgleich demonstriert, der dem Standortabgleichspfad in Nginx ähnelt. Die
Konfigurationssyntax und Parameter von ACL in Haproxy:

acl语法:
acl    <aclname>      <criterion>  [flags]  [operator]  [<value>]
acl 该条acl规则的名称    匹配规范   匹配模式  具体操作符  操作对象类型
frontend http-in
    bind 0.0.0.0:80
    acl web url_beg  /web  #配置路基url 定义为web
    use_backend admin_web if web #如果满足web条件 走admin_web 服务
    default_backend admin_server #默认服务

backend admin_web #定义web服务
    mode http
    balance roundrobin  # Load Balancing algorithm
    option httpchk
    option forwardfor
    server  web1 192.168.92.101:80 check inter 2000 fall 3

backend admin_server #定义后端服务
    mode http
    balance roundrobin  # Load Balancing algorithm
    option httpchk
    option forwardfor
    server  web2 192.168.92.100:80 check inter 2000 fall 3

Parse-Konfiguration:

  1. Wenn die aufgerufene URL web Felder enthält, wird sie zum Server 192.168.92.101 weitergeleitet
  2. Andere gehen standardmäßig zum Server 192.168.92.100.
    Fügen Sie hier eine Bildbeschreibung ein

3. Beginnen Sie mit der Problembehandlung

Nach dem Ändern der Konfigurationsdatei wird möglicherweise die Fehlermeldung angezeigt, dass
Haproxy nicht gestartet werden kann. Die Fehlermeldung lautet:
Starting Proxy admin_stats: socket [0.0.0.0:8189] kann nicht gebunden werden
Fügen Sie hier eine Bildbeschreibung ein
. Lösung:
setsebool -P haproxy_connect_any=1
Starten Sie es neu und es ist aktiv.
systemctl start haproxy

[root@bogon ~]# setsebool -P haproxy_connect_any=1
[root@bogon ~]# systemctl start haproxy

4. Protokollverarbeitung

Die Protokolle von Haproxy werden standardmäßig im Syslog des Systems ausgegeben. Um die Protokolle von Haproxy besser verwalten zu können, werden sie im Allgemeinen separat in der Produktionsumgebung definiert.

1.Haproxy-Protokollkonfiguration

[root@localhost ~]# vim /etc/haproxy/haproxy.cfg 
# this config needs haproxy-1.1.28 or haproxy-1.2.1
 
global
    #log 127.0.0.1  local0 
    #log 127.0.0.1  local1 notice
     
    log /dev/log    local0 info
    log /dev/log    local0 notice
    
[root@localhost ~]# systemctl restart haproxy

Diese beiden Konfigurationszeilen werden in der globalen Option platziert, hauptsächlich um die Informationen und Hinweisprotokolle von Haproxy in verschiedenen Protokolldateien aufzuzeichnen.

2. Ändern Sie die rsyslog-Konfiguration

Um die Verwaltung zu erleichtern, werden Haproxy-bezogene Konfigurationen unabhängig definiert haproxy.confund /etc/rsyslog.d/unter abgelegt. Wenn rsyslog startet, werden automatisch alle Konfigurationsdateien in dieses Verzeichnis geladen.
vim /etc/rsyslog.d/haproxy.conf

[root@localhost ~]# vim /etc/rsyslog.d/haproxy.conf
if ($programname == 'haproxy' and $syslogserverity-text == 'info') then -/var/log/haproxy/haproxy-info.log &~
if ($programname == 'haproxy' and $syslogserverity-text == 'notice') then -/var/log/haproxy/haproxy-notice.log &~  

Zeichnen Sie das Infoprotokoll von Haproxy auf /var/log/haproxy/haproxy-info.logund
das Hinweisprotokoll auf /var/log/haproxy/haproxy-notice.log.

&~Zeigt an, dass rsyslog nach dem Schreiben in die Protokolldatei die Verarbeitung dieser Informationen beendet (Rainerscript-Skriptsprache).

3. Starten Sie den rsyslog-Dienst neu und prüfen Sie, ob die Protokolldatei erfolgreich erstellt wurde.

[root@localhost ~]# systemctl restart rsyslog
#查看日志文件是否创建成功
[root@localhost ~]# ls -l /var/log/haproxy/haproxy-info.log
[root@localhost ~]# ls -l /var/log/haproxy/haproxy-notice.log

Acho que você gosta

Origin blog.csdn.net/qq_38055805/article/details/129578853
Recomendado
Clasificación