Openfire is very capable of handling several thousands of users. In this chapter, the rubber hit the road. We've put to test Openfire's scalability claims, and in doing so have introduced redundancy into our setup to make sure that a server failing doesn't affect the service.
There are two ways in which a server can be configured to distribute loads—by forming a cluster of Openfire nodes and by delegating Connection Managers to make connections to clients. The clustering feature is bundled with Openfire Enterprise edition, while the Connection Manager module can be downloaded for free. Because clustering in HTTP is different from XMPP clustering, we've also discussed how one can use simple load balancers and clients that reconnect automatically to provide an uninterrupted IM'ing experience.
Not many people run Connection Managers, since they were primarily introduced to counter a now-extinct Openfire limitation. But they are still a viable cost-effective option to scale Openfire...