前回の記事に続き、@kazuhira_rさんの記事「JCache(Hazelcast) on Payara Microを試す」の内容をDockerイメージで試してみました。
まずはかずひらさんのサンプルをビルド
$ git clone https://github.com/kazuhira-r/hazelcast-examples.git
$ cd payara-micro-jcache-example
$ mvn package
$ cd target
雑にホストネットワーク(--net=host
)使ってマルチキャストでクラスタリングさせます。
ノード1
$ docker run --rm -it --net=host -v `pwd`:/tmp payaradocker/payara-micro:4.1.152.1.micro.oraclejdk8 java -jar payara-micro-4.1.152.1.jar --deploy /tmp/payara-micro-jcache-example.war
ノード2(ポートを変えます)
$ docker run --rm -it --net=host -v `pwd`:/tmp payaradocker/payara-micro:4.1.152.1.micro.oraclejdk8 java -jar payara-micro-4.1.152.1.jar --deploy /tmp/payara-micro-jcache-example.war --port 8081
ログを見ると、
ノード1には
Members [2] {
Member [172.17.42.1]:5900 this
Member [172.17.42.1]:5901
}
]]
ノード2には
Members [2] {
Member [172.17.42.1]:5900
Member [172.17.42.1]:5901 this
}
]]
が出ており、クラスタが構成されたことがわかりました。
記事のようにアクセスしてみます。
$ time curl "http://[Docker Host]:8080/payara-micro-jcache-example/rest/calc/add?a=10&b=2"
12
real 0m3.030s
user 0m0.007s
sys 0m0.005s
ノード1へのアクセスは3秒かかっていますが、、
$ time curl "http://[Docker Host]:8081/payara-micro-jcache-example/rest/calc/add?a=10&b=2"
12
real 0m0.030s
user 0m0.007s
sys 0m0.005s
キャッシュが共有されたノード2のアクセスはすぐに返りました。
できましたね。
Payara Micro直接叩くのと大差ありませんが、環境セットアップが楽です。