Hazelcast (Payara 4.1.151) - khasunuma/Payara GitHub Wiki

目次

1. 概要

このページでは Payara 4.1.151 で導入された新しい Hazelcast 機能の使い方について説明します。 Hazelcast はインメモリ・データ・グリッドで、Payara Server においては Web および EJB のセッション永続化と JSR 107 (JCache) 実装を提供します。

2. ドキュメント規約

${Product-Root} - Payara Server ディレクトリのルートを表します。具体的には Payara をインストールした場所を参照します。 ${Domain} - Payara ドメイン名への参照を表します。 ${Target} - インスタンスまたはクラスタ名への参照を表します。
... - これは実際のファイルまたはプログラムには存在するが説明とは無関係なコードの省略を意味します。
${Cluster-Config} - クラスタ構成名への参照を表します。

3. Hazelcast の有効化

Payara のデフォルトのドメイン構成では、Hazelcast は有効になっていません。管理コンソールまたはコマンドラインで asadmin コマンドを使用するか、あるいは domain.xml ファイルを編集することで有効化できます。

3.1 管理コンソールによる Hazelcast の有効化

管理コンソールのホームから以下の操作を行います:

  • クラスタ、スタンドアロン・インスタンスまたは管理サーバー・インスタンス (server) からクラスタまたはインスタンスの 一般情報 ページを選択します。
  • Hazelcast タブをクリックし、Hazelcast Configuration ページを開きます。
  • Enabled をチェックし、変更を保存します。

3.2 asadmin を用いた Hazelcast の有効化

asadmin の set-hazelcast-configuration コマンドは Hazelcast が有効化されているかどうかに関わらず、起動時に必ず指定しなければなりません。このコマンドは Hazelcast の構成にも使用します。詳細は こちら で説明します。 コマンドは管理サーバーが起動しており、ポート 4848 で待機していることを想定しています。異なるポートを指定する場合は asadmin のユーティリティ・オプション --port を用います。

asadmin set-hazelcast-configuration --enabled=true

もし対象が指定されていない場合、コマンドは管理サーバー・インスタンス上で Hazelcast を有効にします。その他のインスタンスまたはクラスタ上で Hazelcast を有効にするには --target オプションを以下のように使用してください:

asadmin set-hazelcast-configuration --enabled=true --target=${Target}

asadmin コマンドの dynamic オプションは既定では false となっています。そのため、Hazelcast を対象のインスタンスまたはクラスタの再起動なしで有効にするには、--dynamic=true を使用します:

asadmin set-hazelcast-configuration --enabled=true --dynamic=true

3.3 domain.xml ファイルにおける Hazelcast の有効化

  • 任意のテキストエディタで domain.xml ファイルを開き、 ${Product_Root}/glassfish/domains/${Domain}/config/ 以下を見つけます。
  • <config> タグ (例: 管理サーバーの場合 <config name="server-config">) 以下に <hazelcast-runtime-configuration> タグを見つけて、以下のように enabled="true" を追加します:
    <hazelcast-runtime-configuration enabled="true"/>
    • Note - もしドメインの domain.xml ファイルを編集するより前に一度もドメインを起動していない場合、このタグは作成されていませんのでユーザー自身で追加する必要があります。

4. Hazelcast の構成

Payara Server は管理コンソールまたは domain.xml ファイル、あるいは Hazelcast 構成ファイルを使用した Hazelcast の構成をサポートします。Hazelcast 構成ファイルを使用する場合には管理サーバーおよび domain.xml ファイルの設定は無視されます。configuration file 上で値が設定されていないパラメータについては、もしそれが管理サーバーまたは domain.xml で設定されていたとしても Hazelcast の既定値に戻されます。(Note - Hazelcast の既定値は Payara の Hazelcast 既定値と一致している必要がありません)。

4.1 管理コンソールによる Hazelcast の構成

Hazelcast configuration ページの詳細は 管理コンソールによる Hazelcast の有効化 を参照してください:

  • クラスタ、スタンドアロン・インスタンスまたは管理サーバー・インスタンス (server) をクリックし、クラスタまたはインスタンスの 一般情報 ページを表示します。
  • Hazelcast タブをクリックし、Hazelcast Configuration ページを表示します。 ここから、以下の構成オプションを使用することができます (上記の Enabled プロパティを除きます):
プロパティ 説明
Dynamic 必要であれば、Payara に埋め込まれた Hazelcast メンバーを起動または停止します。
Override Configuration File このページのすべての設定項目をオーバーライドする Hazelcast 構成ファイルのパス (ドメイン構成ディレクトリからの相対位置) です。これが設定された場合は以下の設定項目がすべて無視され、指定された構成ファイルから情報が取得されます。
Start Port Hazelcast がリスンする既定のポートです。有効なポートを検出するまで Hazelcast はこの番号をインクリメントします。
Multicast Port Hazelcast クラスタ内の通信で使用するポート番号です。
Multicast Group Hazelcast クラスタ内の通信で使用するマルチキャスト・グループ (アドレス) です。
JNDI Name Hazelcast インスタンスにバインドする JNDI 名です。

