Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Hej,
Tworzę w sieci VMkę na której ma działać Haproxy. Przyjmijmy że ma ona nazwę h1.
VMka h1 ma dwa interfejsy:
- eth0 ( dla sieci wewnętrznej - adres przydzielany z DHCPa 10.X.112.20 )
- eth1 ( dla sieci zewnętrznej 141.X.X.131 + alias 141.X.X.130 ( floating IP między VMkami na których działa haproxy/keepalive ) ).
VMka f6 z apache2 ma jeden interfejs:
- eth0 ( sieć wewnętrzna - adr z dhcpa - 10.X.112.17 )
Tworzę następującą konfigurację dla haproxy na h1:
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 # Default ciphers to use on SSL-enabled listening sockets. # For more information, see ciphers(1SSL). This list is from: # https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/ ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS ssl-default-bind-options no-sslv3 defaults log global mode tcp option tcplog option dontlognull option dontlog-normal 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 listen stats *:1936 mode http stats enable stats hide-version stats uri /stats stats realm HAProxy Statistics stats auth admin:admin listen WWW-HTTP 141.X.X.130:80 mode tcp option tcplog maxconn 10000 balance leastconn server f6 10.X.112.17:80 maxconn 5000 check
Po uruchomieniu haproxy, rzeczywiście nasluchuje na tym IPku oraz na porcie 80, gdy robię wywołanie np. netstat -plnt.
Następnie użyty adres IP ( 141.X.X.130 ) dodaję do konfiguracji keepalive'a ( adres ten będzie pływającym adresem IP między dwoma VMkami ).
vrrp_script chk_haproxy { # Requires keepalived-1.1.13 script "pidof haproxy" # widely used idiom interval 2 # check every 2 seconds weight 2 # add 2 points of prio if OK } vrrp_instance VR_69 { interface eth1 state MASTER # or "BACKUP" on backup advert_int 4 priority 101 # 101 on master, 100 on backup smtp_alert virtual_router_id 69 virtual_ipaddress { 141.X.X.130 } track_script { chk_haproxy } }
Tablica routingu:
h1:
default via 141.X.X.129 dev eth1
10.X.X.0/20 dev eth0 proto kernel scope link src 10.X.X.20
141.X.X.128/29 dev eth1 proto kernel scope link src 141.X.X.131
f6:
default via 10.X.X.1 dev eth0
10.X.X.0/20 dev eth0 proto kernel scope link src 10.X.X.17
Po odpaleniu keepalive'a adres 141.X.X.130 pojawia się jako alias do eth1. Po wyłączeniu jednej VMki z Haproxy przeskakuje adres skutecznie na drugą VMkę.
Problem jest w tym że nie jestem w stanie zrobić np. 'curl 141.X.X.130' aby mi się wczytała stronka która podaje się z f6 - lecą timeouty gdy to robię z mojego laptopa i hosta lokalnego.
Gdy jestem na h1 i wpisuję 'curl 141.X.X.130' strona ładuje się poprawnie.
W /etc/sysctl.conf dodałem jeszcze:
net.ipv4.ip_forward=1 net.ipv4.ip_nonlocal_bind=1
Ale to również nie pomaga.
Czy coś jeszcze tutaj powinno być zrobione aby to zaczęło działać?
Ostatnio edytowany przez sqrtek (2016-03-27 18:44:52)
Offline
ref..
any ideas?
Offline
Próbowałeś wcześniej Nginxa?
Bo ja bym raczej od niego zaczął.
Offline
Konfiguracja była poprawna, problem leżał po stronie OpenStacka w moim przypadku, czyli zupełnie nie związane z tematem :).
Offline