HAProxy switch only in case of server down
Let's say I have 2 servers - SA and SB. Is it possible to configure HAProxy to work like this:
All connections goes to SA -> SA goes down -> HAProxy switches all connections to SB -> until SB is not down - no connections go to SA, even if it is up again -> SB down -> HAProxy switches to SA...
In brief I would like HAProxy to switch only when current server goes down. Maybe I should use sth else than HAProxy?
Check out this config:
listen my-server 0.0.0.0:80
balance roundrobin
server web01 10.10.10.1:80 check inter 10s fall 3 rise 99999999
server web02 10.10.10.2:80 check backup
All requests will hit web01 by default. web02 will not be used. If web01 stops responding, after 30s (3 checks at 10 seconds intervals) the server will be taken offline. web02 will be brought online and all requests will hit it.
If web01 recovers, it will only be brought back online once 99999999 checks at an interval of 10 seconds pass - which is effectively never.
If you have only two, and exactly two servers, it may make more sense to use a vip for the service that you manage via pacemaker/corosync to make it highly available.
It is possible with haproxy too, by marking SB as backup server. That way it's only used when SA is not available:
backend mybackend
mode http
balance roundrobin
option httpchk /test.html
server server1.example.com server1.example.com:80 weight 1 check port 80 inter 5s rise 3 fall 2
server server2.example.com server2.example.com:80 backup weight 1 check port 80 inter 5s rise 3 fall 2
However, this does not accomplish part two of what you want: it will start using A SA again as soon as it's back. I'm not sure whether there's an option to make haproxy behave the way you want. I've at least never used it.