Is it possible for nodes to dynamically discover the other database nodes at runtime as opposed to having to configure each node with a full set of the clustered databases?
Regards,
Grant
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Technically, yes - though it would require significant work and would have some limitations: A protocol needs to be defined to publish a node's host, port, authentication info, and and extra connectivity properties. We would need to install a module on each database server that is capable of advertising itself via multicast/jgroups. Since the packets will contain authentication information, they will need to use a secure layer (e.g. jgroups + TUNNEL). Currently HA-JDBC does not require anything to be install on the database hosts, other than the database itself. HA-JDBC would need an additional module to listen for these multicast messages, parse the message body, and add the databases to the cluster. HA-JDBC startup will need to wait to receive discovery notifications for databases it expects to be active on startup.
* This would only work for driver and DataSource configurations - and would not work for ConnectionPoolDataSource and XADataSource configurations, since these requires app-server specific setup.
Thoughts?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks for the prompt reply, Paul. It definitely does sounds feasible but you're right in that it would take some work.
What we are trying to develop is a client application (backed by a lightweight database) that will continue to work if a master database (lets say located at a head office) goes offline. There would be multiple clients installed at a single location so these would all need to be able to have the same set of data available and continue running if either the master or a peer goes offline. Ideally we would like to keep the deployment of a client as simple as possible by removing the need for each client app to be configured with the other client apps databases. For our scenario we would already have a module installed on each database server (which would be the client app).
At this stage I've no idea whether HA-JDBC will be the right tool for us but if it turns out that it is then I would be interested in looking into this further.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hello,
Is it possible for nodes to dynamically discover the other database nodes at runtime as opposed to having to configure each node with a full set of the clustered databases?
Regards,
Grant
Technically, yes - though it would require significant work and would have some limitations:
A protocol needs to be defined to publish a node's host, port, authentication info, and and extra connectivity properties.
We would need to install a module on each database server that is capable of advertising itself via multicast/jgroups. Since the packets will contain authentication information, they will need to use a secure layer (e.g. jgroups + TUNNEL). Currently HA-JDBC does not require anything to be install on the database hosts, other than the database itself.
HA-JDBC would need an additional module to listen for these multicast messages, parse the message body, and add the databases to the cluster.
HA-JDBC startup will need to wait to receive discovery notifications for databases it expects to be active on startup.
* This would only work for driver and DataSource configurations - and would not work for ConnectionPoolDataSource and XADataSource configurations, since these requires app-server specific setup.
Thoughts?
Thanks for the prompt reply, Paul. It definitely does sounds feasible but you're right in that it would take some work.
What we are trying to develop is a client application (backed by a lightweight database) that will continue to work if a master database (lets say located at a head office) goes offline. There would be multiple clients installed at a single location so these would all need to be able to have the same set of data available and continue running if either the master or a peer goes offline. Ideally we would like to keep the deployment of a client as simple as possible by removing the need for each client app to be configured with the other client apps databases. For our scenario we would already have a module installed on each database server (which would be the client app).
At this stage I've no idea whether HA-JDBC will be the right tool for us but if it turns out that it is then I would be interested in looking into this further.