Pivotal GemFire 9.1.1:未在群集中创建的复制区域

问题描述 投票:0回答:2

我有一个GemFire集群,在两台unix机器中有2个定位器和2个服务器。我正在运行一个Spring Boot应用程序,它将GemFire集群作为对等体加入,并尝试创建复制区域,使用Spring Data GemFire加载区域。 Spring Boot应用程序终止后,我没有在集群中看到Region / data。

我在这里错过了什么吗?

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应用程序终止时,应在群集中创建Region。

gemfire spring-data-gemfire
2个回答
1
投票

这里最简单的方法是使用群集配置服务,并通过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客户端。


1
投票

你的期望不正确。对于Spring来说,这不是限制,但是GemFire工作的副作用。

如果您使用GemFire API或纯cache.xml配置集群的GemFire对等缓存实例/成员,则集群也不会“记住”配置。

使用GemFire API,cache.xml或Spring配置(Spring XML或JavaConfig)时,配置对于成员来说是本地的。在GemFire的Cluster Configuration Service之前,管理员需要在构成集群的所有对等成员之间分发配置(例如cache.xml)。

然后是Cluster Configuration Service,它使用户能够使用Gfsh定义他们的配置。在Spring配置中,配置/引导群集的对等缓存成员时,可以启用群集配置来配置成员,例如:

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

正如指出here(子弹4)。

但是,使用Gfsh配置每个GemFire对象(RegionsIndexesDiskStores等)可能非常繁琐,特别是如果你有很多区域。此外,并非所有开发人员都希望使用shell工具。一些开发团队希望将配置与应用程序一起进行版本化,这很有意义。

鉴于你使用的是Spring Boot,你应该看看Spring Boot for Pivotal GemFire,here

启动集群的另一种方法是使用Spring配置和引导成员,而不是使用Gfsh。我有这个here的例子。当然,您可以使用Spring Boot FAT JAR从命令行运行Spring Boot应用程序。

当然,一些管理员/操作员阻止开发团队以这种方式引导GemFire集群,而是希望团队使用数据库提供的工具(例如Gfsh)。

如果是这种情况,那么开发Spring Boot,GemFire ClientCache应用程序连接到使用Gfsh启动的独立群集可能会更好。

您仍然可以执行非常小的配置,例如:

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

然后让你的Spring Boot客户端应用程序使用SDG的cluster configuration push功能驱动集群的配置(即区域,索引等)。

有许多不同的选择,所以选择是你的。您需要确定哪种方法最适合您的需求。

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.