必要な値を入力したら、 Save をクリックします。いずれの項目も設定変更に伴うドメインまたはインスタンス/クラスタの再起動は不要です。

4.2 asadmin を用いた Hazelcast の構成

asadmin を用いた Hazelcast の有効化 セクションで示した通り、asadmin の set-hazelcast_configuration コマンドは Hazelcast の有効化/無効化双方と、Hazelcast の構成に使用します。コマンドに --help オプションを渡して使用方法を端末上で参照することができます。有効な構成オプションを こちら に示します。

以下の例では、cluster1 というクラスタに対するすべてのオプションを示します。

asadmin set-hazelcast-configuration --enabled=true --target=cluster1 --dynamic=true -f hazelcast-config.xml --startport=5902 -g 224.2.2.3 --multicastport=6666 -j payara/Hazelcast

4.3 domain.xml ファイルにおける Hazelcast の構成

  • 任意のテキストエディタで domain.xml ファイルを開き、 ${Product_Root}/glassfish/domains/${Domain}/config/ 以下を見つけます。
  • <config> タグ (例: 管理サーバーの場合 <config name="server-config">) 以下に <hazelcast-runtime-configuration> タグを見つけて、以下のプロパティのうち必要な 1 つまたは複数を追加します:
プロパティ 管理コンソール上の表記 説明
hazelcast-configuration-file Override Configuration File 使用する Hazelcast 構成ファイルを指定します。パスはドメイン構成ディレクトリからの相対位置である必要があります。
start-port Start Port Hazelcast がリスンする既定のポートです。有効なポートを検出するまで Hazelcast はこの番号をインクリメントします。
multicast-group Multicast Group Hazelcast クラスタ内の通信で使用するマルチキャスト・グループ (アドレス) です。
multicast-port Multicast Port Hazelcast クラスタ内の通信で使用するポート番号です。
jndi-name JNDI Name Hazelcast インスタンスにバインドする JNDI 名です。

各プロパティの具体的な構成例を以下に示します:

<config name="server-config">
    ...  
    <hazelcast-runtime-configuration enabled="true" hazelcast-configuration-file="hazelcast-configuration.xml" start-port="5666" multicast-group"224.2.2.4" jndi-name="payara/Hazelcast1 multicast-port="54328"></hazelcast-runtime-configuration>
    ...  
</config>

5. アプリケーションでの Hazelcast の使用

以下のセクションでは Payara に埋め込まれた Hazelcast をアプリケーション・コードから使用する方法について詳しく見てゆきます。

5.1 JNDI 登録済み Hazelcast インスタンスへのアクセス

既定では、Hazelcast インスタンスの JNDI 名は payara/Hazelcast です。JNDI 名の変更方法については セクション 4 を参照してください。

Hazelcast へアクセスする Java クラスには以下のパッケージをインポートする必要があります:

import com.hazelcast.core.HazelcastInstance;
import javax.naming.Context;
import javax.naming.InitialContext;

Hazelcast のパッケージをインポートするには、Payara Hazelcast パッケージを依存関係としてプロジェクトの pom.xml ファイル (Maven プロジェクトの場合) か、Hazelcast の JAR をプロジェクトのクラスパスに含める必要があります (Maven プロジェクト以外の場合)。Payara Hazelcast パッケージを pom の依存関係に追加するには pom の dependenies セクションに以下の記述を追加します:

<dependency>
    <groupId>fish.payara.appserver</groupId>
    <artifactId>payara-jsr107</artifactId>
    <version>4.1</version>
    <type>jar</type>
    <scope>provided</scope>
</dependency>

Hazelcast の JAR (Maven 以外のプロジェクトの場合) は Hazelcast の Web サイト からダウンロードするか、Payara に含まれる JAR を使用することができます。Payara に含まれる JAR は ${Product-Root}/glassfish/modules/hazelcast.jar に配置されています。

以下の例では HazelcastInstance 変数を Payara に埋め込まれた Hazelcast で初期化しています。

Context ctx = new InitialContext();  
HazelcastInstance instance = (HazelcastInstace) ctx.lookup("payara/Hazelcast");  

実際には Naming Exception がスローされる場合があるため、try-catch 節で囲んでください。

6. Hazelcast を使用した Web および EJB コンテナの永続化

Hazelcast をクラスタの Web および EJB コンテナの永続化プロバイダとして使用することができます。このためには Hazelcast を有効化する必要があります。詳細は セクション 3 を参照してください (注: Hazelcast が有効でなくても、Hazelcast を永続化プロバイダとして指定は可能ですが、このような環境下では永続化は失敗します)

6.1 管理コンソールによる Hazelcast の永続化プロバイダとしての設定

左側のパネルの構成で、Hazelcast を永続化プロバイダとして設定したいクラスタの構成を展開し、 Availability Service をクリックします。

