嗨,我想使用Spring gemfire 8.1在同一主机上启动多个gemfire缓存服务器。请在下面找到gefire配置文件。我想在同一主机上启动GFServer1和GFServer2,即使用Spring Gemfire配置的HOSTNAME。我想避免gfsh命令并从eclipse启动所有内容并将客户端连接到同一主机上的这些服务器。事先感谢
<util:properties id="gemfireProperties">
<prop key="name">Locator_Dev</prop>
<prop key="mcast-port">0</prop>
<prop key="locators">HOSTNAME[1099]</prop>
<prop key="log-level">warning</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">HOSTNAME[1099]</prop>
</util:properties>
<gfe:cache properties-ref="gemfireProperties" />
<gfe:cache-server id="GFServer1" auto-startup="true"
bind-address="HOSTNAME" port="40411" host-name-for-clients="HOSTNAME"
load-poll-interval="2000" max-connections="22" max-threads="16"
max-message-count="1000" max-time-between-pings="30000" >
<gfe:subscription-config eviction-type="ENTRY"
capacity="1000" disk-store="diskStore1" />
</gfe:cache-server>
<gfe:cache-server id="GFServer2" auto-startup="true"
bind-address="HOSTNAME" port="40412" host-name-for-clients="HOSTNAME"
load-poll-interval="2000" max-connections="22" max-threads="16"
max-message-count="1000" max-time-between-pings="30000" >
<gfe:subscription-config eviction-type="ENTRY"
capacity="1000" disk-store="diskStore1" />
</gfe:cache-server>
<gfe:disk-store id="diskStore1" queue-size="50"
auto-compact="true" max-oplog-size="10" time-interval="9999">
<gfe:disk-dir
location="D:\NP\WorkSpace\GemfireRegionSolutionNStart\disk-store\store_1"
max-size="20" />
<gfe:disk-dir
location="D:\NP\WorkSpace\GemfireRegionSolutionNStart\disk-store\store_2"
max-size="20" />
</gfe:disk-store>
<gfe:replicated-region id="customer" name="Customer">
</gfe:replicated-region>
<gfe:replicated-region id="bookMaster" name="BookMaster">
</gfe:replicated-region>
</beans>
您发布的配置将在同一JVM中创建两个缓存服务器,即它将在同一进程中打开两个端口。
如果这不是您想要的,即您想要两个不同的进程,在eclipse中,您必须提供两个运行时配置来启动两个服务器。
有具体的问题吗?正如@Swapnil指出的,这将启动2个GemFire“缓存服务器”(侦听缓存客户端的服务器套接字),因为您已经在同一JVM的同一主机上进行了适当的配置。无论如何执行(即IDE、命令行、从Gfsh或从Spring Boot),这都将起作用。
如果您有更具体的问题,请告诉我们,谢谢!
因此,您可以配置LocatorLauncherFactoryBean,例如,如下所示…
<uti:properties id="gemfireProperties">
<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="locators">host1[10334],host2[11235],...,hostN[20668]</prop>
</util:properties>
<bean id="locator" class="org.spring.data.gemfire.config.LocatorLauncherFactoryBean">
<property name="gemfireProperties" ref="gemfireProperties"/>
<property name="memberName" value="SpringDataGemFireLocator"/>
<property name="bindAddress" value="10.124.12.24"/>
<property name="port" value="12480"/>
</bean>
您可能已经注意到,此定位器可以将GemFire集群中的其他定位器连接起来,这些定位器是在“gemfire Properties
”bean中使用“定位器
”GemFire系统属性指定的。
注意:只有当运行此定位器的localhost具有多个NIC并且您希望绑定到特定的NIC时,LocatorLauncherFactoryBean
的"bindAddress
"属性才是必需的。
此外,我还设置了JMX Manager GemFire系统属性以使定位器成为并实际启动一个管理器(在端口1199上)。这允许您使用gfsh从Gfsh连接到此定位器
基本上,“gemfire Properties
”bean允许您配置任何有效的GemFire系统属性。
现在,由于此定位器是从您的IDE中运行的,因此您需要使用$GEMFIRE
环境变量配置“运行配置文件”,该环境变量指向从Pivotal网站下载的GemFire发行版,以便从该定位器运行Pulse。在决定是否1.启动运行GemFire开箱即用的webapps(例如Pulse)的嵌入式HTTP服务(Jetty)和2.是否可以找到Pulse并启动webapp时,GemFire Manager的ManagementAgent会在发行版中查找Pulse。
例如,我将$GEMFIRE环境变量设置为…
/Users/jblum/Downloads/Pivotal/GemStone/Products/GemFire/Pivotal_GemFire_820_b17919_Linux
现在,要让您的独立Spring配置的GemFire服务器连接到集群,这很简单。
同样,您只需要在每个Spring GemFire ServerXML配置文件中定义一个"gemfire Properties
"bean,其中定义了"locators"GemFire System属性,例如…
<uti:properties id="gemfireProperties">
<prop key="log-level">config</prop>
<prop key="locators">localhost[12480]</prop>
</util:properties>
<gfe:cache properties-ref="gemfireProperties"/>
此配置将使GemFire数据节点能够连接到集群,如果一切设置正确,则该集群将从Pulse可见。
再次,希望这有所帮助。
干杯约翰