Hi, we are evaluating different clustering approaches now to develop redundancy for our system.
I just didn't understand from the documentation on the site if ha-jdbc suites some special setup I want to have in my system. Is it possible to make fully horizontal clustered setup formed from "isolated" nodes using ha-jdbc?
Under "isolated" nodes I mean computers with (one) dbms and (one) appserver running on them and communicating only for dbms synchronization (mirroring) via multicasting. Then, basically each "isolated" node knows only about it's local dbms and clustering achieved by means of jgroups multicast communication between ha-jdbc instances.
Btw, on your FAQ page (http://ha-jdbc.sourceforge.net/faq.html) you should change comments for RAIDd-0 and RAIDb-1, since the first is partitioning and the second is mirroring (you state opposite in the comparison table).
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
A couple clarifications: HA-JDBC does not use multicasting for dbms synchronization. Each application server communicates with each database directly. Multicasting is only used to communicate cluster state changes, i.e. which database are active? The biggest issue with this type of setup is split brain syndrome, i.e. a network partition that isolates each app server + database machine.
This situation is handled though the use of the 'local' attribute on each database in the cluster. local="true" means the database is relatively local to the JDBC client; local="false" means the database is relatively remote to the JDBC client.
If HA-JDBC detects a network partition - and your cluster has a local database, HA-JDBC will stop the cluster and not allow any further database access until the situation is resolved manually, and the database cluster is restarted.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Paul, I think it would be great if you include info about "local='true'" to FAQ or note to Documentation page. The line "Indicates that this database resides on the local machine." says particularly nothing about how system changes its behavior if you set this parameter. I was trying to experiment to understand the meaning of it, yet got no idea (now, after your explanation it is clearlier, of course).
Maybe it is would be good to add load balancer algorithm to preferably read from local database (just idea). I'll make feature request about to track the idea.
Another thing about the site -- it lacks examples. Examples of configuration files for different setups. I plan to do several and send to you. I believe the site and the lib will benefit from examples very much.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Yeah - I've let the docs slip a little behind - some of the newer features are only mentioned in the release notes and in forums/mailing lists.
As I slowly make progress in trunk (future 2.1 release) I'll be re-writing all the documentation.
I've commented on your other suggestions in their respective feature request posts.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Yesterday I checked out the wiki options offered by sourceforge. I guess I've had my head in the sand, because I didn't know about most of these new service offerings. Perhaps I should start reading those emails Sourceforge send me every month...
I actually enabled Trac by mistake - clicking the checkbox triggered an immediate (and uncancellable) request - I'd prefer MediaWiki and don't want to complicate things with a second bug tracking system.
I see you've added a few pages - excellent. Once MediaWiki is ready - I'll migrate your pages.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi, we are evaluating different clustering approaches now to develop redundancy for our system.
I just didn't understand from the documentation on the site if ha-jdbc suites some special setup I want to have in my system. Is it possible to make fully horizontal clustered setup formed from "isolated" nodes using ha-jdbc?
Under "isolated" nodes I mean computers with (one) dbms and (one) appserver running on them and communicating only for dbms synchronization (mirroring) via multicasting. Then, basically each "isolated" node knows only about it's local dbms and clustering achieved by means of jgroups multicast communication between ha-jdbc instances.
I think following picture gives good approximation to the setup I want to have:
http://www.usenix.org/event/usenix04/tech/freenix/full_papers/cecchet/cecchet_html/images/image016.gif
Thanks in advance.
Btw, on your FAQ page (http://ha-jdbc.sourceforge.net/faq.html) you should change comments for RAIDd-0 and RAIDb-1, since the first is partitioning and the second is mirroring (you state opposite in the comparison table).
Hm, just found other person asked near the same question here (I guess we are talking about the same setup):
http://sourceforge.net/forum/message.php?msg_id=6323976
And as I understood, that is not possible to achieve with ha-jdbc now :(
Have I missed smth?
A couple clarifications:
HA-JDBC does not use multicasting for dbms synchronization. Each application server communicates with each database directly. Multicasting is only used to communicate cluster state changes, i.e. which database are active?
The biggest issue with this type of setup is split brain syndrome, i.e. a network partition that isolates each app server + database machine.
This situation is handled though the use of the 'local' attribute on each database in the cluster. local="true" means the database is relatively local to the JDBC client; local="false" means the database is relatively remote to the JDBC client.
If HA-JDBC detects a network partition - and your cluster has a local database, HA-JDBC will stop the cluster and not allow any further database access until the situation is resolved manually, and the database cluster is restarted.
Thanks for clarifications!
Paul, I think it would be great if you include info about "local='true'" to FAQ or note to Documentation page. The line "Indicates that this database resides on the local machine." says particularly nothing about how system changes its behavior if you set this parameter. I was trying to experiment to understand the meaning of it, yet got no idea (now, after your explanation it is clearlier, of course).
Maybe it is would be good to add load balancer algorithm to preferably read from local database (just idea). I'll make feature request about to track the idea.
Another thing about the site -- it lacks examples. Examples of configuration files for different setups. I plan to do several and send to you. I believe the site and the lib will benefit from examples very much.
Yeah - I've let the docs slip a little behind - some of the newer features are only mentioned in the release notes and in forums/mailing lists.
As I slowly make progress in trunk (future 2.1 release) I'll be re-writing all the documentation.
I've commented on your other suggestions in their respective feature request posts.
Have you considered setup a wiki for the project?
I guess in sourceforge you can enable one per project.
Yesterday I checked out the wiki options offered by sourceforge. I guess I've had my head in the sand, because I didn't know about most of these new service offerings. Perhaps I should start reading those emails Sourceforge send me every month...
I actually enabled Trac by mistake - clicking the checkbox triggered an immediate (and uncancellable) request - I'd prefer MediaWiki and don't want to complicate things with a second bug tracking system.
I see you've added a few pages - excellent. Once MediaWiki is ready - I'll migrate your pages.
Okay, I found the wiki, great!
It was empty, so I added some examples to it :)