2015-06-28 5 views
2

Я пытаюсь настроить кластер Gemfire с использованием Spring Data Gemfire.Spring Data Gemfire locator

я могу начать локатор с помощью gfsh и я могу начать сервер с помощью Spring.

Проблема в том, что я не могу найти способ запустить локатор через Spring.

ответ

5

Возможно, самым простым и простым способом является запуск «встроенного» локатора на сервере. Я часто использую эту технику при тестировании или запуске автономного кластера с 1 или более серверами GemFire, настроенными на Spring.

конфигурация выглядит следующим образом ...

<util:properties id="gemfireProperties"> 
    <prop key="name">GemFireServerWithEmbeddedLocator</prop> 
    <prop key="mcast-port">0</prop> 
    <prop key="locators">localhost[11235]</prop> 
    <prop key="log-level">config</prop> 
    <prop key="start-locator">localhost[11235]</prop> 
</util:properties> 

<gfe:cache properties-ref="gemfireProperties"/> 

... 

Обратите внимание, что 2 соответствующие свойства GemFire ​​системы являются собственностью «локаторы» и свойство «старт-локатор». Свойством «start-locator» GemFire ​​System является настройка конфигурации для запуска «встроенного» локатора на сервере GemFire. Свойство «локаторы» GemFire ​​System просто сообщает серверу, с которым локатор должен связаться, чтобы присоединиться к кластеру (как определено локатором, конечно).

Вы даже можете получить более изощренными со следующей конфигурацией ...

<util:properties id="gemfireProperties"> 
    <prop key="name">GemFireCacheServerManagerLocator</prop> 
    <prop key="mcast-port">0</prop> 
    <prop key="locators">localhost[11235]</prop> 
    <prop key="log-level">config</prop> 
    <prop key="http-service-port">8181</prop> 
    <prop key="jmx-manager">true</prop> 
    <prop key="jmx-manager-port">1199</prop> 
    <prop key="jmx-manager-start">true</prop> 
    <prop key="start-locator">localhost[11235]</prop> 
</util:properties> 

<gfe:cache properties-ref="gemfireProperties"/> 

<gfe:cache-server auto-startup="true" bind-address="${server.bind.address}" port="${server.port}" host-name-for-clients="${server.hostname.for.clients}" max-connections="${server.max.connections}"/> 

В этой конфигурации, я сказал GemFire ​​сервер для запуска «встроенный» Locator («старт-локатор») и подключения («локаторы»), чтобы служить в качестве менеджера GemFire ​​в кластере («jmx-manager»), затем запустить службу управления («jmx-manager-start») и, наконец, запустить «встроенный» HTTP-сервис, реализованный с Jetty («http-service-port»), который запустит Pulse, API REST управления и API-интерфейс REST-разработчика.

Не только это, с помощью элемента «», сервер GemFire ​​также станет «сервером кэша» для прослушивания и обслуживания клиентов кеша.

После GemFire ​​сервер запускает «встроенный» Локатор (или, возможно, служба GemFire ​​управления (менеджер), а), вы можете подключиться к нему в Gfsh как так ...

gfsh>connect --locator=localhost[11235] 

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

gfsh>connect --jmx-manager=localhost[1199] 

Примечания запрос на подключение к локатору из Gfsh просто посылает запрос на «найти» Менеджер в кластере. Если в кластере есть менеджер, локатор отправляет координаты Менеджера (IP/Port), в противном случае Locator будет выполнять роль Менеджера (у локатора есть jmx-manager = start по умолчанию) и отправить ответ на Gfsh. Затем Gfsh сформирует новое соединение JMX-RMI непосредственно с Менеджером. Поэтому использование «connect -jmx-manager» более прямое, если вы знаете IP и PORT.

Также обратите внимание, что свойство GemFire ​​Системы «локаторы» может быть разделенными запятыми списка локаторов, как так ...

locators=host1[port1],host2[port2],...,hostN[portN] 

Однако «старт-локатора» GemFire ​​System свойство только хозяин [port], поскольку вы можете использовать только 1 "встроенный" локатор.

Теперь, когда вы можете запустить локатор, используйте Spring FactoryBean. В то же время я создал локатор LocatorLauncherFactoryBean, основанный на общедоступном Java-классе GamFire ​​LocatorLauncher.

Этот класс был прототипом для клиента, чтобы продемонстрировать, как локатор можно настроить и запустить в контексте Spring. Я планирую ввести официальную поддержку для настройки Locators в контексте Spring в конце концов, однако приоритет этого билета JIRA является низким по сравнению с другими билетами.

Для получения дополнительной информации см. SGF-222. Вы также найдете класс LocatorLauncherFactoryBean, прикрепленный к билету JIRA. Не стесняйтесь использовать и настраивать для своих целей.

Опять же, LocatorLauncherFactoryBean является прототипом и почти не завершен в его поддержке широкого диапазона настроек конфигурации в реальном классе GemFire ​​LocatorLauncher.

Надеюсь, что это поможет; ура!