karaf-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Baptiste Onofré ...@nanthrax.net>
Subject Re: Invoke a command on a node in Karaf Cellar based on NodeID
Date Sat, 27 Apr 2019 05:51:58 GMT
Hi,

By tweaking the node (producer/consumer) and changing the sync mode to
node master, you can isolate/setup a node as a master.

Then you can execute action on this node, broadcasting to the other nodes.

Regards
JB

On 25/04/2019 09:31, cooshal wrote:
> 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
> 

Mime
View raw message