Redundant openfire with out enterprise clustering

I am trying to figure out a way to have redundant openfire servers. I don’t have the budget to get the openfire Enterprise version with clustering.

I was wondering if anyone knows a way to a back up server…

Maybe with server-server connections or connection managers, i don’t know.

I have a CM bound to my openfire server and have my clients connect to the CM. If i reboot the openfire server the CM’s drop all my cleints.

is there a better way to do this???

Hey Xihuitl,

Unfortunately, the answer is no. Even when using Connection Managers you are still relying on a single point of failure that is your unique server. The only way to ensure that the XMPP service is up and running all the time is to have more than one Openfire server instance hosting the same domain. That is called clustering.

There are some initiatives in the community of people trying to get clustering going with some GPL frameworks. Until they are available your best bet is to either get Openfire clustering or have another server started up but idle and when your main server goes down then your load balancer will use the idle/backup server. With this solution when the XMPP service goes down you will affect all connected users but at least the downtime of the service is not that bad.

Regards,

– Gato

Hi Gato,

I see no point in not making the clustering part of the Enterprise Plugin open source. Also the Asterisk Plugin needs additional software to be useful. Of course one needs also Coherence licenses but they do not cost too much.

LG

Uhh, aren’t coherence licenses like $4k per CPU per year or something like that?

Hi,

I thought of $4K per year and 2 CPUs, quite cheap compared to $15K a database license.

As one has usually more than 1000 users when using clustering the per user price is quite low.

LG

it2000 wrote:

I see no point in not making the clustering part of the Enterprise Plugin open source. Also the Asterisk Plugin needs additional software to be useful. Of course one needs also Coherence licenses but they do not cost too much.

LG

Hi, LG,

I have been told that the clustering part is proprietary 3rd party technology, which is why it isn’t part of the open sourcing of the Enterprise plugin. We have been using Enterprise with clustering for almost a year and we will continue to pay for the clustering part if needed.

  • Rob

I see the point of the enterprise active/active cluster costing money. everyone needs to eat…

I don’t see why openfire lacks an active/passive . I just want to prevent all 500 users from sending me an email all at one time saying the sever is down.

Like gato said a loadbalancer is what is needed to do this. I am sure that the connection manager could be setup to listen for a heartbeat plugin on openfire. if there is no heartbeat then the <domain>address>/domain> would change to the backup device.

openfireHAproxy heartbeatconnection manager =

woe is me if only i was a coder :_|

in theory (i would have to try this) but you could probably use lvs to cluster 2 hosts and have active passive. this doesn’t really help a scaling problem but it would help for redundancy.

I am using lvs now for another application and you could (probably) take 2 machines, run ldirectord on both nodes and they would share a virtual ip address. you would then use the virtual ip address for your chat name space. so clients connect to the VIP. using heartbeat and ldirectord you could have a active/passive setup.

I will fire up some VM’s when I get a chance and try this out. Like I said, this would do anything for scaling since the openfire instances wouldn’t really have a clue about each other. I don’t really understand the connection manager, but it might be possible ( in my vague understanding of it) to have connection manager running on both servers to connect to each other and then you could have lvs do round robin and have active/active.

and to the above poster, haproxy and other “load balancers” are best suited for web load balancing because they can only forward http headers. this means that each connection would appear to come from the same place. lvs-nat would probably be what you need for this to work if its possible.

1 Like