So it is entirely possible to run a network of brokers behind a load balancer such as an F5 or NetScalar (or any of another multitude of choices). Just to list some of the advantages:
- No need for your clients to have to be configured to talk to every broker instance
- Multiple choices for rebalancing clients that aren’t dependent on the random nature of the ActiveMQ driver
- SSL Offloading (Yes, it works)
A word of warning though. Be careful how your load balancer is configured to detect if your ActiveMQ instance is up. If your load balancer is connecting to port 61616 (or whatever your port may be), and is sending traffic across the TCP connection, ActiveMQ will try to start a client session, and it will get hung on the server. This causes a slow memory leak that will persist until your ActiveMQ servers are restarted. You can tell it is happening, if you look at the JVM memory and it continually is doing major garbage collections under no load.
Just a word of warning…
Why Not Common Sense?