-czyli jak pozwolić adminowi spać w nocy Problemy? Co to jest HAProxy? Zabawę czas zacząć Podsumowanie Maciej Milaszewski maciejm@hicon.pl
Problem: Miałem raczej na myśli układ w którym Ty odwalasz czarną robotę, a Ja się na to patrzę i siem niecierpliwie Wzrost zainteresowania serwisu Klient maruda KLIENT MARUDA ;) Optymalizacja KOSZTA KOSZTA
Szacuneczek, pradawni bogowie. The Reliable, High Performance TCP/HTTP Load Balancer
Dobra a teraz się skup bo wcielam się w robota i to jest wstrząsający performance! LoadBalancer TCP / http Wydajny Szybki HA(High Availability) Niezawodny Wielosystemowy DOKUMENTACJA http://haproxy.1wt.eu/
Chodź, robimy performance. 16 kb per session, ~60000 sessions per GB RAM 108000 HTTP requests per second 40000 forwarded HTTP requests per second Dual Core 1.8 25000 sessions/s (hit/s)
Konfiguracja: Zawsze jest jakaś opcja. global log 127.0.0.1 local1 notice #log loghost:514 local0 info maxconn 4096 user haproxy group haproxy defaults mode http timeout connect 5000ms timeout client 50000ms timeout server 50000ms frontend http-in bind 192.168.1.1:80 default_backend servers backend servers server server1 192.168.1.100:80 maxconn 500 check inter 2000 fall 2 listen http-in2 bind 192.168.1.2:80 server server1 192.168.1.1001:80 maxconn 500 check inter 2000 fall 2
Haproxy 2 x nod www 1 x backup
Będzie piękny, genialny, ale co najważniejsze skromny. Konfiguracja A: listen KLIENT 192.168.1.1:80 mode http balance roundrobin option httpchk option httpclose server websvr1 192.168.1.100:80 max con 500 check inter 1000 fall 5 server websvr2 192.168.1.101:80 max con 500 check inter 1000 fail 5 server websvr-backup 192.168.1.200:80 check backup
Konfiguracja A: Będzie piękny, genialny, ale co najważniejsze skromny. listen KLIENT 192.168.1.1:80 mode http balance roundrobin option httpchk option httpclose server websvr1 192.168.1.100:80 max con 500 check inter 1000 fall 5 weigh 20 server websvr2 192.168.1.101:80 max con 500 check inter 1000 fail 5 weigh 80 server websvr-backup 192.168.1.200:80 check backup
Haproxy 2 x nod www: - static Nginx - dynamic apache2 1 x backup
Konfiguracja B - ACL: Mam moc, mam moc! frontend KLIENT bind 192.168.1.1:80 acl acl_static_nginx url reg.\*.(gif jpg jpeg png js pdf swf css)$ acl acl_dynamic_apache path_end.php.html use_backend nginx if acl_static_nginx use_backend apache if acl_dynamic_apache default_backend apache backend nginx mode http balance roundrobin option httpchk option httpclose server websvr1 192.168.1.100:80 max con 500 check inter 1000 fall 5 server websvr-backup 192.168.1.200:81 check backup backend apache mode http balance roundrobin option httpchk option httpclose server websvr2 192.168.1.101:80 max con 500 check inter 1000 fall 5 server websvr-backup 192.168.1.200:80 check backup listen stats bind 127.0.0.1:1212 stats enable stats hide-version stats uri / stats realm stats
Konfiguracja B - ACL: Mam moc, mam moc! frontend KLIENT bind 192.168.1.1:80 acl acl_static_nginx url_reg.\*.(gif jpg jpeg png js pdf swf css)$ acl acl_dynamic_apache path_end.php.html acl missing_slash path_reg ^/article/[^/]*$ redirect code 301 prefix / drop-query append-slash if missing_slash acl mysite_www hdr_reg(host) ^mydomain.com redirect code 301 location http://www.mydomain.com if mysite_www use_backend nginx if acl_static_nginx use_backend apache if acl_dynamic_apache default_backend apache
Konfiguracja B - ACL: Albowiem łi ar wy czempions! acl acl_static_nginx url reg.\*.(gif jpg jpeg png js pdf swf css)$ acl acl_dynamic_apache path_end.php.html use_backend nginx if acl_static_nginx use_backend apache if acl_dynamic_apache default_backend apache backend nginx mode http balance roundrobin option httpchk server websvr1 192.168.1.100:80 max con 500 check inter 1000 fall 5 weigh 20 server websvr1a 192.168.1.101:80 max con 500 check inter 1000 fall 5 weigh20 server websvr-backup1 192.168.1.200:80 check backup backend apache mode http balance roundrobin option httpchk server websvr2 192.168.1.60:80 max con 500 check inter 1000 fall 5 weigh 20 server websvr2a 192.168.1.61:80 max con 500 check inter 1000 fall 5 weigh 20 server websvr-backup2 192.168.1.201:80 check backup
A co z SSL? Nie.. a nawet tak!
A co z SSL? Powered by STUNNEL: cert = /etc/stunnel/cert/foo.crt key = /etc/stunnel/cert/foo.key accept = 443 connect = IP:PORT (HAProxy np. 4343) xforwardedfor = yes HAProxy: Frontend IP:PORT (HAProxy np. 4343) IP:PORT reqadd HTTPS:\ on default_backend websvr2 Nie.. a nawet tak! Hańba Ci!
SMTP.. nom, som takie sytuacje listen stats :80 mode http stats enable stats auth hadmin:alamakota stats refresh 50s listen smtp 194.176.X.X:25 mode tcp maxconn 1000 option tcplog balance roundrobin server mail133 194.X.X.133:25 check inter 10000 server mail132 194.X.X.132:25 check inter 10000
Szacuneczek, pradawni bogowie. listen stats bind 192.168.1.10:1212 stats enable stats hide-version stats uri / stats realm stats
Szacuneczek, pradawni bogowie. global stats socket /var/run/haproxy.stats
.. nom, som takie sytuacje
.. nom, som takie sytuacje IN PROGRESS: 1 x HAProxy
.. nom, som takie sytuacje IN PROGRESS: 1 x HAProxy 1 x embadded web server
.. nom, som takie sytuacje IN PROGRESS: 1 x HAProxy 1 x embadded web server 1 x kofimaszin ;)
.. nom, som takie sytuacje IN PROGRESS: 1 x HAProxy 1 x embadded web server 1 x kofimaszin ;)
.. nom, som takie sytuacje
...Która to opowieść mnie znudziła, bo nie była o mnie. Kumasz zależność.
Cięcie! Po reżysersku to znaczy morda. KONIEC