6.1.1 Web コンテナの場合

Hazelcast を Web コンテナの永続化プロバイダとして設定する場合:

  • Web Container Availability タブを表示します。
  • Persistence Type を展開し、hazelcast を選択します。
  • 変更内容を保存します。

6.1.2 EJB コンテナの場合

Hazelcast を EJB コンテナの永続化プロバイダとして設定する場合:

  • EJB Container Availability タブを表示します。
  • HA Persistence Type を展開し、hazelcast を選択します。
  • 変更内容を保存します。

6.2 asadmin を用いた Hazelcast の永続化プロバイダとしての設定

asadmin を用いて永続化プロバイダを構成する場合は、set コマンドを使用する必要があります。

6.2.1 Web コンテナの場合

Hazelcast を Web コンテナの永続化プロバイダとして設定する場合、以下を実行します: asadmin set ${Cluster-Config}.availability-service.web-container-availability.persistence-type=hazelcast

6.2.2 EJB コンテナの場合

Hazelcast を EJB コンテナの永続化プロバイダとして設定する場合、以下を実行します: asadmin set ${Cluster-Config}.availability-service.ejb-container-availability.sfsb-ha-persistence-type=hazelcast

6.3 domain.xml ファイルにおける Hazelcast の永続化プロバイダとしての設定

永続化プロバイダを domain.xml ファイル経由で構成する場合は、クラスタ構成の availability-service 設定を編集する必要があります。

6.3.1 Web コンテナの場合

Hazelcast を Web コンテナの永続化プロバイダとして設定する場合、domain.xml を以下のように編集します:

<config name="${Cluster-Config}">
    ...
    <availability-service>
        ...
        <web-container-availability persistence-type="hazelcast"></web-container-availability>
        ...
    </availability-service>
    ...
</config>

6.3.2 EJB コンテナの場合

Hazelcast を EJB コンテナの永続化プロバイダとして設定する場合、domain.xml を以下のように編集します:

<config name="${Cluster-Config}">
    ...
    <availability-service>
        ...
        <ejb-container-availability sfsb-ha-persistence-type="hazelcast"></ejb-container-availability>
        ...
    </availability-service>
    ...
</config>

7. asadmin コマンド

7.1 set-hazelcast-configuration

埋め込み Hazelcast メンバーの有効化/無効化および構成を行います。このコマンドを実行するには管理サーバーが起動している必要があります。

オプション 短縮 説明 既定値 必須
--enabled 埋め込み Hazelcast メンバーの有効化/無効化。 false Yes
--target 構成対象のインスタンスまたはクラスタ。 server No
--dynamic 埋め込み Hazelcast メンバーの動的な起動・停止の有効化/無効化。 false No
--hazelcastconfigurationfile -f 使用する Hazelcast 構成ファイル。パスはドメイン構成ディレクトリ (${Product-Root}/glassfish/domains/${Domain}/config/) からの相対パスである必要がある。このオプションを使用して有効な Hazelcast 構成ファイルを指定した場合、他で設定されたオプションはすべて無視される。Hazelcast 構成ファイルで指定されなかったオプションについては Hazelcast の既定値が適用される。 hazelcast-config.xml No
--startport Hazelcast の動作ポート番号。使用中の場合は未使用のポートが見つかるまでポート番号がインクリメントされる。 5900 No
--multicastgroup -g Hazelcast クラスタ内の通信で使用するマルチキャスト・グループ (アドレス)。 224.2.2.3 No
--multicastport Hazelcast クラスタ内の通信で使用するポート番号。 54327 No
--jndiname -j Hazelcast インスタンスにバインドする JNDI 名。 payara/Hazelcast No

例: asadmin set-hazelcast-configuration --enabled=true --target=cluster1 --dynamic=true -f hazelcast-config.xml --startport=5902 -g 224.2.2.3 --multicastport=6666 -j payara/Hazelcast

7.2 get-hazelcast-configuration

埋め込み Hazelcast メンバーの構成を取得します。このコマンドを実行するには管理サーバーが起動している必要があります。

オプション 短縮 説明 既定値 必須
--target Hazelcast 構成を取得するインスタンスまたはクラスタ。 server No

例: asadmin get-hazelcast-configuration --target=server

7.3 list-hazelcast-members

アクティブな Hazelcast インスタンスおよびクラスタを一覧表示します。このコマンドを実行するには管理サーバーが起動している必要があります。

オプション 短縮 説明 既定値 必須
--target Hazelcast 構成を取得するインスタンスまたはクラスタ。 server No

例: asadmin list-hazelcast-members --target=server

7.4 restart-hazelcast

サーバーまたはクラスタに関連づけられた Hazelcast インスタンスを再起動します。このコマンドを実行するには管理サーバーが起動している必要があります。

オプション 短縮 説明 既定値 必須
--target Hazelcast 構成を取得するインスタンスまたはクラスタ。 server No

例: asadmin restart-hazelcast --target=server

⚠️ **GitHub.com Fallback** ⚠️