- HAProxy is a popular proxy server and load balancer for TCP and HTTP applications.
- As a TCP proxy: It accepts connection on its front-end. Then, it connects to a backend server and attaches the incoming client socket with the outbound backend socket allowing the traffic to flow in both directions.
- As a load balancer: In TCP mode, it load balances whole connections spreading them across multiple backend servers. In HTTP mode, it can load balance each request.
- Multiple load balancing algorithms such as round-robin, least recently used backend server etc. are supported. E.g.
backend userservice-backend balance roundrobin mode http server host1 host1.domain.com:5001 check server host2 host2.domain.com:5001 check
- Health checks are performed to determine if backend servers are available. If a server goes offline, HAProxy will not forward any traffic to it until it becomes online again.
- ACLs are rules and conditions for incoming requests which are used to make certain decision such as forwarding to a backend or discarding the request.
acl myrule SOME CONDITION
use_backend host3.domain.com if myrule
- Could terminate SSL connections.
- Alternatives: Nginx, Linux Virtual Servers (TCP only)