HAproxy 503 Service Unavailable No server is available to handle this request
Solution 1:
I've never used HAproxy but a quick search leads me to think you need to add default_backend app
immediately below frontend main *:80
. I see nowhere in that configuration connecting the backend and frontend together.
Solution 2:
Problem is in your HAProxy configuration. When I remove all comments from your config, I will get this:
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
defaults
mode http
log global
option httplog
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
frontend main *:80
backend app
mode tcp
balance roundrobin
server server1 192.168.1.12:80 check inter 2000 rise 2 fall 5
server server2 192.168.1.13:80 check inter 2000 rise 2 fall 5
And now you can clearly see that there is no configuration of frontend at all. Requests comes to HAProxy via frontend main
but HAProxy doesn't know which servers are reliable to handle it, so will return 503.
You have to link backend to frontend with default_backend
or with acl.
You should use stats too, not only with socket but with protected web interface too. I can shows you information about clusters behind haproxy, which servers are offline, which has any problems, about response times and so on. Very usefull for debugging.
Solution 3:
I got a similar error because HAProxy thought my backend was down due to the default health check it does. I disabled the health check and the 503 went away.
I'm using pfsense GUI: