6.7. グローバルの永続的な場所
Data Grid は、再起動後にクラスタートポロジーおよびキャッシュされたデータを復元できるようにグローバル状態を保持します。
リモートキャッシュ
Data Grid Server は、クラスターの状態を $RHDG_HOME/server/data
ディレクトリーに保存します。
server/data
ディレクトリーまたはその内容を削除または変更しないでください。Data Grid は、サーバーインスタンスを再起動すると、このディレクトリーからクラスターの状態を復元します。
デフォルト設定を変更したり、server/data
ディレクトリーを直接変更すると、予期しない動作が発生し、データが失われる可能性があります。
組み込みキャッシュ
Data Grid は、グローバルな永続的な場所として user.dir
システムプロパティーにデフォルト設定されます。ほとんどの場合、これはアプリケーションが開始するディレクトリーです。
クラスター化された組み込みキャッシュ (レプリケートまたは分散など) の場合は、クラスタートポロジーを復元するためにグローバルの永続的な場所を常に有効にし、設定する必要があります。
グローバルの永続的な場所外にあるファイルベースのキャッシュストアの絶対パスを設定しないでください。この場合、Data Grid は以下の例外をログに書き込みます。
ISPN000558: "The store location 'foo' is not a child of the global persistent location 'bar'"
6.7.1. グローバルの永続的な場所の設定
Data Grid がクラスター化された組み込みキャッシュのグローバル状態を保存する場所を有効にして設定します。
Data Grid Server は、グローバル永続性を有効にし、デフォルトの場所を設定します。グローバル永続性を無効にしたり、リモートキャッシュのデフォルト設定を変更したりしないでください。
前提条件
- Data Grid をプロジェクトに追加します。
手順
以下のいずれかの方法でグローバル状態を有効にします。
-
global-state
要素を Data Grid 設定に追加します。 -
GlobalConfigurationBuilder
API でglobalState().enable()
メソッドを呼び出します。
-
グローバルの永続的な場所は各ノードに一意であるか、クラスター間で共有されるかどうかを定義します。
ロケーションのタイプ 設定 各ノードに一意
persistent-location
要素またはpersistentLocation()
メソッドクラスター間で共有される
shared-persistent-location
要素またはsharedPersistentLocation(String)
メソッドData Grid がクラスターの状態を保存するパスを設定します。
たとえば、ファイルベースのキャッシュストアは、パスはホストファイルシステムのディレクトリーです。
値は以下のとおりです。
- ルートを含む完全な場所を含む絶対的な場所が含まれます。
- ルートの場所と相対的です。
パスに相対値を指定する場合は、ルートロケーションに解決するシステムプロパティーも指定する必要があります。
たとえば、
global/state
をパスとして設定する Linux ホストシステムでは、以下のようになります。また、/opt/data
ルートロケーションに解決するmy.data
プロパティーも設定します。この場合、Data Grid はグローバルの永続的な場所として/opt/data/global/state
を使用します。
グローバルの永続的な場所設定
XML
<infinispan> <cache-container> <global-state> <persistent-location path="global/state" relative-to="my.data"/> </global-state> </cache-container> </infinispan>
JSON
{ "infinispan" : { "cache-container" : { "global-state": { "persistent-location" : { "path" : "global/state", "relative-to" : "my.data" } } } } }
YAML
cacheContainer: globalState: persistentLocation: path: "global/state" relativeTo : "my.data"
GlobalConfigurationBuilder
new GlobalConfigurationBuilder().globalState() .enable() .persistentLocation("global/state", "my.data");