ansible-workshop/docs/haproxy.md

2.5 KiB

title
haproxy Konfiguration auf Debian 13 (trixie)

haproxy

haproxy ist ein Loadbalancer.

Die Grundfunktion ist die, dass es Frontend-Konfigurationen gibt, auf denen haproxy Anfragen per http entgegen nimmt.

Den Frontend-Konfigurationen sind Backend-Konfigurationen zugeordnet, auf die haproxy die http-Anfragen weiterleitet. In den Backend-Konfigurationen können ein oder mehrere Server hinterlegt sein. haproxy verteilt bei mehreren Servern im Backend die Anfragen auf die Server.

Default Konfiguration

Die Konfigdatei /etc/haproxy/haproxy.cfg enthält bereits die wichtigsten Standard-Einstellungen:

global
	log /dev/log	local0
	log /dev/log	local1 notice
	chroot /var/lib/haproxy
	stats socket /run/haproxy/admin.sock mode 660 level admin
	stats timeout 30s
	user haproxy
	group haproxy
	daemon

	# Default SSL material locations
	ca-base /etc/ssl/certs
	crt-base /etc/ssl/private

	# See: https://ssl-config.mozilla.org/#server=haproxy&server-version=2.0.3&config=intermediate
        ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
        ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
        ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets

defaults
	log	global
	mode	http
	option	httplog
	option	dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
	errorfile 400 /etc/haproxy/errors/400.http
	errorfile 403 /etc/haproxy/errors/403.http
	errorfile 408 /etc/haproxy/errors/408.http
	errorfile 500 /etc/haproxy/errors/500.http
	errorfile 502 /etc/haproxy/errors/502.http
	errorfile 503 /etc/haproxy/errors/503.http
	errorfile 504 /etc/haproxy/errors/504.http

Einfache Loadbalancer Konfiguration

frontend TheFrontend
    mode            http
	bind			192.0.2.10:80
	default_backend	TheBackend


backend TheBackend
	server			TheWebServer20 192.0.2.20:80
	server			TheWebServer30 192.0.2.30:80

Das Beispiel lässt den haproxy auf der IP 192.0.2.10 auf dem Port 80 auf http-Anfragen lauschen.

Eingehende Anfragen werden an die Server weitergereicht, die im Backend "TheBackend" definiert sind. Dort gibt es pro Server eine Zeile server <name> <ip:port>. Es sind auch noch weitere Konfigurationen pro Server möglich.

haproxy liefert in der Datei /usr/share/doc/haproxy/configuration.txt.gz eine sehr unfassende Dokumentation mit.