目前,我的酒窖设置中只有两个节点(用于测试)。如下面的转储所示:
| 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
编辑1-有关设置的其他信息(开始):
我有多个酒窖节点。我正在尝试使一个节点成为主节点,这应该公开一个管理Web面板,我希望通过该面板从所有其他节点获取统计信息。为此,我公开了涉及我的业务逻辑的Mbeans定制实现。我知道可以使用Jolokia调用这些mbean,而我已经这样做了。因此,这意味着所有这些不同的节点都将安装Jolokia,而主节点将安装Hawtio(这样我就可以通过hawtio面板通过Jolokia API连接到从节点)。
现在,我为每个节点手动分配别名(这是指它通过pax.web配置公开的Web端点)。这只是简化我的测试程序的一种解决方法。
所需过程:
我可以通过服务注册表访问ClusterManager服务。因此,我能够调用clusterManager.listNodes()
并在MBean中遍历结果。在循环浏览时,我得到的只是基本的节点信息。但是,如果可能的话,我想从每个节点解析etc/org.ops4j.pax.web.cfg
文件并获取端口号(或属性org.osgi.service.http.port
的值)。
在检索节点列表时,我希望得到如下响应:
{
"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"
}
}
编辑1(结束):
我正在尝试找到一种在特定节点上执行特定命令的方法。例如,我想从*:5701在节点*:5702上执行命令,以使*:5702返回本地配置文件的属性和值。
我当前的方法不是最佳方法,因为我正在手动设置节点的别名(jolokia的Web端点),并在此基础上通过自定义mbean检索所需的信息。我想这不是最佳实践。
到目前为止,我有:
Set<Node> nodes = clusterManager.listNodes();
因此,如果我遍历这组节点,我想根据节点ID从每个节点的本地配置文件中检索配置设置。
我需要在此处实现特定于dosgi的东西吗?
还是会类似于apache-cellar项目中的乒乓(https://github.com/apache/karaf-cellar/tree/master/utils/src/main/java/org/apache/karaf/cellar/utils/ping)的示例代码?
对此进行任何输入都会很有帮助。
P.S。我曾尝试将其发布在Karaf邮件列表中,但我的帖子却被退回。
关于, 库萨尔。