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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2016-03-27 18:26:54

  sqrtek - Użytkownik

sqrtek
Użytkownik
Skąd: /bin/true
Zarejestrowany: 2012-06-14

Problem z haproxy/keepalive

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:

Kod:

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 ).

Kod:

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:

Kod:

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)


"Nie pozwól by zgiełk opinii innych ludzi, zagłuszył Twój wewnętrzny głos" ~ Steve Jobs

Offline

 

#2  2016-03-29 02:16:04

  sqrtek - Użytkownik

sqrtek
Użytkownik
Skąd: /bin/true
Zarejestrowany: 2012-06-14

Re: Problem z haproxy/keepalive

ref..

any ideas?


"Nie pozwól by zgiełk opinii innych ludzi, zagłuszył Twój wewnętrzny głos" ~ Steve Jobs

Offline

 

#3  2016-03-29 02:55:36

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: Problem z haproxy/keepalive

Próbowałeś wcześniej Nginxa?

Bo ja bym raczej od niego zaczął.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#4  2016-04-01 09:47:04

  sqrtek - Użytkownik

sqrtek
Użytkownik
Skąd: /bin/true
Zarejestrowany: 2012-06-14

Re: Problem z haproxy/keepalive

Konfiguracja była poprawna, problem leżał po stronie OpenStacka w moim przypadku, czyli zupełnie nie związane z tematem :).


"Nie pozwól by zgiełk opinii innych ludzi, zagłuszył Twój wewnętrzny głos" ~ Steve Jobs

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)