CLOVER🍀

That was when it all began.

InfinispanのListener機能を使ってみる - 3

前回は、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台のマシンでやっている自分の環境だと起こせないと思って

とつぶやいてたら、nekopさんからiptables使えば簡単ですよ、とツッコミをいただきました。

確かに…このあたり、全然家で触らないので完全に忘れていました。仕事では、ちょこちょこ触ってるのにね。

で、浮いてもらうサーバ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]}

これで、だいたいイベントは確認できましたね。