我需要在分布式模式下构建一个infinispan集群。此缓存用于存储会话数据。目前我使用的是来自Jboss团队的Manik开发的tomcatInfinispanSessionManager。
我已经在分布式模式下创建了infinispan xml,并使用两个tomcats进行测试。使用apache作为负载均衡器。每台机器都有自己的infinispan缓存条目副本。当任何tomcat关闭时,会话将从其他infinispan缓存中检索。
我的问题是:如何将此缓存条目放入在单独的计算机上运行的infinispan服务器(使用hotrod / memcached)?
答案 0 :(得分:3)
如果您向缓存配置添加remote cache loader,它会在远程Hot Rod服务器中备份数据,假设您正确配置了Hot:Hot Rod服务器的端口地址
但是,如果您正在尝试群集会话数据,我强烈建议您下载JBoss EAP 6.1,它随附基于Infinispan的群集就绪会话数据存储。会话缓存仍然可以配置远程缓存加载器,但配置会略有不同,因为它使用JBoss EAP配置格式。
答案 1 :(得分:1)
我正在使用ispn 5.1版本并以hotrod模式启动服务器。我的缓存配置xml如下。
<?xml version="1.0" encoding="UTF-8"?>
<infinispan xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:infinispan:config:5.3 http://www.infinispan.org/schemas/infinispan-config-5.3.xsd
urn:infinispan:config:remote:5.3 http://www.infinispan.org/schemas/infinispan-cachestore-remote-config-5.3.xsd"
xmlns="urn:infinispan:config:5.3" xmlns:remote="urn:infinispan:config:remote:5.3">
<global>
<transport clusterName="tomcatSession">
<properties>
<property name="configurationFile"
value="E:/Software/apache-tomcat-7.0.34/conf/jgroups.xml">
</property>
</properties>
</transport>
<globalJmxStatistics enabled="true" />
</global>
<namedCache name="tc_session_ispn-sess-mgr">
<clustering mode="distribution">
<l1 enabled="true" lifespan="600000" />
</clustering>
<loaders>
<remoteStore xmlns="urn:infinispan:config:remote:5.3"
fetchPersistentState="false" ignoreModifications="false"
purgeOnStartup="false" remoteCache="myCache" rawValues="true">
<servers>
<server host="10.145.4.172" port="11222" />
</servers>
<connectionPool maxActive="10" exhaustedAction="CREATE_NEW" />
<async enabled="true" />
</remoteStore>
</loaders>
</namedCache>
</infinispan>
使用此缓存配置xml时,我得到以下异常
Exception in thread "main" org.infinispan.config.ConfigurationException: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[39,104]
Message: Unexpected element '{urn:infinispan:config:remote:5.3}remoteStore' encountered
at org.infinispan.configuration.parsing.Parser.parse(Parser.java:168)
at org.infinispan.configuration.parsing.Parser.parse(Parser.java:130)
at org.infinispan.manager.DefaultCacheManager.<init>(DefaultCacheManager.java:368)
at org.infinispan.manager.DefaultCacheManager.<init>(DefaultCacheManager.java:340)
at org.infinispan.manager.DefaultCacheManager.<init>(DefaultCacheManager.java:327)
如果我错了,请纠正我并建议如何继续进行?