Do I Really Need haproxy If I Already Have keepalived?

Folks, please forgive the ignorant question. We currently run ldirectord with 1800 virtual services: roughly 1200 tomcats, 500 MySQLs, 26 terminal servers, and some other miscellaneous stuff. We are considering switching to a new load balancer technology. Lots of people like keepalived, and many people say their load balancers are using both keepalived and haproxy. However, I don’t understand why haproxy is necessary, since keepalived seems to have everything we need. What is the benefit of running haproxy with keepalived?