提问者:小点点

Gemfire WAN网关-发送器配置


我们正在使用Gemfire WAN拓扑,并且在设置网关发送方时遇到问题。

几个假设:-复制的区域-串行网关发送程序-手动启动对于所有网关发送程序都是假的

假设我们有2个集群,在每个集群内,我们有2个成员(成员A和成员B)

成员A的cache. xml

<gfe:gateway-sender id="gateway-sender-A" parallel="false" remote-distributed-system-id="2" manual-start="false" /> 
<gfe:replicated-region name="data" scope="DISTRIBUTED_NO_ACK"> 
<gfe:replicated-region name="subData" data-policy="REPLICATE" scope="DISTRIBUTED_ACK"> 
<gfe:gateway-sender-ref bean="gateway-sender-A"/> 
</gfe:replicated-region> 
</gfe:replicated-region> 

成员B的cache. xml

<gfe:gateway-sender id="gateway-sender-B" parallel="false" remote-distributed-system-id="2" manual-start="false" /> 
<gfe:replicated-region name="data" scope="DISTRIBUTED_NO_ACK"> 
<gfe:replicated-region name="subData" data-policy="REPLICATE" scope="DISTRIBUTED_ACK"> 
<gfe:gateway-sender-ref bean="gateway-sender-B"/> 
</gfe:replicated-region> 
</gfe:replicated-region>

当我们在一个集群中运行启动两个成员时出现问题。它会引发以下错误:

java. lang.IllegalStateException:无法使用[网关发送方-A]网关发送方ID创建区域 /data,因为另一个缓存具有与[网关发送方-B]网关发送方ID定义的相同区域

查看“网关发送者的高可用性”留档,我们的理解是我们可以创建两个网关发送者,其中只有一个在给定时间点进行发送。最终,我们希望一个缓存区域有两个网关发送者(每个成员一个),一个作为主发送者,另一个作为辅助发送者。

谢啦


共2个答案

匿名用户

Geode留档上说

对于串行发件人,队列HA是通过在多个成员中配置相同的串行发件人来实现的。队列在成员之间复制。

因此,如果成员A和B中的两个网关发送方正在执行相同的工作(除了它们的主要/次要角色),您应该使用“相同”设置。

在网关发送方中,会有一个设法获取特定的分布式锁并成为主要发送方,通常是第一个出现。我没有看到强制一个成为主要发送方的属性。

如果您想知道,Geode是Gemfire的开源版本。

匿名用户

将两个成员的sender-id更改为相同后,我们遇到了另一个问题:

java. lang.IllegalStateException:无法创建手动启动“false”的Gateway Sender“sole-ghate-sender-id”,因为另一个缓存具有与手动启动“true”定义的相同的Gateway Sender

看来我们的问题是格式不一致。

成员A使用XML格式

会员B使用Spring Gemfire数据格式

xmlns: gfe="http://www.springframework.org/schema/gemfire"xsi:schemaLocal="http://www.springframework.org/schema/gemfirehttp://www.springframework.org/schema/gemfire/spring-gemfire.xsd"

我们切换到对两个成员使用Spring Gemfire数据格式,它解决了这两个问题。