2017-02-23 11 views
0

OSS Ehcacheをテラコッタクラスターで使用しようとしていますが、ehcacheクライアント側からのフェイルオーバーの実装に失敗しました。テラコッタでのehcacheクライアントのフェールオーバー

here

<ehcache:service> 
<terracotta:cluster> 
    <terracotta:connection url="terracotta://localhost:9510/clustered"/> 
    <terracotta:server-side-config auto-create="true"> 
    <terracotta:default-resource from="default-resource"/> 
    </terracotta:server-side-config> 
</terracotta:cluster> 
</ehcache:service>  

ドキュメントに記載されているように私は、この設定を見つけることが、この接続は1つのURLのみを受け付けます。クラスタに2つのテラコッタサーバがあれば、フェイルオーバすることができます。 ActiveMQのフェイルオーバーURLのような 何か:

failover:(server1:port,server2:port) 

私の質問は:オープンソースにehcacheでいる可能性がある、または私は、エンタープライズバージョンを持っている必要がありますし、それが可能ならば、それを設定する方法。

更新

私はLouis Jacometで述べたように <terracotta:connection url="terracotta://host1:9510,host2:9610/clustered1"/> を試みたが、与えて、正しく解析されなかったこと:私はうまくコンパイル<terracotta:connection url="terracotta://host1:9510/clustered1,host2:9610/clustered1"/>をしようとした場合

org.ehcache.xml.exceptions.XmlConfigurationException: Error parsing XML configuration at file:/F:/Work/WORKSPACES/java7_ws/CachingTest/target/classes/ehcache.xml 
    at org.ehcache.xml.XmlConfiguration.<init>(XmlConfiguration.java:167) 
    at org.ehcache.xml.XmlConfiguration.<init>(XmlConfiguration.java:131) 
    at org.ehcache.jsr107.EhcacheCachingProvider$ConfigSupplier.getConfiguration(EhcacheCachingProvider.java:324) 
    ... 4 more 
Caused by: org.xml.sax.SAXParseException; systemId: file:/F:/Work/WORKSPACES/java7_ws/CachingTest/target/classes/ehcache.xml; lineNumber: 12; columnNumber: 91; cvc-pattern-valid: Value 'terracotta://host1:9510,host2:9610/clustered1' is not facet-valid with respect to pattern '\w+://([^\]\[/?#@][email protected])?[^:?#/]+(:[1-9][0-9]{0,4})?(/[^\?#]*)?(\?[^#]*)?(#.*)?' for type 'connectionUrl'. 

が、HOST1場合がダウンしたら、クライアントは次のように答えます。

Exception in thread "main" org.ehcache.StateTransitionException: org.terracotta.connection.ConnectionException: java.util.concurrent.TimeoutException 
    at org.ehcache.core.StatusTransitioner$Transition.failed(StatusTransitioner.java:235) 
    at org.ehcache.core.EhcacheManager.init(EhcacheManager.java:588) 
    at org.ehcache.jsr107.EhcacheCachingProvider.createCacheManager(EhcacheCachingProvider.java:148) 
    at org.ehcache.jsr107.EhcacheCachingProvider.getCacheManager(EhcacheCachingProvider.java:128) 
    at org.ehcache.jsr107.EhcacheCachingProvider.getCacheManager(EhcacheCachingProvider.java:79) 
    at org.ehcache.jsr107.EhcacheCachingProvider.getCacheManager(EhcacheCachingProvider.java:183) 
    at dev.ams.poc.CacheApp.main(CacheApp.java:15) 
Caused by: java.lang.RuntimeException: org.terracotta.connection.ConnectionException: java.util.concurrent.TimeoutException 
    at org.ehcache.clustered.client.internal.service.DefaultClusteringService.initClusterConnection(DefaultClusteringService.java:189) 
    at org.ehcache.clustered.client.internal.service.DefaultClusteringService.start(DefaultClusteringService.java:140) 
    at org.ehcache.core.internal.service.ServiceLocator.startAllServices(ServiceLocator.java:118) 
    at org.ehcache.core.EhcacheManager.init(EhcacheManager.java:560) 
    ... 5 more 

Ehcacheバージョン:Ehcache-clustered-3.2

答えて

1

この機能はオープンソースの一部であり、問​​題はありません。以下のようにあなたは、そこに複数のserver:portをリストする必要が

:すべてのサーバをリスト

<ehcache:service> 
    <terracotta:cluster> 
    <terracotta:connection url="terracotta://localhost:9510,otherhost:9510/clustered"/> 
    <terracotta:server-side-config auto-create="true"> 
     <terracotta:default-resource from="default-resource"/> 
    </terracotta:server-side-config> 
    </terracotta:cluster> 
</ehcache:service> 

は、そうでない場合は、フェールオーバーロジックを非常に正確に理解する必要があり、行くことをお勧めの方法です。

+0

ありがとう、私はあなたが言ったようにしようとしましたが、それはコンパイルされていますが、最初のサーバがダウンし、connectionExceptionが起動したときにフェールオーバーが成功しませんでした:

+0

あなたのURLは私が与えた例と一致しません。パス要素が同じままである必要があるため、パスの前にサーバーを繰り返します。したがって、 'terracotta:// localhost:9610/clustered1、localhost:9510/c lustered0'は' terracotta:// localhost:9610、localhost:9510/clustered 'になる必要があります –

+0

私はテラコッタを使いました:// host1:9510 、host2:9510/clusteredですが、xml解析時に失敗しました。XmlConfigurationException、 ホスト名の代わりにIPを使用します。 –

関連する問題