6.7. グローバルの永続的な場所
Data Grid は、再起動後にクラスタートポロジーおよびキャッシュされたデータを復元できるようにグローバル状態を保持します。
Data Grid はファイルロックを使用して、グローバル永続化ロケーションへの同時アクセスを阻止します。ロックは起動時に取得され、ノードのシャットダウン時に解放されます。ダングリングロックファイルが存在する場合、クラッシュまたは外部終了が原因で、ノードが正常にシャットダウンされなかったことを示します。デフォルト設定では、データ破損を回避するために、Data Grid は次のメッセージを表示して起動を拒否します。
ISPN000693: Dangling lock file '%s' in persistent global state, probably left behind by an unclean shutdown
グローバル状態の unclean-shutdown-action
設定を次のいずれかに設定することで、この動作を変更できます。
-
FAIL
: 永続的なグローバル状態でダングリングロックファイルが見つかった場合、Cache Manager の起動を阻止します。これがデフォルトの動作です。 -
PURGE
: 永続的なグローバル状態にダングリングロックファイルが見つかった場合、永続グローバル状態をクリアします。 -
IGNORE
: 永続的なグローバル状態におけるダングリングロックファイルの存在を無視します。
リモートキャッシュ
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");