JMX для облачных приложений - PullRequest
3 голосов
/ 30 марта 2012

Существует ли решение для управления кластером серверов с динамическим предоставлением через JMX?

Кажется, что JMX работает нормально при работе с известным набором серверов - введите имя хоста, чтобыподключайтесь, подключайтесь, изменяйте настройки и просматривайте метрики, и все будут довольны.

Что происходит, когда у вас есть целый кластер экземпляров приложения, и вы хотите изменить один параметр во всех экземплярах этого кластера?Есть ли какое-либо решение, которое позволит вам изменить все экземпляры одновременно, возможно, через какой-либо реестр служб?

1 Ответ

1 голос
/ 05 апреля 2012

Взгляните на OpenDMK .Это открытая версия Java Dynamic Management Kit .Он предоставляет JMX Discovery Service .Чтобы процитировать из документов:

Служба обнаружения позволяет обнаруживать в сети динамические агенты управления Java.Эта служба опирается на клиентский объект обнаружения, который отправляет многоадресные запросы для поиска агентов.Чтобы быть обнаруженным, агент должен иметь зарегистрированный ответчик обнаружения на своем сервере MBean.Приложения также могут использовать монитор обнаружения, который обнаруживает, когда респонденты обнаружения запускаются или останавливаются.

Что касается внесения изменений на всех серверах одновременно, если вы внедрите службу обнаружения (или что-то подобное), высможет быстро составить список JMXServiceURL с, который, в свою очередь, может быть использован для создания списка JMXConnector с и, следовательно, списка подключенных MBeanServerConnection с,Оттуда должно быть достаточно просто создать мультиплексную оболочку вокруг этого списка, которая делегирует операции против оболочки каждому удаленному экземпляру JMX.(Обработка ошибок и тайм-ауты могут быть немного сложнее ....)

Вы могли бы даже подумать о кодировании MBeanServerInterceptor , который создает виртуальный MBeanServer, который выглядит какMBeanServer, но фактически является вышеупомянутым замаскированным мультиплексором.

// Nicholas

...