Haproxy đóng vai trò như một reverse proxy thực hiện load balancer. Bản thân một haproxy thì không ấn định high availabilty (HA) cho chính nó. Tính chất HA là ấn định cho cac backend server đằng sau nó. Nếu chỉ có một haproxy thì mô hình sẽ có một SPOF (Single Point Of Failure). Nó down thì cả hệ thống down theo. Để giải quyết, chúng ta có thể thêm một haproxy để dự phòng (redundancy). Nhưng phương án đó lại phát sinh thêm vấn đề . Khi failover xảy ra client làm sao kết nối đến haproxy dự phòng. Tôi không thể gán cùng một IP lên hai haproxy được. IP conflict sẽ khiến mạng không ổn định. Tôi cũng không thể gán IP khác nhau cho mỗi haproxy được. Khi failover, tôi sẽ phải thông báo cho tất cả client về IP mới. Việc đó thật quá sức. Xem chừng lúc này chúng ta cần đến keepalived. Sử dụng keepalived sẽ cho phép tôi tạo ra một VIP - Virtual IP. Client sẽ kết nối đến haproxy qua VIP này. VIP này sẽ được keepalived luân chuyển sang haproxy dự phòng khi failover. Tất cả đều trong suốt với client. Client không biết được nó đang kết nối đến VIP, nó nghĩ nó đang kết nối trực tiếp đến một single backend thay vì một cluster backend nằm sau VIP. Client sẽ không biết đến real IP của proxy và IP của backend cũng như sự luân chuyển VIP này khi failover.