Pivotal GemFire ​​9.1.1: реплицированный регион не создан в кластере - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть кластер GemFire ​​с 2 локаторами и 2 серверами на двух машинах Unix. Я запускаю приложение Spring Boot, которое присоединяется к кластеру GemFire ​​в качестве однорангового узла и пытается создать реплицированные области, загружая области с помощью Spring Data GemFire. После завершения работы приложения Spring Boot я не вижу региона / данных в кластере.

Я что-то здесь упускаю?

Кластер GemFire ​​не использует cache.xml или Spring XML для начальной загрузки регионов. Моя идея состоит в том, чтобы создать Регионы с помощью отдельной программы и сделать ее доступной в кластере. Версия SDGF: 2.0.7.

gemfire-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:gfe="http://www.springframework.org/schema/gemfire"
       xmlns:util="http://www.springframework.org/schema/util"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="
                http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/gemfire http://www.springframework.org/schema/gemfire/spring-gemfire.xsd
                http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">

    <util:properties id="gemfireProperties">
        <prop key="locators">unix_machine1[10334],unix_machine2[10334]</prop>
        <prop key="mcast-port">0</prop>
    </util:properties>

    <bean id="autoSerializer" class="org.apache.geode.pdx.ReflectionBasedAutoSerializer">

    <gfe:cache properties-ref="gemfireProperties" pdx-serializer-ref="autoSerializer" pdx-read-serialized="true"/>

    <gfe:replicated-region id="Test" ignore-if-exists="true"/>

    <gfe:replicated-region id="xyz" ignore-if-exists="true"/>

</beans>

Ожидается, когда приложение Spring Boot завершит работу, в кластере должен быть создан регион.

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

Ваши ожидания не верны.Это не является ограничением для Spring, скажем так, но является побочным эффектом работы GemFire.

Если вы настраивали экземпляр / член однорангового кэша GemFire ​​в кластере с использованием GemFire ​​API или чисто cache.xml, тогда кластер не будет "запоминать" конфигурацию.

При использовании GemFire ​​API, cache.xml или Spring config (либо Spring XML, либо JavaConfig)конфигурация является локальной для участника.Прежде чем GemFire ​​ Служба конфигурации кластера , администраторы должны будут распределить конфигурацию (например, cache.xml) по всем равноправным элементам, которые образуют кластер.

Затем попришла служба конфигурации кластеров , которая позволила пользователям определять свою конфигурацию, используя Gfsh .В конфигурации Spring при настройке / начальной загрузке однорангового элемента кэша кластера можно включить использование конфигурации кластера для настройки элемента, например:

<gfe:cache use-cluster-configuration="true" ... />

Как было указано здесь (bullet 4).

Однако использование Gfsh для настройки каждого объекта GemFire ​​(Regions, Indexes, DiskStores и т. Д.) Может быть довольно утомительным,особенно если у вас много регионов.Кроме того, не все разработчики хотят использовать инструмент оболочки.Некоторые команды разработчиков хотят создать версию конфигурации вместе с приложением, что имеет смысл.

Учитывая, что вы используете Spring Boot, вы должны взглянуть на Spring Boot для Pivotal GemFire ​​, здесь .

Еще один способ запустить кластер - настроить и загрузить элементы с помощью Spring, а не Gfsh .У меня есть пример этого здесь .Конечно, вы можете запускать приложение Spring Boot из командной строки, используя Spring Boot FAT JAR.

Конечно, некоторые администраторы / операторы не позволяют командам разработчиков таким образом загружать кластер GemFire ​​и вместо этого ожидатькомандам использовать инструменты (например, Gfsh ), предоставляемые базой данных.

Если это ваш случай, то может быть лучше разработать приложения Spring Boot, GemFire ​​ClientCache, подключающиеся кавтономный кластер, который был запущен с использованием Gfsh .

. Вы по-прежнему можете выполнять очень минимальную настройку, например:

start locator --name=LocatorOne
start server --name=ServerOne
start server --name=ServerTwo
...

, а затем запустить Spring Boot, клиентское приложение.управлять конфигурацией (т. е. областями, индексами и т. д.) кластера с помощью функции SDG push-конфигурации кластера .

Существует множество различных вариантов, поэтому выбор за вами.Вам нужно решить, что лучше для ваших нужд.

Надеюсь, это поможет.

1 голос
/ 23 апреля 2019

Простейшим подходом здесь будет использование службы конфигурации кластера и создание регионов с помощью gfsh.Для получения дополнительной информации см. Ссылку ниже

https://docs.spring.io/spring-gemfire/docs/current/reference/html/#bootstrap:cache:advanced

См. Раздел Использование кластерной конфигурации

Для получения дополнительной информации о конфигурации кластера см. Ссылку ниже

http://gemfire.docs.pivotal.io/97/geode/configuring/cluster_config/gfsh_persist.html

Ваш клиентский код, вероятно, будет простым клиентом gemfire, подключающимся к кластеру gemfire.

...