How to run clustering with oracle coherence?

Hi,

As clustering is not supported any more by Jive as a licensed plugin, has someone tried and successfully managed to implement the clustering solution through Oracle coherence product (solution recommended by Jive)?

I’ve tried to understand how to implement this solution but without any success and I think there is a missing code part that must be implemented in the clustering plugin. So I’m looking for a tutorial how to implement this solution?

Or is there any other possible solution (I’ve heard of Terracotta or Shoal frameworks)?

Thanks is advance for your help.

Laurent

Hi Laurent,

the clustering plugin was indeed a piece of software which did consist of a lot more than Coherence. There’s no need to use Coherence as the underlaying clustering software, one could use Terracotta or Shoal. The clustering plugin is the code which connects to the Openfire API and the clustering API. Gato will likely help you if you have questions writing such a plugin.

LG

Hi LG,

Thank you for your answer.

I don’t want to write a plugin for clustering, I just want to run Openfire with clustering.

But whatever the solution can be (Coherence, Terracotta…), the integration process is far from being simple: at least you have to know the Openfire Java objects to take into account for clustering and to write complex XML configuration files.

So this process is too complex for me and I have no insurance that I did not missed something that could make it unreliable in a production environment.

This is why I’m looking for an already implemented solution, whatever the framework is. So any tutorial could be helpful to me.

Otherwise, as the job as already been implemented for the clustering plugin, I was wondering if some parts could be reused for the integration with coherence (configuration files…)?

Thanks,

Laurent

Hi Laurent,

I think that the code and configuraion templates were contributed by Jivesoftware (Clearspace, Forum Gold) and will never be released.

LG

Hi,

So the answer is that clustering is currently not any more supported by Openfire. Is it right?

Laurent

Hi Laurent,

you could try to contact sales@jivesoftware.com … see also http://www.igniterealtime.org/community/docs/DOC-1492

`Please contact us if clustering is crucial for your project.´

LG

Hi LG,

Thank you for your help.

I’ve already contacted Jive before posting to the community, but they redirected me to Oracle support.

Here is the answer I get from Jive:

"Clustering support for Openfire is no longer available through Jive. Clustering was a 3rd party application through Tangosol which has now been incorporated into Oracle Coherence. You can try to contact Oracle for clustering support here:

http://www.oracle.com/products/middleware/coherence/index.html

All other support for Openfire is through the Ignite Real Time developer community (www.igniterealtime.org), and is no longer directly through Jive."

But I don’t think that Oracle can help me further and give me an implemented solution for Openfire.

I think that the clustering solution should be provided by the community, it is now required for Openfire.

Laurent

I think there are only two options:

  1. Jive opens up the clustering plugin, i.e. the glue code to make Openfire work with Coherence. Then users can buy a Coherence license from Oracle and deploy it to Openfire along with the plugin.

  2. Someone sponsors a community effort to build a new clustering plugin based on an Open Source clustering solution

  1. Someone sponsors a community effort to build a new clustering plugin based on Coherence.

  2. Someone has a lot of time to do this, should be quite simple using Coherence.

here is a question. is the purpose of people trying to cluster because of load or high availability? I ask because you could have an active/passive cluster with tools already available if you were just trying to get high availability if your using linux.

for your DB you could use mysql replication and replicate mysql between the servers or use drbd for a raid1 network disk.

then use heartbeat to cluster the 2 machines and give you a shared ip address. make dns point to the new shared ip address. have heartbeat configured with openfire as a resource so when it starts it starts openfire. now you will have a main machne and a secondary machine. when node1 dies or loses network node2 will pick up and get the same ip and then if your replication or drbd setup is setup correctly it will connect to the “same” DB and you are back in business.

this doesn’t help for scaling, but for that I would imagine you could use connection manager for scaling, but I would think this would work for high availability

In our case we have both needs: high-availability and load balancing.

For high-availability, I agree that an active/passive cluster can be a solution but not as efficient as an active/active cluster as you can loose some context session (in memory) that is not replicated through the database. But this is the workaround solution we plan to use in the meantime of having a true clustering solution.

For load-balancing and scaling, I think that the connection manager solution can help but also has some limitations: it allows to manage a large number of client connections, but it does not decrease the load required on the XMPP server to serve the requests.

I’m wondering if there is any more traction on this item?

I understand the whole it used to be there, but now it is not…but from a feature perspective, it might be nice to be able to support this configuration OOTB without a plugin. Might be echoing the general message of the masses…but thought it was worth (re)mentioning.

Some thoughts that I’d like to throw out there and get everyone’s thoughts on are the following:

As mentioned in this thread, an active/passive strategy is doable with OpenFire. Is this what the OpenFire team recommends? Is it just because there are no other options at this point in time, or is it because it is the best ROI from both developer/consume? Minus the standard argument of data missiing in memory between N servers (not being synced up), how does this manifest to the end-user? What are some worse possible case scenarios, besides a person having to re-engage a chat-session/room. Just trying to make sure I’m not being too narrow minded…so this is a true open question.

As I attempt to move forward to bring together OpenFire/Clearspace (a vision started almost 2 years ago when Clustering was an option). I have some regret in seeing this issue more or less stall out. For better or for worse, the best I can do know is try to solicit some feedback on known “work-arounds” and their successes/caveats in the short-term. Hopefully, this may generate a “recommended” clustering option from the community that is achievable given all the tools we have today. This option may only be for high-availability, and not so much for load, but we take the good with the bad…as long as we understand the boundaries in which we can push the solution.

Thanks in advance for any discussions/commentary moving forward on this subject. Looking forward to getting to know this product a bit more in the near future. =)

1 Like

I read this whole topic and am also wondering if in the end something like a walkthough on how to implement the cluster with Coherence was ever written… if not then is there any value in everybody contributing to create one, I think this would be great personally