2016-11-21 9 views
0

Мне нужно посоветовать, как настроить haproxy. У меня работает два веб-сервера. Для тестирования они бегут простой сервер узла на порт 8080.Layer4 «Connection failed» с haproxy

Теперь на моем HAproxy сервере я начинаю HAProxy, который дает мне следующее:

$> /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg 
[WARNING] 325/202628 (16) : Server node-backend/server-a is DOWN, reason: Layer4 connection problem, info: "Connection refused", check duration: 0ms. 1 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue. 
[WARNING] 325/202631 (16) : Server node-backend/server-b is DOWN, reason: Layer4 timeout, check duration: 2001ms. 0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue. 
[ALERT] 325/202631 (16) : backend 'node-backend' has no server available! 

Просто одно примечание: Если я:

haproxy$> wget server-a:8080 

Получаю ответ от сервера узла.

Вот мой haproxy.cfg:

#--------------------------------------------------------------------- 
# Global settings 
#--------------------------------------------------------------------- 
global 
    log   127.0.0.1 local2 

    chroot  /var/lib/haproxy 
    pidfile  /var/run/haproxy.pid 
    maxconn  4000 
    user  haproxy 
    group  haproxy 

    stats socket /var/lib/haproxy/stats 

#--------------------------------------------------------------------- 
# common defaults that all the 'listen' and 'backend' sections will 
# use if not designated in their block 
#--------------------------------------------------------------------- 
defaults 
    mode     tcp 
    log      global 
    option     tcplog 
    option     dontlognull 
    option http-server-close 
# option forwardfor  except 127.0.0.0/8 
    option     redispatch 
    retries     3 
    timeout http-request 10s 
    timeout queue   1m 
    timeout connect   10s 
    timeout client   1m 
    timeout server   1m 
    timeout http-keep-alive 10s 
    timeout check   10s 
    maxconn     3000 

#--------------------------------------------------------------------- 
# main frontend which proxys to the backends 
#--------------------------------------------------------------------- 
frontend www 
    bind      *:80 
    default_backend    node-backend 

#--------------------------------------------------------------------- 
# round robin balancing between the various backends 
#-------------------------------------------------------------------- 
backend node-backend 
    balance roundrobin 
    mode tcp 
    server server-a 172.19.0.2:8080 check 
    server server-b 172.19.0.3:8080 check 

Если удалить check вариант это, кажется, работает. Любые предложения, как я могу исправить этот механизм проверки haproxy?

ответ

1

Удалите «режим tcp» и измените его на «режим http».
Im только угадывая здесь, но я полагаю, что haproxy делает проверку tcp против вашего веб-сервера, и веб-сервер не может ответить на него.
в «режиме HTTP» проверяет веб-сервер в режиме HTTP и ожидает «ответ 200» для проверки L4 и ожидает строку (независимо от того вы определили) в качестве проверки L7

например. L4

backend node-backend balance roundrobin mode http #(NOT NEEDED IF DEFINED IN DEFAULTS) option httpchk server server-a 172.19.0.2:8080 check server server-b 172.19.0.3:8080 check
eg. L7

backend node-backend balance roundrobin mode http #(NOT NEEDED IF DEFINED IN DEFAULTS) option httpchk get /SOME_URI http-check expect status 200 server server-a 172.19.0.2:8080 check server server-b 172.19.0.3:8080 check

+0

я хоть что L4 устанавливается с помощью '' режиме tcp' Что именно. Итак, что именно определяет L4 или L7? –

+0

L4 - это проверка уровня 4 (модель OSI). L7 - это проверка уровня 7. , так что L4 ответит кодом состояния 500,404,200,301 ... и т. Д. L7 рассмотрит «Контент», возвращенный запросом ... http-заголовки, строки json, что бы ни было в теле результата –

 Смежные вопросы

  • Нет связанных вопросов^_^