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