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

[b]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.[/b]

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" ~ [i]Steve Jobs[/i]

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" ~ [i]Steve Jobs[/i]

Offline

 

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

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
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" ~ [i]Steve Jobs[/i]

Offline

 

Stopka forum

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

[ Generated in 0.008 seconds, 12 queries executed ]

Informacje debugowania

Time (s) Query
0.00011 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00106 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.137.162.21' WHERE u.id=1
0.00064 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.137.162.21', 1732683858)
0.00058 SELECT * FROM punbb_online WHERE logged<1732683558
0.00074 DELETE FROM punbb_online WHERE ident='18.191.81.46'
0.00048 SELECT topic_id FROM punbb_posts WHERE id=299981
0.00083 SELECT id FROM punbb_posts WHERE topic_id=28457 ORDER BY posted
0.00052 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=28457 AND t.moved_to IS NULL
0.00011 SELECT search_for, replace_with FROM punbb_censoring
0.00065 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=28457 ORDER BY p.id LIMIT 0,25
0.00075 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=28457
Total query time: 0.00651 s