title: Layer4 "Connection refused" with haproxy
body: <p>I need some advise on how to setup <strong>haproxy</strong>. I have two web-servers up and running. For testing they run a simple node server on port 8080.</p>
  
  <p>Now on my haproxy server I start haproxy which gives me the following:</p>
  
  <pre><code>$&gt; /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!
  </code></pre>
  
  <p>Just one note: If I do: </p>
  
  <pre><code>haproxy$&gt; wget server-a:8080
  </code></pre>
  
  <p>I get the response from the node server.</p>
  
  <p>Here is my haproxy.cfg:</p>
  
  <pre><code>#---------------------------------------------------------------------  
  # 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
  </code></pre>
  
  <p>If I remove the <code>check</code> option it seems to work. Any suggestions how I can fix this checking mechanism of haproxy?</p>