На данный момент у меня есть установка подвала с двумя узлами (предназначенными для тестирования); как видно на свалке ниже:
| 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 - Дополнительная информация о настройке (начало):
У меня есть несколько подвальных узлов. Я пытаюсь сделать один узел мастером, который должен предоставлять веб-панель управления, через которую я хотел бы получать статистику со всех других узлов. Для этой цели я представил свои пользовательские реализации Mbeans, включающие мою бизнес-логику. Я понимаю, что эти mbeans можно вызывать с помощью Jolokia, и я уже делаю это. Таким образом, это означает, что на всех этих разных узлах будет установлена Jolokia, а на главном узле будет установлен Hawtio (чтобы я мог подключаться к подчиненным узлам через Jolokia API через панель hawtio).
Прямо сейчас я вручную назначаю псевдоним для каждого узла (который относится к конечной точке сети, которую он предоставляет через конфигурацию pax.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 (конец):
Я пытаюсь найти способ выполнить определенные команды на определенном узле. Например, я хочу выполнить команду на узле *: 5702 из *: 5701 так, чтобы *: 5702 возвращала свойства и значения локального файла конфигурации.
Мой текущий метод не оптимален, так как я устанавливаю псевдоним (конечную точку веб-узла для jolokia) узла вручную и на основании этого я получаю желаемую информацию через мой пользовательский mbean. Я думаю, это не лучшая практика.
Пока у меня есть:
Set<Node> nodes = clusterManager.listNodes();
Таким образом, если я перебираю этот набор узлов, я хотел бы получить настройки конфигурации из локального файла конфигурации из каждого узла на основе идентификатора узла.
Нужно ли здесь реализовывать что-то конкретное для dosgi?
Или это будет что-то похожее на пример кода для пинг-понга (https://github.com/apache/karaf-cellar/tree/master/utils/src/main/java/org/apache/karaf/cellar/utils/ping) из проекта apache-cellar?
Любой вклад в это был бы очень полезен.
P.S. Я попытался опубликовать это в списке рассылки Karaf, но мои сообщения становятся отклоненными.
С уважением,
Cooshal.