前回は、CacheStoreとトランザクションの確認をしました。今度は、クラスタリングです。
前回はこちら
http://d.hatena.ne.jp/Kazuhira/20130627/1372339722
ここから、キャッシュサーバが複数必要になるので、浮いててもらうサーバを適宜起動・停止して進めていきます。
### 浮いててもらうサーバ1 $ sbt "run-main EmbeddedCacheServer node1" ### 浮いててもらうサーバ2 $ sbt "run-main EmbeddedCacheServer node2"
あとは、
> run-main InfinispanListeners
を使っていきます。
CacheStoreとトランザクションの設定は、こちらで固定しておきますね。
<eviction strategy="LIRS" maxEntries="2" /> <loaders passivation="false" shared="false" preload="true"> <loader class="org.infinispan.loaders.file.FileCacheStore" fetchPersistentState="false" ignoreModifications="false" purgeOnStartup="false"> <properties> <property name="location" value="cache-store-${nodeId}" /> </properties> </loader> </loaders> <transaction transactionManagerLookupClass="org.infinispan.transaction.lookup.GenericTransactionManagerLookup" transactionMode="TRANSACTIONAL" lockingMode="OPTIMISTIC" autoCommit="true" />
Distributionモードでクラスタリング
設定は、こんな感じ。numOwnersは2にしておきます。
<clustering mode="distribution"> <hash numOwners="2" /> <sync /> </clustering>
で、浮いててもらうキャッシュサーバを2つ起動します。一応、片方が起動しきるのを待ってからもう片方を起動しています。
すると、クラスタが変わったことを表すInfinispanのログが出て
[error] INFO: ISPN000094: Received new cluster view: [ubuntu-33204|1] [ubuntu-33204, ubuntu-62022]
CacheManagerLevelListenerレベルのビュー変更イベント、Cacheレベルのトポロジ変更とデータリハッシュのイベントが発生します。
[info] [CacheManagerLevelListener]# ビュー変更イベント => isMergeView? => false, viewId => 1, localAddress => ubuntu-33204, getOldMembers => [ubuntu-33204], getNewMembers => [ubuntu-33204, ubuntu-62022] [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 1, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Pre ] データリハッシュ => 1, memberAtStart => [ubuntu-33204], memberAtEnd => [ubuntu-33204, ubuntu-62022], getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 1, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 2, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Post] データリハッシュ => 2, memberAtStart => [ubuntu-33204], memberAtEnd => [ubuntu-33204, ubuntu-62022], getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 2, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}
イベントを受けたサーバは
[info] ------------------------------------------------------------------- [info] GMS: address=ubuntu-33204, cluster=listenres-cluster, physical address=fe80:0:0:0:20c:29ff:fe5c:cfec%2:48186 [info] -------------------------------------------------------------------
な人なのですが、
[info] [CacheLevelListener]# [Pre ] トポロジ変更 => 1, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}
自分ひとりだったところに、ubuntu-62022が増える感じでイベントが進んでいきます。
終わった時には、
[info] [CacheLevelListener]# [Post] データリハッシュ => 2, memberAtStart => [ubuntu-33204], memberAtEnd => [ubuntu-33204, ubuntu-62022], getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 2, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}
という感じですね。
これをやってわかったのは、先に起動していた側がイベント通知を受けることになる、ということです。
で、ここでさらにアプリケーションを動作させます。こちらもEmbeddedCacheは持っていますが、いろいろ処理をしたらアプリケーションとしては終了してしまいます。
> run-main InfinispanListeners
実行するとクラスタ参加Nodeが3つになって、リハッシュなどが発生するのでいろいろ大変なことになります。
クラスタViewを受け取ったメッセージが出て
[error] INFO: ISPN000094: Received new cluster view: [ubuntu-33204|2] [ubuntu-33204, ubuntu-62022, ubuntu-32393]
CacheManagerレベルのビュー変更イベントから、Cacheレベルのトポロジ変更、データリハッシュイベントが盛りだくさん。なお、これらのイベントは先に浮いていたサーバ両方で発生します。
[info] [CacheManagerLevelListener]# ビュー変更イベント => isMergeView? => false, viewId => 2, localAddress => ubuntu-33204, getOldMembers => [ubuntu-33204, ubuntu-62022], getNewMembers => [ubuntu-33204, ubuntu-62022, ubuntu-32393] [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 3, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]} [info] [CacheLevelListener]# [Pre ] データリハッシュ => 3, memberAtStart => [ubuntu-33204, ubuntu-62022], memberAtEnd => [ubuntu-33204, ubuntu-62022, ubuntu-32393], getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 3, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]} [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 4, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]} [info] [CacheLevelListener]# [Post] データリハッシュ => 4, memberAtStart => [ubuntu-33204, ubuntu-62022], memberAtEnd => [ubuntu-33204, ubuntu-62022, ubuntu-32393], getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 4, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]} [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 5, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 5, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 6, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Pre ] データリハッシュ => 6, memberAtStart => [ubuntu-33204, ubuntu-62022], memberAtEnd => [ubuntu-33204, ubuntu-62022], getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 6, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 7, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Post] データリハッシュ => 7, memberAtStart => [ubuntu-33204, ubuntu-62022], memberAtEnd => [ubuntu-33204, ubuntu-62022], getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 7, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 8, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]} [info] [CacheLevelListener]# [Pre ] データリハッシュ => 8, memberAtStart => [ubuntu-33204, ubuntu-62022], memberAtEnd => [ubuntu-33204, ubuntu-62022, ubuntu-32393], getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 8, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]} [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 9, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]} [info] [CacheLevelListener]# [Post] データリハッシュ => 9, memberAtStart => [ubuntu-33204, ubuntu-62022], memberAtEnd => [ubuntu-33204, ubuntu-62022, ubuntu-32393], getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 9, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]}
けっこう、いろいろ動きますね…。
そして、アプリケーション終了後はクラスタのメンバーが減っちゃうので、また変更が入ります。
[info] [CacheLevelListener]# [Pre ] トポロジ変更 => 10, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 10, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022, ubuntu-32393]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [error] 6 27, 2013 10:58:19 午後 org.infinispan.remoting.transport.jgroups.JGroupsTransport viewAccepted [error] INFO: ISPN000094: Received new cluster view: [ubuntu-33204|3] [ubuntu-33204, ubuntu-62022] [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 11, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Pre ] データリハッシュ => 11, memberAtStart => [ubuntu-33204, ubuntu-62022], memberAtEnd => [ubuntu-33204, ubuntu-62022], getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheManagerLevelListener]# ビュー変更イベント => isMergeView? => false, viewId => 3, localAddress => ubuntu-33204, getOldMembers => [ubuntu-33204, ubuntu-62022, ubuntu-32393], getNewMembers => [ubuntu-33204, ubuntu-62022] [info] [CacheLevelListener]# [Post] トポロジ変更 => 11, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 12, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Post] データリハッシュ => 12, memberAtStart => [ubuntu-33204, ubuntu-62022], memberAtEnd => [ubuntu-33204, ubuntu-62022], getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 12, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-33204, ubuntu-62022]}
よーく見ると、StartとEndでメンバーが減っているのがわかります。
Replicationモードでクラスタリング
Replicationモードに設定して、同じことをやってみます。
<clustering mode="replication" />
トポロジ変更とデータリハッシュ、DIST_SYNCまたはDIST_ASYNCの時のみ発生って書いてましたけど、普通に発生しましたよ…?前々回のエントリを、修正しておきましょー。
[error] INFO: ISPN000094: Received new cluster view: [ubuntu-51853|1] [ubuntu-51853, ubuntu-63454] [info] [CacheManagerLevelListener]# ビュー変更イベント => isMergeView? => false, viewId => 1, localAddress => ubuntu-51853, getOldMembers => [ubuntu-51853], getNewMembers => [ubuntu-51853, ubuntu-63454] [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 1, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Pre ] データリハッシュ => 1, memberAtStart => [ubuntu-51853], memberAtEnd => [ubuntu-51853, ubuntu-63454], getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 1, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 2, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Post] データリハッシュ => 2, memberAtStart => [ubuntu-51853], memberAtEnd => [ubuntu-51853, ubuntu-63454], getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 2, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}
出力の内容はだいぶ違いますけどね…。
起動・停止のあるアプリケーションを参加させると、浮いてるサーバに死ぬほどログが出ますが
[info] [CacheManagerLevelListener]# ビュー変更イベント => isMergeView? => false, viewId => 2, localAddress => ubuntu-51853, getOldMembers => [ubuntu-51853, ubuntu-63454], getNewMembers => [ubuntu-51853, ubuntu-63454, ubuntu-38694] [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 3, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Pre ] データリハッシュ => 3, memberAtStart => [ubuntu-51853, ubuntu-63454], memberAtEnd => [ubuntu-51853, ubuntu-63454, ubuntu-38694], getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 3, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 4, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Post] データリハッシュ => 4, memberAtStart => [ubuntu-51853, ubuntu-63454], memberAtEnd => [ubuntu-51853, ubuntu-63454, ubuntu-38694], getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 4, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 5, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 5, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 6, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Pre ] データリハッシュ => 6, memberAtStart => [ubuntu-51853, ubuntu-63454], memberAtEnd => [ubuntu-51853, ubuntu-63454, ubuntu-38694], getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 6, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 7, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Post] データリハッシュ => 7, memberAtStart => [ubuntu-51853, ubuntu-63454], memberAtEnd => [ubuntu-51853, ubuntu-63454, ubuntu-38694], getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 7, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}
出ていくとこはちょこっとになります。
[info] [CacheLevelListener]# [Pre ] トポロジ変更 => 8, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [error] 6 27, 2013 11:07:56 午後 org.infinispan.remoting.transport.jgroups.JGroupsTransport viewAccepted [error] INFO: ISPN000094: Received new cluster view: [ubuntu-51853|3] [ubuntu-51853, ubuntu-63454] [info] [CacheManagerLevelListener]# ビュー変更イベント => isMergeView? => false, viewId => 3, localAddress => ubuntu-51853, getOldMembers => [ubuntu-51853, ubuntu-63454, ubuntu-38694], getNewMembers => [ubuntu-51853, ubuntu-63454] [info] [CacheLevelListener]# [Post] トポロジ変更 => 8, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454, ubuntu-38694], numSegments=60, primaryOwners=[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-51853, ubuntu-63454], numSegments=60, primaryOwners=[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}
メンバー離脱時にデータリハッシュイベントが発生しないのは、Replicationモードだとデータを残ったサーバ間で再分配する必要がないからでしょうね。だって、全部持ってるんだし。
Invalidationモードでクラスタリング
クラスタリングのモードしては、最後にInvalidationを。
<clustering mode="invalidation" />
これには、専用のイベントCacheEntryInvalidatedがありましたね。
確認は、とりあえずサーバ2台に順次起動してもらいます。
ちなみに、ここでもトポロジ変更とデータリハッシュのイベントが発生しましたが…?
[info] [CacheManagerLevelListener]# ビュー変更イベント => isMergeView? => false, viewId => 1, localAddress => ubuntu-47583, getOldMembers => [ubuntu-47583], getNewMembers => [ubuntu-47583, ubuntu-59213] [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 1, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-47583], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-47583, ubuntu-59213], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Pre ] データリハッシュ => 1, memberAtStart => [ubuntu-47583], memberAtEnd => [ubuntu-47583, ubuntu-59213], getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-47583], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-47583, ubuntu-59213], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 1, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-47583], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-47583, ubuntu-59213], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 2, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-47583, ubuntu-59213], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-47583, ubuntu-59213], numSegments=60, primaryOwners=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Post] データリハッシュ => 2, memberAtStart => [ubuntu-47583], memberAtEnd => [ubuntu-47583, ubuntu-59213], getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-47583], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-47583, ubuntu-59213], numSegments=60, primaryOwners=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 2, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-47583, ubuntu-59213], numSegments=60, primaryOwners=[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-47583, ubuntu-59213], numSegments=60, primaryOwners=[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}
そして、両サーバともまったく同じキーに対してデータを登録するため、先に起動したサーバのデータに対して無効化イベントが発生します。
[info] [CacheLevelListener]# [Pre ] 無効化イベント => key14:value14 [info] [CacheLevelListener]# [Post] 削除イベント => key14:null, 古い値 => value14 [info] [CacheLevelListener]# [Post] トランザクション完了 => GlobalTransaction:<ubuntu-59213>:5:remote, isTransactionSuccessful? => true, isOriginLocal? => false [info] [CacheLevelListener]# [Post] トランザクション登録 => GlobalTransaction:<ubuntu-59213>:6:remote, isOriginLocal? => false [info] [CacheLevelListener]# [Pre ] 無効化イベント => key15:value15 [info] [CacheLevelListener]# [Post] 削除イベント => key15:null, 古い値 => value15 [info] [CacheLevelListener]# [Post] トランザクション完了 => GlobalTransaction:<ubuntu-59213>:6:remote, isTransactionSuccessful? => true, isOriginLocal? => false
ここにさらに、起動・停止のあるアプリケーションをぶつけます。やることは、他の浮いているサーバと同じです。
> run-main Invalidator
やっぱり、同じデータが無効化されました。
[info] [CacheLevelListener]# [Pre ] 無効化イベント => key14:value14 [info] [CacheLevelListener]# [Post] 削除イベント => key14:null, 古い値 => value14 [info] [CacheLevelListener]# [Post] トランザクション完了 => GlobalTransaction:<ubuntu-27817>:6:remote, isTransactionSuccessful? => true, isOriginLocal? => false [info] [CacheLevelListener]# [Post] トランザクション登録 => GlobalTransaction:<ubuntu-27817>:7:remote, isOriginLocal? => false [info] [CacheLevelListener]# [Pre ] 無効化イベント => key15:value15 [info] [CacheLevelListener]# [Post] 削除イベント => key15:null, 古い値 => value15 [info] [CacheLevelListener]# [Post] トランザクション完了 => GlobalTransaction:<ubuntu-27817>:7:remote, isTransactionSuccessful? => true, isOriginLocal? => false
ログが出たのは、浮いてるサーバ2台目と同じですね。他のエントリに対してログが出なかったのは、Evictionを有効にしていたっからっぽいです…。maxEntriesを2に絞っていましたしね。
外すと、全部破棄されました。
[info] [CacheLevelListener]# [Pre ] 無効化イベント => key10:value10 [info] [CacheLevelListener]# [Post] 削除イベント => key10:null, 古い値 => value10 [info] [CacheLevelListener]# [Pre ] 無効化イベント => key11:value11 [info] [CacheLevelListener]# [Post] 削除イベント => key11:null, 古い値 => value11 [info] [CacheLevelListener]# [Pre ] 無効化イベント => key12:value12 [info] [CacheLevelListener]# [Post] 削除イベント => key12:null, 古い値 => value12 [info] [CacheLevelListener]# [Pre ] 無効化イベント => key13:value13 [info] [CacheLevelListener]# [Post] 削除イベント => key13:null, 古い値 => value13 [info] [CacheLevelListener]# [Pre ] 無効化イベント => key14:value14 [info] [CacheLevelListener]# [Post] 削除イベント => key14:null, 古い値 => value14 [info] [CacheLevelListener]# [Pre ] 無効化イベント => key15:value15 [info] [CacheLevelListener]# [Post] 削除イベント => key15:null, 古い値 => value15
これは、浮いてるサーバ2台を順次起動した時の、1台目のログです。
あ、少し脱線しましたが、InvalidationモードではReplicationモードと同じくNodeの追加時にデータのリハッシュは発生しましたが、離脱時にはリハッシュは発生しませんでした。
よくよく見ると、ReplicatedConsistentHashって書いてますしね…。
[error] INFO: ISPN000094: Received new cluster view: [ubuntu-47583|3] [ubuntu-47583, ubuntu-59213] [info] [CacheLevelListener]# [Post] トポロジ変更 => 5, getConsistentHashAtStart => ReplicatedConsistentHash{members=[ubuntu-47583, ubuntu-59213, ubuntu-27817], numSegments=60, primaryOwners=[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}, getConsistentHashAtEnd => ReplicatedConsistentHash{members=[ubuntu-47583, ubuntu-59213], numSegments=60, primaryOwners=[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]}
Mergedイベント
クラスタに分断が発生し、再度接続されたマージが発生した時に起こるというMergedイベント。
これ、1台のマシンでやっている自分の環境だと起こせないと思って
家でクラスタの分断なんて、試せないぞ(T_T)
2013-06-27 00:25:26 via web
@kazuhira_r Linux系のOSであればiptablesでパケットドロップさせれば良いだけなので簡単に試せますよ
2013-06-27 14:24:02 via twmode to @kazuhira_r
確かに…このあたり、全然家で触らないので完全に忘れていました。仕事では、ちょこちょこ触ってるのにね。
で、浮いてもらうサーバ2台を再度起動します。
## 1台目 $ sbt "run-main EmbeddedCacheServer node1" ## 2台目 $ sbt "run-main EmbeddedCacheServer node2"
あ、クラスタリングのモードは、Distributionに戻しました。
ここで、iptablesを適用します。
Ubuntuでは、iptablesはufwというサービスに隠れているようなので、これをenableに。
$ sudo ufw enable [sudo] password for xxxxx: ファイアウォールはアクティブかつシステムの起動時に有効化されます。
iptablesはデフォルトでマルチキャストパケットをドロップするので、しばらく待っているとNodeが分断されます。
1台目と
[error] 6 27, 2013 11:36:01 午後 org.infinispan.remoting.transport.jgroups.JGroupsTransport viewAccepted [error] INFO: ISPN000094: Received new cluster view: [ubuntu-57795|2] [ubuntu-57795] [info] [CacheManagerLevelListener]# ビュー変更イベント => isMergeView? => false, viewId => 2, localAddress => ubuntu-57795, getOldMembers => [ubuntu-57795, ubuntu-62133], getNewMembers => [ubuntu-57795] [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 3, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-57795, ubuntu-62133]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-57795]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 3, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-57795, ubuntu-62133]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-57795]}
2台目で、それぞれ同じようなログが出ます。
[error] 6 27, 2013 11:36:01 午後 org.infinispan.remoting.transport.jgroups.JGroupsTransport viewAccepted [error] INFO: ISPN000094: Received new cluster view: [ubuntu-62133|2] [ubuntu-62133] [info] [CacheManagerLevelListener]# ビュー変更イベント => isMergeView? => false, viewId => 2, localAddress => ubuntu-62133, getOldMembers => [ubuntu-57795, ubuntu-62133], getNewMembers => [ubuntu-62133] [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 4, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-57795, ubuntu-62133]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-62133]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 4, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-57795, ubuntu-62133]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-62133]}
この間隔を短くするには、JGroupsの設定をいじるんでしょうけど、そこまではせず。
そして、今度はiptablesを無効にします。
$ sudo ufw disable ファイアウォールを無効にし、システム起動時にも無効にします
ちょっと待っていると、Mergedイベントが発生して、分断されたクラスタが統合されます。
1台目。
[error] 6 27, 2013 11:38:25 午後 org.infinispan.remoting.transport.jgroups.JGroupsTransport viewAccepted [error] INFO: ISPN000093: Received new, MERGED cluster view: MergeView::[ubuntu-57795|3] [ubuntu-57795, ubuntu-62133], subgroups=[ubuntu-62133|2] [ubuntu-62133], [ubuntu-57795|2] [ubuntu-57795] [info] [CacheManagerLevelListener]# マージイベント => [[ubuntu-62133], [ubuntu-57795]], isMergeView? => true, viewId => 3, localAddress => ubuntu-57795, getOldMembers => [ubuntu-57795], getNewMembers => [ubuntu-57795, ubuntu-62133] [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 6, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-57795]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-57795, ubuntu-62133]} [info] [CacheLevelListener]# [Post] トポロジ変更 => 6, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-57795]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-57795, ubuntu-62133]}
2台目。
[error] 6 27, 2013 11:38:25 午後 org.infinispan.remoting.transport.jgroups.JGroupsTransport viewAccepted [error] INFO: ISPN000093: Received new, MERGED cluster view: MergeView::[ubuntu-57795|3] [ubuntu-57795, ubuntu-62133], subgroups=[ubuntu-62133|2] [ubuntu-62133], [ubuntu-57795|2] [ubuntu-57795] [info] [CacheLevelListener]# [Pre ] トポロジ変更 => 6, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-62133]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-57795, ubuntu-62133]} [info] [CacheManagerLevelListener]# マージイベント => [[ubuntu-62133], [ubuntu-57795]], isMergeView? => true, viewId => 3, localAddress => ubuntu-62133, getOldMembers => [ubuntu-62133], getNewMembers => [ubuntu-57795, ubuntu-62133] [info] [CacheLevelListener]# [Post] トポロジ変更 => 6, getConsistentHashAtStart => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-62133]}, getConsistentHashAtEnd => DefaultConsistentHash{numSegments=60, numOwners=2, members=[ubuntu-57795, ubuntu-62133]}
これで、だいたいイベントは確認できましたね。