CONTENT
- CHANGES
Szukaj
#top Instalacja¶
Instalację serwera HAProxy można wykonać na różne sposoby: od kompilacji ze źdródeł poprzez instalację pojedynczych paczek rpm za pomocą polecenia rpm skończywszy na instalacja z użyciem menedżera pakietów, który zainstaluje wszystkie niezbędne paczki wraz zależnościami.
Celem niniejszego dokumentu nie jest rozważanie różnych metod instalacji tylko nieco usprawnienie użyteczności konfiguracji serwera HAProxy po zainstalowaniu oraz wprowadzenie porządku / hierarchi położenia plików z których korzysta usługa w strukturze katalogowej.
Wszystko to zostało opisane poniżej.
#top Logging¶
W pierwszej kolejności należy utworzyć katalog na pliki logów:
mkdir -p /var/log/haproxy
HAProxy bezpośrednio sam nie zapisuje informacji do plików. Wykorzystuje do tego celu demona syslog / rsyslog do którego wysyła informacje poprzez sieć na skonfigurowany w sekcji globalnej adres oraz port (w tym celu należy najpierw w demonie syslog włączyć odbieranie logów ze zdalnych maszyn / hostów, zobacz syslog - remote logging)
W zależności od wersji demona syslog / rsyslog (zależnej od wersji systemu operacyjnego) włączenie odbieranie logów ze zdalnych maszyn / hostów konfiguruje się nieco odmiennie:
syslogd
Dla demona syslog dostępnego w systemie CentOS 5.* realizuje się to poprzez dodanie opcji
-r
do zmiennej SYSLOGD_OPTIONS
przechowywanej w pliku /etc/sysconfig/syslog
przekazywanej do argumentów wiersza poleceń demona podczas uruchamiania:# Options to syslogd # -m 0 disables 'MARK' messages. # -r enables logging from remote machines # -x disables DNS lookups on messages recieved with -r # See syslogd(8) for more details SYSLOGD_OPTIONS="-r -m 0"
Dla demona rsyslog dostępnego w systemie CentOS 6.* realizuje się to poprzez odkomentowanie opcji
$ModLoad
i $UDPServerRun
znajdujących się w pliku konfiguracyjnym /etc/rsyslog.conf
demona:
# Provides UDP syslog reception
$ModLoad imudp.so
$UDPServerRun 514
Po skonfigurowaniu demona syslog / rsyslog należy w sekcji globalnej HAProxy wpisać adres IP serwera, do którego będą wysyłane informacje.
global #log 127.0.0.1 local0 #log 127.0.0.1 local1 notice log 127.0.0.1 local0
#top Poinstalacyjna konfiguracja¶
#top global¶
W pierwszej kolejności po zainstalowaniu HAProxy należy ustawić odpowiednie opcje demona w sekcji
globals
. Dostępne domyślne opcje najczęściej nie wymagają zmian. Jedną z istotnych zmian, które należy wprowadzić w tej sekcji to wpisać adres IP serwera syslog do którego będą wysyłane informacje o połączeniach. Sekcja globals
po uzupełnieniu adresu IP serwera syslog powinna wyglądać analogicznie jak poniżej:#--------------------------------------------------------------------- # Global settings #--------------------------------------------------------------------- global #log 127.0.0.1 local0 #log 127.0.0.1 local1 notice log 127.0.0.1 local0 log 127.0.0.1 local1 notice #chroot /var/empty chroot /usr/share/empty pidfile /var/run/haproxy.pid # Fix the maximum number of concurrent connections on a frontend # Proxies will stop accepting connections when this limit is reached maxconn 4096 uid 99 gid 99 daemon #debug #quiet # turn on stats unix socket stats socket /var/lib/haproxy/stats
#top defaults¶
W następnej kolejności po zainstalowaniu HAProxy należy ustawić domyślne ustawienia w sekcji
defaults
. W niniejsze sekcji ustawiane są domyślne parametry działania (częśc z nich może być nadpisywana w sekcjach frontend
oraz backend
):- trybu pracy (
mode
), - opcje związane maksymalną liczbą akceptowanych połączeń (
maxconn
), - opcje związane z logowaniem informacji (
log global
,option httplog
,option dontlognull
), - opcje związane z nagłówkami HTTP (pl.wiki, en.wiki) w szczególności przydatną opcję
option forwardfor
pozwalającą przekazać adres IP klienta ukrytego za serwerem HAProxy w nagłówkuX-Forwarded-For
(en.wiki), - opcje związane z maksymalnym czasem oczekiwania zarówno na żądanie wysyłane przez klienta jak również na odpowiedź wysyłaną przez serwery (
timeout ...
),
#--------------------------------------------------------------------- # common defaults that all the 'listen' and 'backend' sections will # use if not designated in their block #--------------------------------------------------------------------- # timeout check # timeout client # timeout clitimeout (deprecated) # timeout connect # timeout contimeout (deprecated) # timeout http-keep-alive # timeout http-request # timeout queue # timeout server # timeout srvtimeout (deprecated) # timeout tarpit # transparent (deprecated) defaults log global # Set the running mode or protocol of the instance # tcp - The instance will work in pure TCP mode. # http - The instance will work in HTTP mode. # health - The instance will work in "health" mode. It will just reply "OK" to incoming connections and close the connection. Nothing will be logged. mode http # Enable logging of HTTP request, session state and timers option httplog # Enable or disable logging of null connections option dontlognull # If "option http-server-close" is enabled at the same time as "httpclose", #it basically achieves the same result as "option forceclose". option httpclose option http-server-close # Enable insertion of the X-Forwarded-For header to requests sent to servers option forwardfor except 127.0.0.0/8 # Enable or disable session redistribution in case of connection failure # Specifying "option redispatch" will allow the proxy to break their # persistence and redistribute them to a working server option redispatch # Set the number of retries to perform on a server after a connection failure retries 3 # Fix the maximum number of concurrent connections on a frontend # Proxies will stop accepting connections when this limit is reached maxconn 1024 # Set the maximum time to wait for a connection attempt to a server to succeed timeout connect 30s # Set the maximum inactivity time on the server side timeout server 300s # Set additional check timeout, but only after a connection has been already established timeout check 10s # Set the maximum allowed time to wait for a complete HTTP request timeout http-request 30s # Set the maximum inactivity time on the client side timeout client 30s # Set the maximum allowed time to wait for a new HTTP request to appear timeout http-keep-alive 10s # Set the maximum time to wait in the queue for a connection slot to be free timeout queue 10s # Return an HTTP redirection to a URL instead of errors generated by HAProxy # errorloc < code > <url> # Return a file contents instead of errors generated by HAProxy # errorfile < code > <file>
#top frontend¶
W przedostatniej kolejności po zainstalowaniu HAProxy należy dodać odpowiednie reguły w sekcji
frontend
. Niniejsza sekcja jest pewnego rodzaju odpowiednikiem Virtualnych Hostów (en.wiki) konfigurowanych w serwerach WWW. Korzystając z odpowiednich reguł sprawdzających dane w nagłówku HTTP (reqisetbe
lub acl
wraz z use_backend
) żądanie może zostać przesłane do obsługi przez określone serwery WWW, które zostały do tego celu wyznaczone.#--------------------------------------------------------------------- # main frontend which proxys to the backends #--------------------------------------------------------------------- frontend public bind 0.0.0.0:80 monitor-uri /monitoruri acl a_cen06x64_php hdr(host) -i cen06x64.xen.wbcd.pl use_backend dynamicphp if a_cen06x64_app #reqisetbe ^Host:\ cen06x64.xen.wbcd.pl host_cen06x64_app acl a_cen06x64_www hdr(host) -i static.cen06x64.xen.wbcd.pl use_backend host_cen06x64_www if a_cen06x64_www #reqisetbe ^Host:\ static.cen06x64.xen.wbcd.pl host_cen06x64_www acl a_praca_app hdr(host) -i praca.app.wbcd.pl use_backend host_cen06x64_app if a_praca_app #reqisetbe ^Host:\ praca.app.wbcd.pl host_cen06x64_app acl a_praca_www hdr(host) -i static.praca.app.wbcd.pl use_backend host_cen06x64_www if a_praca_www #reqisetbe ^Host:\ static.praca.app.wbcd.pl host_cen06x64_www default_backend host_cen06x64_app
#top backend¶
W ostatniej kolejności po zainstalowaniu HAProxy należy dodać odpowiednie reguły w sekcji
backend
. Niniejsza sekcja stanowi swego rodzaju listę serwerów odpowiedzialnych za obsługę tego samego typu żądań (server
). W niniejszej sekcji określana jest metoda według której rozkładany jest ruch do serwerów WWW (balance
). W przypadku stosowania jako metody rozkładania ruchu roundrobin
w opcji server
(Server and default-server options) można również określić "wagę" serwerów WWW, dzięki czemu ilość ruchu kierowanego do danego serwera WWW w porównaniu do innych może być zależna od wydajności danego serwera WWW. Co również istotne w przypadku serwerów aplikacyjnych w sekcji backend
możliwe jest włączenie StickySessions (blog.haproxy.com, pl.wiki, en.wiki), czyli umieszczanie w nagłówkach żądania/odpowiedzi informacji pozwalających ponowne (powracające) żądanie przekierować do tego samego serwera (w przypadku przekierowania żądania do innego serwera może okazać się konieczność ponownego logowania w przypadku braku mechanizmu współdzielenia sesji pomiędzy serwerami). # The dynamic backend for app backend host_cen06x64_app # Define the load balancing algorithm to be used in a backend balance roundrobin # Enable HTTP protocol to check on the servers health # By default, server health checks only consist in trying to establish a TCP connection # When "option httpchk" is specified, a complete HTTP request is sent # once the TCP connection is established, and responses 2xx and 3xx are considered valid, # while all other ones indicate a server failure, including the lack of any response option httpchk HEAD /globals.php cookie DYNSRV insert indirect nocache server dynsrv1 10.41.0.58:81 check inter 10000
# The static backend backend for /www backend host_cen06x64_www # Define the load balancing algorithm to be used in a backend balance roundrobin # Enable HTTP protocol to check on the servers health # By default, server health checks only consist in trying to establish a TCP connection # When "option httpchk" is specified, a complete HTTP request is sent # once the TCP connection is established, and responses 2xx and 3xx are considered valid, # while all other ones indicate a server failure, including the lack of any response option httpchk HEAD /index.html server statsrv1 10.41.0.58:82 check inter 10000
Zmodyfikowany ostatnio: 2015/10/07 12:37:07 (9 lat temu),
textsize: 19,0 kB,
htmlsize: 24,8 kB
Zapraszam do komentowania, zgłaszania sugestii, propozycji, własnych przykładów, ...
Dodaj komentarzKomentarze użytkowników