At the moment, I have a cellar setup with just two nodes (meant for testing);
as seen in the dump below:
| Id | Alias | Host Name | Port
--+-------------------+----------------+--------------+-----
x | 192.168.99.1:5702 | localhost:8182 | 192.168.99.1 | 5702
| 192.168.99.1:5701 | localhost:8181 | 192.168.99.1 | 5701
I have multiple cellar nodes. I am trying to make one node as a master,
which is supposed to expose a management web panel via which I would like to
fetch stats from all the other nodes. For this purpose, I have exposed my
custom implementations of Mbeans involving my business logics. I understand
that these mbeans can be invoked using Jolokia, and I am already doing that.
So, that means, all these different nodes will have Jolokia installed, while
the master node will have Hawtio installed (such that I can connect to slave
nodes via Jolokia API through hawtio panel).
Right now, I am manually assigning the alias for every node (which refers to
the web endpoint that it exposes via pax.web configuration). This is just a
workaround to simplify my testing procedures.
Desired Process:
I have access to the ClusterManager service via service registry. Thus, I am
able to invoke `clusterManager.listNodes()` and loop through the result in
my MBean. While looping through this, all I get is the basic node info. But,
if it is possible, I would like to parse the `etc/org.ops4j.pax.web.cfg`
file from every node and get the port number (or the value of the property
`org.osgi.service.http.port`).
While retrieving the list of nodes, I would like to get a response as:
{
"Node 1": {
"hostname": "192.168.0.100",
"port": 5701,
"webPort": "8181",
"alias": "Data-Node-A"
"id": "192.168.0.100:5701"
},
"Node 2": {
"hostname": "192.168.0.100",
"port": 5702,
"webPort": "8182",
"alias": "Data-Node-B",
"id": "192.168.0.100:5702"
}
}
I am trying to find a way to execute specific commands on a particular node.
For example, I want to execute a command on Node *:5702 from *:5701 such
that *:5702 returns the properties and values of a local configuration file.
My current method is not optimal, as I am setting the alias(the web endpoint
for jolokia) of a node manually, and based on that I am retrieving my
desired info via my custom mbean. I guess, this is not the best practice.
So far, I have:
`Set<Node> nodes = clusterManager.listNodes(); `
thus, if I loop through this set of nodes, I would like to retrieve config
settings from local configuration file from every node based on the node ID.
Do I need to implement something specific to dosgi here?
Or would it be something similar to the sample code of ping-pong
(https://github.com/apache/karaf-cellar/tree/master/utils/src/main/java/org/apache/karaf/cellar/utils/ping)
from apache-cellar project?
Any input on this would be very helpful.
Regards,
Cooshal.
--
Sent from: http://karaf.922171.n3.nabble.com/Karaf-User-f930749.html