Q: How does our client know which application servers to talk to. How does it know which application servers have gone down and which ones are still working?
What is the load balancers become bottlenecks ?
Loadbalancers also need to be clustered / redundant. In a good scenario, you can host stateless applications in different geographically located data centers ( they are in different network obviously ). And you register both the load balancers in your public DNS server. The load balancers communicate with each other in order to know if the other one in dead or alive. So if one is inactive, the other one can be activated. Anyway this itself is a matter of lot of discussion. So inorder to make a system highly available, redundancy must be in every layer. But it has its own problem though. Still sometimes highly available applications face outage. It happens. Unfortunately if both of your load balancers fail, the whole application service will stop. But that is rare and to avoid that scenario, applications are made stateless as far as possible and hosted in different geo location.