Changing a Cluster Node to Standalone

I'm in the process of replacing our current ejabberd server with a more capable system and at this point it's gone relatively smoothly in setup. However prior to putting the new system into production I need to run some stress tests against it and ejabberd (hammering logins, concurrent connections, etc). As I don't want to affect the current production systems I need to remove it from the cluster and have it functioning independently of the others.

I thought it would be as easy as removing the 'extra_db_nodes' from the -mnesia directive from the startup but that doesn't appear to be sufficient (I can still see the other nodes when checking out the web interface). I'm assuming that I need to make changes to the mnesia schema but or table types but not clear on what needs to be done and since this is a production environment I don't want to rush in and potential cause issues with client connectivity.

Has anyone had similar experiences or knows the proper way to downgrade a clustered node to stand alone? Or should I simply firewall the system and prevent connectivity to the cluster itself?

thanks,

tlaramie wrote: I thought

tlaramie wrote:

I thought it would be as easy as removing the 'extra_db_nodes' from the -mnesia directive from the startup but that doesn't appear to be sufficient (I can still see the other nodes when checking out the web interface).

Two ejabberd nodes are clustered if their Mnesia databases are configured so. Once Mnesia is properly configured, there is nothing else to put in the command line call.

tlaramie wrote:

Has anyone had similar experiences or knows the proper way to downgrade a clustered node to stand alone? Or should I simply firewall the system and prevent connectivity to the cluster itself?

Firewalling should work. In fact maybe you only need to firewall port 4369. Note that if you close the internode communication and you make changes to a node database, you may end with different databases that laker Mnesia refuses to interconnect again.

tlaramie wrote:

However prior to putting the new system into production I need to run some stress tests against it and ejabberd (hammering logins, concurrent connections, etc). As I don't want to affect the current production systems I need to remove it from the cluster and have it functioning independently of the others.

So you have two machines: SlowMachine and FastMachine. You installed ejabberd on each one, and both nodes are clustered. Now you want to run some tests in the ejabberd node in FastMachine but before you want to close the communication. Is it necessary to use the real users data for doing the tests?

I have an idea: If ejabberd @ SlowMachine is the master node, you can stop ejabberd @ FastMachine without problem, right? Stop it. Find the Mnesia spool directory, make a backup and delete the files. Start ejabberd, and it will be no longer part of the cluster with SlowMachine. If you look at ejabberd @ SlowMachine, the node that you just destroyed appears as stopped.

Make all the tests you want in the empty ejabberd server. Once you want to get the cluster, just follow again the ejabberd guide.

Thanks for the

Thanks for the suggestions!
I tried the firewalling after posting the thread but for some reason ejabberd@FastMachine wouldn't fully startup (started up the daemon sans -detached to see the output and it would just sit at the notice that mnesia had started).
At any rate I eventually tanked the whole mnesia DB on @FastMachine, created a blank directory for Mnesia, started up ejabberd and then migrated the database over using a TXT dump from @SlowServer. Voila! No clustered nodes when viewing the web interface or mnesia:info().

Syndicate content