Infinispan Cluster

前回のサーバをクラスタ構成にしてテストしてみました。

参考)
「Infinispan 10のServerNGを試す」
https://kazuhira-r.hatenablog.com/entry/2019/07/27/020002

環境)
Infinispan Server 13.0.15.Final / Java 17 / Ubuntu 22.04 x 二台
n10: 192.168.1.172 (前回環境)
n0k: 192.168.1.192 (新規)

前回との設定ファイル(server/conf/infinispan.xml)の違い

※クラスタをくむすべてのサーバで同じ設定

最初はこれだけでできるのだろうか、という疑問があったため、動作しないときは他の要因をいろいろと調べました。
※JGroups の設定について
https://access.redhat.com/documentation/ja-jp/red_hat_data_grid/6.5/html/administration_and_configuration_guide/sect-configure_jgroups_library_mode
動作しなかった原因は、Javaのバージョンで、ver11の場合マルチキャストバケットが飛びませんでした。

参考サイトではポートのオフセットをづらして(例 -o 100)同一サーバにInfinispan Serverを複数同居させていますが、やはり別のサーバでないと分散している感じがしないため分けました。(このオフセットずらしはWeb画面などのポートもずらしてくれるので便利です)

テストで確認したいこと

  1. n10サーバの内容が、n0kサーバに反映されるか
  2. n10サーバをダウンさせてもデータは消えないか(n0k側をWebツールで確認)
  3. n10サーバを復帰、そしてn0kサーバをダウンさせた後、n10のサーバのデータは同様にプログラムから取得できるか
  4. n10サーバをダウンさせるとプログラムから取得できないか(nullになる)


手順

n10のサーバを起動

bin/server.sh -b 0.0.0.0

別コンソールで前回作成したプログラムでキーの書き込み(key01=>value01, key02=>value02)

java -jar target/hello2-1.0-SNAPSHOT-jar-with-dependencies.jar

前回同様n0kサーバにInfinispanをインストールしてinfinispan.xmlを書き換える
n0kのサーバを起動

bin/server.sh -b 0.0.0.0

コンソール表示


2023-03-14 01:59:20,014 INFO (main) [org.infinispan.CLUSTER] ISPN000094: Received new cluster view for channel cluster: [n10-61159|5] (2) [n10-61159, n0k-26382]
2023-03-14 01:59:20,121 INFO (main) [org.infinispan.CLUSTER] ISPN000079: Channel cluster local address is n0k-26382, physical addresses are [192.168.1.192:38784]
2023-03-14 01:59:20,634 INFO (main) [org.jboss.threads] JBoss Threads version 2.3.3.Final
2023-03-14 01:59:21,302 INFO (main) [org.infinispan.CONTAINER] ISPN000104: Using EmbeddedTransactionManager

このとき、n10にも情報が表示される。

マルチキャストパケットも確認

n@n10:~/infinispan-server-13.0.15.Final/_work/hello2$ sudo tcpdump -i enp0s3 -n igmp
tcpdump: verbose output suppressed, use -v[v]… for full protocol decode
listening on enp0s3, link-type EN10MB (Ethernet), snapshot length 262144 bytes
02:02:30.387613 IP 192.168.1.192 > 228.6.7.8: igmp v2 report 228.6.7.8
02:02:31.628466 IP 192.168.1.192 > 228.6.7.8: igmp v2 report 228.6.7.8

Webアクセス

n10のサーバをCTL-Cでダウンし再度起動そしてn0kのサーバをダウン
n10でプログラムを実行して内容確認(このときはキーをセットせず取得するだけのプログラムを使用)
n10のサーバをダウンさせ、再びプログラムを実行してnullになっていることを確認

プログラムは下記のようにコメントをしたりして、設定と取得を確認しました。(本題でないため手抜きでスミマセン)

以上、当たり前の機能ですが、すべて確認することができました。