You can use any load balancer - Solr says HTTP, making existing load balancing technology available. HAProxy, varnish, nginx, etc. They will work as you expect, and you can use all the advanced features offered by the various packages. It will also be independent of the client, which means that you are not limited to SolrJ's LBHttpSolrServer class or your specific client. Some LB solutions also offer high-performance caching (varnish) or dynamic real-time switching between nodes in real time.
Another option that we also used was to replicate the kernel to each node website, which allows us to always query the local host for the search.
source share