管理および設定ガイド
Red Hat JBoss Data Grid 7.0 向け
概要
第1章 Red Hat JBoss Data Grid のセットアップ リンクのコピーリンクがクリップボードにコピーされました!
1.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
1.2. Red Hat JBoss Data Grid のセットアップ手順 リンクのコピーリンクがクリップボードにコピーされました!
手順1.1 JBoss Data Grid のセットアップ
キャッシュマネージャーのセットアップ
JBoss Data Grid の設定手順は、キャッシュマネージャーから始まります。キャッシュマネージャーにより、事前に設定された設定テンプレートを使ってキャッシュインスタンスをすばやくかつ簡単に取得し、作成することができます。キャッシュマネージャーのセットアップについてさらに詳しくは、JBoss Data Grid の『スタートガイド』のキャッシュマネージャーのセクションを参照してください。JVM メモリー管理のセットアップ
JBoss Data Grid の設定における重要な手順は、お使いの Java 仮想マシン (JVM) のメモリー管理のセットアップです。JBoss Data Grid は、JVM メモリーの管理に役立つ、エビクションおよびエクスパレーションなどの各種機能を提供します。エビクションのセットアップ
エビクションを使用し、エントリーが使用される頻度に基づいてインメモリーキャッシュの実装からエントリーを削除するために使用するロジックを指定します。JBoss Data Grid は、データグリッド内のエントリーのエビクションに対する詳細な制御を実行するための複数の異なるエビクションストラテジーを提供します。エビクションのストラテジーおよびエビクションを設定する手順については、2章エビクションのセットアップ を参照してください。エクスパレーションのセットアップ
キャッシュにおけるエントリーの時間の上限を設定するために、エクスパレーション情報を各エントリーに添付します。エクスパレーションを使用して、エントリーがキャッシュ内に留まる最長期間や、取得されたエントリーがキャッシュから削除される前にアイドル状態として有効となる期間をセットアップします。さらに詳しくは、3章エクスパレーションのセットアップ を参照してください。
キャッシュのモニタリング
JBoss Data Grid では、JBoss ロギングによるロギング機能を使用し、ユーザーのキャッシュをモニタリングする支援を行います。ロギングのセットアップ
JBoss Data Grid にロギングをセットアップするのは必須ではありませんが、このセットアップを強く推奨します。JBoss Data Grid は JBoss ロギングを使用します。これにより、ユーザーはデータグリッド内の各種操作に対する自動化されたロギングを簡単にセットアップできます。ログは、その後エラーのトラブルシューティングや予想外の失敗の原因を特定するために使用することができます。さらに詳しくは、4章ロギングのセットアップ を参照してください。
キャッシュモードのセットアップ
キャッシュモードは、キャッシュがローカル (単純なインメモリーキャッシュ) か、またはクラスター化されたキャッシュ (ノードの小さなサブセット上で状態変更をレプリケートする) のいずれかを指定するために使用されます。さらに、キャッシュがクラスター化されている場合、変更をノードのサブセットにどのように伝搬させるかを定めるために、レプリケーション、ディストリビューションまたはインバリデーションモードのいずれかを適用する必要があります。さらに詳しくは、パートIII「キャッシュモードのセットアップ」 を参照してください。キャッシュのロックのセットアップ
レプリケーションまたはディストリビューションが有効な場合、エントリーのコピーは複数のノードでアクセスできます。結果として、データのコピーは、異なる複数のスレッドで同時にアクセスしたり、変更したりすることができます。複数のノード間ですべてのコピーの一貫性を維持するには、ロックを設定します。さらに詳しくは、パートVI「キャッシュのロックのセットアップ」 および 17章分離レベルのセットアップ を参照してください。キャッシュストアのセットアップと設定
JBoss Data Grid は、メモリーから削除されたエントリーを永続外部キャッシュストアに一時的に保存するために、パッシベーション機能 (またはパッシベーションがオフになっている場合はキャッシュ書き込みストラテジー) を提供します。パッシベーションまたはキャッシュ書き込みストラテジーをセットアップするには、まずキャッシュストアをセットアップする必要があります。キャッシュストアのセットアップ
キャッシュストアは永続ストアへの接続として機能します。キャッシュストアは、エントリーを永続ストアから取得し、変更を永続ストアに戻すために主に使用されます。さらに詳しくは、パートVII「キャッシュストアのセットアップと設定」 を参照してください。パッシベーションのセットアップ
パッシベーションは、メモリーからエビクトされたエントリーをキャッシュストアに保存します。この機能により、エントリーがメモリー内に存在しない場合でも使用可能な状態となり、永続キャッシュへの高いコストが発生する可能性のある操作を回避できます。さらに詳しくは、パートVIII「パッシベーションのセットアップ」 を参照してください。キャッシュ書き込みストラテジーのセットアップ
パッシベーションが無効な場合、キャッシュへの書き込みが試行されるたびに、キャッシュストアへの書き込みが行なわれます。これは、デフォルトのライトスルーキャッシュ書き込みストラテジーです。これらのキャッシュの書き込みが同期的または非同期的に実行されるかを定めるためにキャッシュライティングストラテジーを設定します。さらに詳しくは、パートIX「キャッシュ書き込みのセットアップ」 を参照してください。
キャッシュとキャッシュマネージャーのモニタリング
JBoss Data Grid には、データグリッドが実行中の場合にキャッシュとキャッシュマネージャーをモニタリングするための 3 つの主なツールが含まれます。JMX のセットアップ
JMX は、JBoss Data Grid に使用される標準的な統計および管理ツールです。ユースケースに応じて、JMX はキャッシュまたはキャッシュマネージャー、またはそれら両方のレベルで設定することができます。さらに詳しくは、22章Java Management Extensions (JMX) のセットアップ を参照してください。管理コンソールへのアクセス
Red Hat JBoss Data Grid 7.0.0 では、キャッシュおよびキャッシュマネージャーの Web ベースのモニタリングおよび管理を可能にする管理コンソールを導入しています。使用方法については、「Red Hat JBoss Data Grid 管理コンソールの使用開始」 を参照してください。Red Hat JBoss Operations Network (JON) のセットアップ
Red Hat JBoss Operations Network (JON) は、JBoss Data Grid で利用できる 2 番目のモニタリングソリューションです。JBoss Operations Network (JON) は、キャッシュおよびキャッシュマネージャーのランタイムパラメーターおよび統計をモニタリングするためのグラフィカルインターフェースを提供します。さらに詳しくは、23章JBoss Operations Network (JON) のセットアップ を参照してください。注記
JON プラグインは JBoss Data Grid 7.0 で非推奨となり、以降のバージョンでは除去される予定です。
トポロジー情報の導入
オプションとして、データグリッド内の特定タイプの情報またはオブジェクトが置かれる場所を指定するために、データグリッドにトポロジー情報を提供します。サーバーヒンティングは、トポロジー情報を JBoss Data Grid に導入する方法の内の 1 つです。サーバーヒンティングのセットアップ
サーバーヒンティングがセットアップされると、データのオリジナルおよびバックアップコピーが同じ物理サーバー、ラックまたはデータセンターに保存されていないことを確認でき、高可用性が提供されます。これは、すべてのデータがすべてのサーバー、ラックおよびデータセンターでバックアップされるレプリケートキャッシュなどの場合のオプション設定になります。さらに詳しくは、34章サーバーヒンティングを用いた高可用性を参照してください。
パート I. JVM メモリー管理のセットアップ リンクのコピーリンクがクリップボードにコピーされました!
第2章 エビクションのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
2.1. エビクションについて リンクのコピーリンクがクリップボードにコピーされました!
関連トピック:
2.2. エビクションストラテジー リンクのコピーリンクがクリップボードにコピーされました!
| ストラテジー名 | 操作 | 説明 |
|---|---|---|
EvictionStrategy.NONE | エビクションは一切発生しません。 | これは、Red Hat JBoss Data Grid でのデフォルトのエビクションストラテジーです。 |
EvictionStrategy.LRU | LRU (Least Recently Used) 方式のエビクションストラテジーです。このストラテジーは、最も長い期間にわたって使用されてこなかったエントリーをエビクトします。これにより、定期的に再利用されるエントリーが確実にメモリーに残ります。 | |
EvictionStrategy.UNORDERED | 順序付けのないエビクションストラテジーです。このストラテジーは、順序付けのあるアルゴリズムを使用せずにエントリーをエビクトするため、後で必要になるエントリーをエビクトする可能性があります。しかし、このストラテジーでは、エビクションの前にアルゴリズムに関連する計算が不要であるため、リソースを節約します。 | テストを目的とする場合はこのストラテジーが推奨されますが、実際の作業の実装にあたっては推奨されません。 |
EvictionStrategy.LIRS | LIRS (Low Inter-Reference Recency Set) 方式のエビクションストラテジーです。 | LIRS は、さまざまな本番稼働ユースケースに適しているエビクションアルゴリズムです。 |
2.2.1. LRU エビクションアルゴリズムの制限 リンクのコピーリンクがクリップボードにコピーされました!
- 1 回限りの使用のためにアクセスされるエントリーが時間内に置き換えられない。
- 最初にアクセスされるエントリーが不必要に置き換えられる。
2.3. エビクションの使用 リンクのコピーリンクがクリップボードにコピーされました!
eviction /> 要素を使用して、ストラテジーや最大エントリー数の設定なしにエビクションを有効にすると、次のデフォルト値が使用されます。
- ストラテジー: 指定されたエビクションストラテジーがない場合、
EvictionStrategy.NONEがデフォルトとみなされます。 - サイズ: 指定された値がない場合、
sizeの値は無制限のエントリーを許可する-1に設定されます。
2.3.1. エビクションの初期化 リンクのコピーリンクがクリップボードにコピーされました!
size 属性の値をゼロよりも大きい数に設定します。size に設定された値を調整して、使用する設定に最適な値を探します。size に設定する値が大きすぎると、Red Hat JBoss Data Grid のメモリーが不足することに注意してください。
手順2.1 エビクションの初期化
エビクションタグの追加
<eviction> タグを次のようにプロジェクトの <cache> タグに追加します。<eviction />
<eviction />Copy to Clipboard Copied! Toggle word wrap Toggle overflow エビクションストラテジーの設定
使用するエビクションストラテジーを設定するためにstrategyの値を設定します。使用可能な値は、LRU、UNORDEREDおよびLIRS(またはエビクションが不要な場合はNONE) です。以下は、この手順の例になります。<eviction strategy="LRU" />
<eviction strategy="LRU" />Copy to Clipboard Copied! Toggle word wrap Toggle overflow エビクションに使用する最大サイズの設定
size要素を定義してメモリー内で許可されるエントリーの最大数を設定します。無制限のエントリーを許可するためのデフォルト値は-1です。以下はこの手順について説明しています。<eviction strategy="LRU" size="200" />
<eviction strategy="LRU" size="200" />Copy to Clipboard Copied! Toggle word wrap Toggle overflow
エビクションがターゲットキャッシュ用に設定されます。
2.3.2. エビクションの設定例 リンクのコピーリンクがクリップボードにコピーされました!
<eviction strategy="LRU" size="2000"/>
<eviction strategy="LRU" size="2000"/>
2.3.3. メモリーベースのエビクションの利用 リンクのコピーリンクがクリップボードにコピーされました!
メモリーベースのエビクションでは、プリミティブ、プリミティブラッパー (java.lang.Integer など)、java.lang.String インスタンス、またはこれらの値のアレイとして保存されるキーおよび値のみを使用できます。
store-as-binary をキャッシュで有効にする必要があります。またはカスタムクラスのデータをシリアライズし、これをバイトアレイに格納することができます。
メモリーベースのエビクションは、LRU エビクションストラテジーでのみサポートされます。
このエビクションメソッドは、以下の例にあるように MEMORY をエビクションタイプとして定義することによって使用できます。
<local-cache name="local">
<eviction size="10000000000" strategy="LRU" type="MEMORY"/>
</local-cache>
<local-cache name="local">
<eviction size="10000000000" strategy="LRU" type="MEMORY"/>
</local-cache>
2.3.4. エビクションとパッシベーション リンクのコピーリンクがクリップボードにコピーされました!
第3章 エクスパレーションのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
3.1. エクスパレーションについて リンクのコピーリンクがクリップボードにコピーされました!
- ライフスパンの値。
- 最大アイドル時間の値。
lifespan または max-idle 値を明示的に指定しないすべてのエントリーに適用されます。
lifespan または max-idle が定義されたすべてのエントリーについては、いずれかの条件を満たす場合にキャッシュから最終的に削除されるため、これらには期限が設定されます。
- エクスパレーションは、エントリーがメモリーに存在していた期間に基づいてエントリーを削除します。エクスパレーションは、ライフスパンの期間が終了するか、またはエントリーが指定したアイドル時間よりも長くアイドル状態になっていた場合のみ、エントリーを削除します。
- エビクションは、エントリーがどの程度最近 (および頻繁) に使用されるかに基づいてエントリーを削除します。エビクションは、メモリーに存在するエントリーが多すぎる場合にエントリーを削除します。キャッシュストアが設定されている場合、エビクトされたエントリーがキャッシュストアで永続化します。
3.2. エクスパレーションの操作 リンクのコピーリンクがクリップボードにコピーされました!
lifespan) または最大アイドル時間 (max-idle) は、エントリーのキャッシュ全体のデフォルトよりも優先されます。
3.3. エビクションとエクスパレーションの比較 リンクのコピーリンクがクリップボードにコピーされました!
lifespan) とアイドル時間 (max-idle) の値は、各キャッシュエントリーと共にレプリケートされます。
3.4. キャッシュエントリーのエクスパレーション動作 リンクのコピーリンクがクリップボードにコピーされました!
- エントリーがディスクへパッシベートまたはオーバフローされ、期限切れであることが判明した場合。
- エクスパレーションメンテナンススレッドが見つけたエントリーが期限切れであることが判明した場合。
3.5. エクスパレーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
手順3.1 エクスパレーションの設定
エクスパレーションタグの追加
<expiration> タグを次のようにプロジェクトの <cache> タグに追加します。<expiration />
<expiration />Copy to Clipboard Copied! Toggle word wrap Toggle overflow エクスパレーションのライフスパンの設定
エントリーがメモリーに留まる時間 (ミリ秒単位) を設定するためにlifespanの値を設定します。以下はこの手順の例になります。<expiration lifespan="1000" />
<expiration lifespan="1000" />Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最大アイドル時間の設定
エントリーが削除された後にアイドル (未使用) の状態のままにすることのできる時間 (ミリ秒単位) を設定します。無制限にするためのデフォルト値は-1です。<expiration lifespan="1000" max-idle="1000" />
<expiration lifespan="1000" max-idle="1000" />Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.6. エクスパレーションのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
put() のような複数キャッシュの操作では、ライフスパン値がパラメーターとして渡されます。この値は間隔を定義し、この間隔の後にエントリーが期限切れになります。エビクションが設定されていない状態でライフスパンが期限切れになると、Red Hat JBoss Data Grid がエントリーを削除しなかったように表示されます。たとえば、number of entries などの JMX の統計が表示される場合、無効の数字が表示されたり、JBoss Data Grid に関連する永続ストアにこのエントリーが依然として含まれていることがあります。この場合、JBoss Data Grid は背後でこのエントリーを期限切れエントリーとしてマーク付けしても、削除していません。このようなエントリーの削除は、以下の場合に行われます。
- エントリーがディスクへパッシベートまたはオーバフローされ、期限切れであることが判明した場合。
- エクスパレーションメンテナンススレッドにより検出されたエントリーが期限切れであることが判明した場合。
get() または containsKey() の使用を試みると、JBoss Data Grid が null 値を返します。期限切れのエントリーはエクスパレーションスレッドによって後に削除されます。
パート II. キャッシュのモニタリング リンクのコピーリンクがクリップボードにコピーされました!
第4章 ロギングのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
4.1. ロギング リンクのコピーリンクがクリップボードにコピーされました!
4.2. サポート対象のアプリケーションロギングフレームワーク リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat JBoss Data Grid 7 に含まれる JBoss ロギング。
4.2.1. JBoss ロギングについて リンクのコピーリンクがクリップボードにコピーされました!
4.2.2. JBoss ロギングの機能 リンクのコピーリンクがクリップボードにコピーされました!
- 革新的で使いやすい型指定されたロガーを提供します。
- 国際化およびローカリゼーションを完全にサポートします。翻訳者は properties ファイルのメッセージバンドルを、開発者はインターフェースやアノテーションを使って作業を行います。
- 実稼働用の型指定されたロガーを生成し、開発用の型指定されたロガーをランタイムに生成する build-time ツールを提供します。
4.3. ブートロギング リンクのコピーリンクがクリップボードにコピーされました!
4.3.1. ブートロギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
logging.properties ファイルを編集します。このファイルは標準的な Java プロパティーファイルであるため、テキストエディターで編集することができます。このファイルの各行の形式は property=value になります。
logging.properties ファイルは $JDG_HOME/standalone/configuration フォルダーにあります。
4.3.2. デフォルトのログファイルの場所 リンクのコピーリンクがクリップボードにコピーされました!
| ログファイル | 場所 | 説明 |
|---|---|---|
boot.log | $JDG_HOME/standalone/log/ |
サーバーブートログ。サーバーの起動に関連するログメッセージが含まれます。
デフォルトでは、このファイルは
server.log の前に追加されます。このファイルは、logging.properties に org.jboss.boot.log プロパティーを定義することで、server.log とは切り離して作成できます。
|
server.log | $JDG_HOME/standalone/log/ | サーバーログ。サーバー起動後のすべてのログメッセージが含まれます。 |
4.4. ロギング属性 リンクのコピーリンクがクリップボードにコピーされました!
4.4.1. ログレベルについて リンクのコピーリンクがクリップボードにコピーされました!
TRACEDEBUGINFOWARNERRORFATAL
WARN レベルのログハンドラーは、WARN、ERROR、および FATAL レベルのメッセージのみを記録します。
4.4.2. サポート対象のログレベル リンクのコピーリンクがクリップボードにコピーされました!
| ログレベル | 値 | 説明 |
|---|---|---|
| FINEST | 300 | - |
| FINER | 400 | - |
| TRACE | 400 | アプリケーションの実行状態について詳細な情報を提供するメッセージに使用されます。TRACE レベルが有効な状態でサーバーが実行されている時に TRACE レベルのログメッセージがキャプチャーされます。 |
| DEBUG | 500 | 個々の要求の進捗やアプリケーションのアクティビティーを示すメッセージに使用されます。DEBUG レベルが有効な状態でサーバーが実行されている時に DEBUG レベルのログメッセージがキャプチャーされます。 |
| FINE | 500 | - |
| CONFIG | 700 | - |
| INFO | 800 | アプリケーションの全体的な進捗を示すメッセージに使用されます。アプリケーションの起動やシャットダウン、その他の主なライフサイクルイベントに対して使用されます。 |
| WARN | 900 | エラーではないが、理想的とは見なされない状況を示すために使用されます。将来的にエラーをもたらす可能性のある状況を示します。 |
| WARNING | 900 | - |
| ERROR | 1000 | 発生したエラーの中で、現在のアクティビティーや要求の完了を妨げる可能性があるが、アプリケーション実行の妨げにはならないエラーを示すために使用されます。 |
| SEVERE | 1000 | - |
| FATAL | 1100 | 重大なサービス障害を引き起こしたり、アプリケーションをシャットダウンしたり、場合によっては JBoss Data Grid をシャットダウンしたりする可能性があるイベントを示すために使用されます。 |
4.4.3. ログカテゴリーについて リンクのコピーリンクがクリップボードにコピーされました!
WARNING ログレベルでは、900、1000、および 1100 のログの値がキャプチャーされます。
4.4.4. ルートロガーについて リンクのコピーリンクがクリップボードにコピーされました!
server.log ファイルに書き込むように設定されています。このファイルはサーバーログと呼ばれる場合もあります。
4.4.5. ログハンドラーについて リンクのコピーリンクがクリップボードにコピーされました!
ConsoleFilePeriodicSizeAsyncCustom
4.4.6. ログハンドラーのタイプ リンクのコピーリンクがクリップボードにコピーされました!
| ログハンドラーのタイプ | 説明 | ユースケース |
|---|---|---|
| コンソール (Console) | コンソールログハンドラーは、ログメッセージをホストオペレーティングシステムの標準出力 (stdout) または標準エラー (stderr) ストリームに書き込みます。これらのメッセージは、JBoss Data Grid がコマンドラインプロンプトから実行される場合に表示されます。 | コンソールログハンドラーは、JBoss Data Grid がコマンドラインを使って管理されている場合に推奨されます。この場合、コンソールログハンドラーからのメッセージは、オペレーティングシステムが標準出力や標準エラーストリームをキャプチャーするように設定されていない限り、保存されません。 |
| ファイル (File) | ファイルログハンドラーは最も単純なログハンドラーです。主に、ログメッセージを指定のファイルへ書き込むために使用されます。 | ファイルログハンドラーは、時間に基づいてすべてのログエントリーを 1 つの場所に保存することが要件である場合に最も役に立ちます。 |
| 定期 (Periodic) | 定期ファイルハンドラーは、指定した時間が経過するまで、ログメッセージを指定ファイルに書き込みます。その時間が経過した後は、指定のタイムスタンプがファイル名に追加されます。その後、ハンドラーは元の名前で新たに作成されたログファイルへの書き込みを継続します。 | 定期ファイルハンドラーは、環境の要件に応じて、週ごと、日ごと、時間ごと、またはその他の単位ごとにログメッセージを蓄積するために使用することができます。 |
| サイズ (Size) | サイズログハンドラーは、指定のファイルが指定サイズに到達するまで、そのファイルにログメッセージを書き込みます。ファイルが指定のサイズに到達すると、名前に数値のプレフィックスを追加して名前が変更され、ハンドラーは元の名前で新規に作成されたログファイルへの書き込みを継続します。各サイズログハンドラーは、このような方式で保管されるファイルの最大数を指定する必要があります。 | サイズハンドラーは、ログファイルのサイズが一致している必要のある環境に最も適しています。 |
| 非同期 (Async) | 非同期ログハンドラーは、単一または複数の他のログハンドラーを対象とする非同期動作を提供するラッパーログハンドラーです。非同期ログハンドラーは、待ち時間が長かったり、ネットワークファイルシステムへのログファイルの書き込みなどの他のパフォーマンス上の問題があるログハンドラーに対して有用です。 | 非同期ログハンドラーは、待ち時間が長いことが問題になる環境や、ネットワークファイルシステムへログファイルを書き込む際に最も適しています。 |
| カスタム (Custom) | カスタムログハンドラーにより、実装されている新たなタイプのログハンドラーを設定することが可能になります。カスタムハンドラーは、java.util.logging.Handler を拡張する Java クラスとして実装し、モジュール内に格納する必要があります。 | カスタムログハンドラーは、ログハンドラーのカスタマイズしたタイプを作成するもので、高度なユーザー用として推奨されます。 |
4.4.7. ログハンドラーの選択 リンクのコピーリンクがクリップボードにコピーされました!
コンソール (Console)ログハンドラーは、JBoss Data Grid がコマンドラインを使って管理される場合に推奨されます。このような場合、エラーやログメッセージはコンソールウィンドウに表示され、保存されるように別途設定されない限り保存されません。ファイル (File)ログハンドラーは、ログエントリーを指定のファイルに送信するために使用されます。この単純なログハンドラーは、時間に基づいてすべてのログエントリーを 1 つの場所に保存することが要件である場合に役に立ちます。定期 (Periodic)ログハンドラーは、ファイル (File)ハンドラーと似ていますが、指定された期間に応じてファイルを作成します。例として、このハンドラーは環境の要件に応じて、週ごと、日ごと、時間ごと、またはその他の単位ごとにログメッセージを蓄積するために使用することができます。サイズ (Size)ログハンドラーも、指定されたファイルにログメッセージを書き込みますが、ログファイルのサイズが指定の制限内にある場合にのみ、これが実行されます。ファイルサイズが指定したサイズまで達すると、ログファイルは新規のログファイルに書き込まれます。このハンドラーは、ログファイルのサイズに一貫性が必要な環境に最も適しています。非同期 (Async)ログハンドラーは、他のログハンドラーが非同期に動作するように強制するラッパーです。このログハンドラーは、待ち時間が長いことが問題となる環境や、ネットワークファイルシステムへの書き込み時に最も適しています。カスタム (Custom)ログハンドラーは、新規のカスタマイズされたタイプのログハンドラーを作成します。これは高度なログハンドラーです。
4.4.8. ログフォーマッターについて リンクのコピーリンクがクリップボードにコピーされました!
java.util.Formatter クラスと同じ構文を使用する文字列です。
4.5. ロギングの設定例 リンクのコピーリンクがクリップボードにコピーされました!
4.5.1. ロギングの設定例の場所 リンクのコピーリンクがクリップボードにコピーされました!
standalone.xml または clustered.xml のいずれか、または管理ドメインインスタンスの場合は domain.xml であるサーバーの設定ファイル内にあります。
4.5.2. ルートロガーの XML 設定例 リンクのコピーリンクがクリップボードにコピーされました!
手順4.1 ルートロガーの設定
levelプロパティーを設定します。levelプロパティーは、ルートロガーが記録するログメッセージの最大レベルを設定します。<subsystem xmlns="urn:jboss:domain:logging:3.0"> <root-logger> <level name="INFO"/><subsystem xmlns="urn:jboss:domain:logging:3.0"> <root-logger> <level name="INFO"/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow handlersを一覧表示します。handlersは、ルートロガーによって使用されるログハンドラーの一覧です。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.5.3. ログカテゴリーの XML 設定例 リンクのコピーリンクがクリップボードにコピーされました!
手順4.2 ログカテゴリーの設定
- ログメッセージがキャプチャーされるログカテゴリーを指定するために、
categoryプロパティーを使用します。use-parent-handlersはデフォルトで"true"に設定されています。"true"に設定した場合、このカテゴリーは、割り当てられた他のハンドラーだけでなく、ルートロガーのログハンドラーを使用します。 - ログカテゴリーが記録するログメッセージの最大レベルを設定するために、
levelプロパティーを使用します。 handlers要素には、ログハンドラーのリストが含まれます。
4.5.4. コンソールログハンドラーの XML 設定例 リンクのコピーリンクがクリップボードにコピーされました!
手順4.3 コンソールログハンドラーの設定
ログハンドラーの ID 情報を追加します。
nameプロパティーは、このログハンドラーの一意の ID を設定します。autoflushを"true"に設定すると、ログメッセージは要求直後にハンドラーのターゲットに送信されます。levelプロパティーを設定します。levelプロパティーは、記録されるログメッセージの最大レベルを設定します。encoding出力を設定します出力に使用する文字エンコーディングスキームを設定するには、encodingを使用します。target値を定義します。targetプロパティーは、ログハンドラーの出力先となるシステム出力ストリームを定義します。これはシステムエラーストリームの場合はSystem.err、標準出力ストリームの場合はSystem.outとすることができます。filter-specプロパティーを定義します。filter-specプロパティーはフィルターを定義する式の値です。以下の例では、not(match("JBAS.*"))はパターンに一致しないフィルターを定義します。formatterを指定します。このログハンドラーで使用するログフォーマッターの一覧を表示するには、formatterを使用します。
4.5.5. ファイルログハンドラーの XML 設定例 リンクのコピーリンクがクリップボードにコピーされました!
手順4.4 ファイルログハンドラーの設定
ファイルログハンドラーの ID 情報を追加します。
nameプロパティーは、このログハンドラーの一意の ID を設定します。autoflushを"true"に設定すると、ログメッセージは要求直後にハンドラーのターゲットに送信されます。levelプロパティーを設定します。levelプロパティーは、ルートロガーが記録するログメッセージの最大レベルを設定します。encoding出力を設定します。出力に使用する文字エンコーディングスキームを設定するには、encodingを使用します。fileオブジェクトを設定します。fileオブジェクトは、このログハンドラーの出力が書き込まれるファイルを表します。relative-toとpathの 2 つの設定プロパティーが含まれます。relative-toプロパティーは、ログファイルが書き込まれるディレクトリーです。JBoss Enterprise Application Platform 6 のファイルパス変数をここで指定できます。jboss.server.log.dir変数はサーバーのlog/ディレクトリーを指します。pathプロパティーは、ログメッセージが書き込まれるファイルの名前です。これは、完全パスを決定するためにrelative-toプロパティーの値に追加される相対パス名です。formatterを指定します。このログハンドラーで使用するログフォーマッターの一覧を表示するには、formatterを使用します。appendプロパティーを設定します。appendプロパティーを"true"に設定した場合、このハンドラーが追加したすべてのメッセージが既存のファイルに追加されます。"false"に設定した場合、アプリケーションサーバーが起動するたびに新規ファイルが作成されます。appendへの変更を反映させるには、サーバーの再起動が必要です。
4.5.6. 定期ログハンドラーの XML 設定例 リンクのコピーリンクがクリップボードにコピーされました!
手順4.5 定期ログハンドラーの設定
定期ログハンドラーの ID 情報を追加します。
nameプロパティーは、このログハンドラーの一意の ID を設定します。autoflushを"true"に設定すると、ログメッセージは要求直後にハンドラーのターゲットに送信されます。levelプロパティーを設定します。levelプロパティーは、ルートロガーが記録するログメッセージの最大レベルを設定します。encoding出力を設定します。出力に使用する文字エンコーディングスキームを設定するには、encodingを使用します。formatterを指定します。このログハンドラーで使用するログフォーマッターの一覧を表示するには、formatterを使用します。fileオブジェクトを設定します。fileオブジェクトは、このログハンドラーの出力が書き込まれるファイルを表します。relative-toとpathの 2 つの設定プロパティーが含まれます。relative-toプロパティーは、ログファイルが書き込まれるディレクトリーです。JBoss Enterprise Application Platform 6 のファイルパス変数をここで指定できます。jboss.server.log.dir変数はサーバーのlog/ディレクトリーを指します。pathプロパティーは、ログメッセージが書き込まれるファイルの名前です。これは、完全パスを決定するためにrelative-toプロパティーの値に追加される相対パス名です。suffix値を設定します。suffixは、ローテーションされたログのファイル名に追加され、ローテーションの周期を決定するために使用されます。suffixの形式では、ドット (.) の後にjava.text.SimpleDateFormatクラスで解析できる日付文字列が指定されます。ログはsuffixで定義された最小時間単位に基づいてローテーションされます。たとえば、yyyy-MM-ddの場合は、ログが毎日ローテーションされます。http://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html を参照してください。appendプロパティーを設定します。appendプロパティーを"true"に設定した場合、このハンドラーが追加したすべてのメッセージが既存のファイルに追加されます。"false"に設定した場合、アプリケーションサーバーが起動するたびに新規ファイルが作成されます。appendへの変更を反映させるには、サーバーの再起動が必要です。
4.5.7. サイズログハンドラーの XML 設定例 リンクのコピーリンクがクリップボードにコピーされました!
手順4.6 サイズログハンドラーの設定
サイズログハンドラーの ID 情報を追加します。
nameプロパティーは、このログハンドラーの一意の ID を設定します。autoflushを"true"に設定すると、ログメッセージは要求直後にハンドラーのターゲットに送信されます。levelプロパティーを設定します。levelプロパティーは、ルートロガーが記録するログメッセージの最大レベルを設定します。encoding出力を設定します。出力に使用する文字エンコーディングスキームを設定するには、encodingを使用します。fileオブジェクトを設定します。fileオブジェクトは、このログハンドラーの出力が書き込まれるファイルを表します。relative-toとpathの 2 つの設定プロパティーが含まれます。relative-toプロパティーは、ログファイルが書き込まれるディレクトリーです。JBoss Enterprise Application Platform 6 のファイルパス変数をここで指定できます。jboss.server.log.dir変数はサーバーのlog/ディレクトリーを指します。pathプロパティーは、ログメッセージが書き込まれるファイルの名前です。これは、完全パスを決定するためにrelative-toプロパティーの値に追加される相対パス名です。rotate-size値を指定します。ログファイルがローテーションされる前に到達できる最大サイズです。数字に追加された単一の文字はサイズ単位を示します。バイトの場合はb、キロバイトの場合はk、メガバイトの場合はm、ギガバイトの場合はgになります。たとえば、50 メガバイトの場合は、50mになります。max-backup-index数を設定します。保持されるローテーションログの最大数です。この数字に達すると、最も古いログが再利用されます。formatterを指定します。このログハンドラーで使用するログフォーマッターの一覧を表示するには、formatterを使用します。appendプロパティーを設定します。appendプロパティーを"true"に設定した場合、このハンドラーが追加したすべてのメッセージが既存のファイルに追加されます。"false"に設定した場合、アプリケーションサーバーが起動するたびに新規ファイルが作成されます。appendへの変更を反映させるには、サーバーの再起動が必要です。
4.5.8. 非同期ログハンドラーの XML 設定例 リンクのコピーリンクがクリップボードにコピーされました!
手順4.7 非同期ログハンドラーの設定
nameプロパティーは、このログハンドラーの一意の ID を設定します。levelプロパティーは、ルートロガーが記録するログメッセージの最大レベルを設定します。queue-lengthは、サブハンドラーの応答を待機する間に、このハンドラーが保持するログメッセージの最大数を定義します。overflow-actionは、キューの長さを超えたときにこのハンドラーがどのように応答するかを定義します。これはBLOCKまたはDISCARDに設定できます。BLOCKの場合、キューでスペースが利用可能になるまでロギングアプリケーションが待機します。これは、非同期ではないログハンドラーと同じ動作です。DISCARDの場合、ロギングアプリケーションは動作を続けますが、ログメッセージは削除されます。subhandlersリストは、この非同期ハンドラーがログメッセージを渡すログハンドラーの一覧です。
パート III. キャッシュモードのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
第5章 キャッシュモード リンクのコピーリンクがクリップボードにコピーされました!
- ローカルモードは、JBoss Data Grid で提供される唯一のクラスターキャッシュモードではないモードです。ローカルモードの JBoss Data Grid は、簡単な単一ノードのインメモリーデータキャッシュとして動作します。ローカルモードは、スケーラビリティーおよびフェイルオーバーが不要な場合に最も効果的であり、クラスターモードに比べてパフォーマンスが高くなります。
- クラスターモードは、状態の変更をノードのサブセットにレプリケートするクラスターモードを提供します。サブセットのサイズは、フォールトトラレンスを実現するには十分なサイズですが、スケーラビリティーを妨げるほど大きくはありません。クラスターモードを使用する前に、クラスター化された設定に対して JGroups を設定することが重要です。JGroups の設定方法についてさらに詳しくは、「JGroups の設定 (ライブラリーモード) 」 を参照してください。
5.1. キャッシュコンテナーについて リンクのコピーリンクがクリップボードにコピーされました!
cache-container 要素は 1 つ以上の (ローカルまたはクラスター) キャッシュの親として動作します。クラスターキャッシュをコンテナーに追加するには、トランスポートを定義する必要があります。
手順5.1 キャッシュコンテナーの設定方法
キャッシュコンテナーの設定
cache-container要素は、次のパラメーターを使用してキャッシュコンテナーに関する情報を指定します。nameパラメーターはキャッシュコンテナーの名前を定義します。default-cacheパラメーターは、キャッシュコンテナーと共に使用されるデフォルトキャッシュの名前を定義します。statistics属性は任意であり、デフォルトはtrueです。統計は、JMX または JBoss Operations Network 経由で JBoss Data Grid を監視する際に役立ちますが、パフォーマンスにはマイナスの影響を与えます。統計が不要な場合は、これをfalseに設定してこの属性を無効にします。startパラメーターはいつキャッシュコンテナーが起動するかを示します (要求時にレイジーに起動するか、またはサーバー起動時に「すぐに (eargerly)」起動するかなど)。このパラメーターの有効な値はEAGERとLAZYです。
キャッシュごとの統計の設定
statisticsがコンテナーレベルで有効にされている場合、statistics属性をfalseに設定することにより、キャッシュごとの統計は、監視を必要としないキャッシュについては選択的に無効にすることができます。
5.2. ローカルモード リンクのコピーリンクがクリップボードにコピーされました!
- データを永続化するライトスルーおよびライトビハインドキャッシュ。
- Java 仮想マシン (JVM) がメモリー不足にならないようにするためのエントリーエビクション。
- 定義された期間後に期限切れになるエントリーのサポート。
ConcurrentMap を拡張するため、マップから JBoss Data Grid への移行プロセスが簡単になります。
5.2.1. ローカルモードの設定 リンクのコピーリンクがクリップボードにコピーされました!
local-cache 要素を追加する方法について説明しています。
手順5.2 local-cache 要素
local-cache 要素は次のパラメーターを使用して、キャッシュコンテナーと共に使用されるローカルキャッシュに関する情報を指定します。
nameパラメーターは使用するローカルキャッシュの名前を指定します。startパラメーターはいつキャッシュコンテナーが起動するかを示します (要求時にレイジーに起動するか、またはサーバー起動時に「すぐに (eargerly)」起動するかなど)。このパラメーターの有効な値はEAGERとLAZYです。batchingパラメーターは、ローカルキャッシュに対してバッチ処理が有効であるかを指定します。statisticsがコンテナーレベルで有効にされている場合、statistics属性をfalseに設定することにより、キャッシュごとの統計は、監視を必要としないキャッシュについては選択的に無効にすることができます。
DefaultCacheManager を作成することもできます。どちらの方法でも、ローカルのデフォルトキャッシュが作成されます。
<transport/> がない場合はローカルキャッシュのみ格納できます。例で使用されたコンテナーには <transport/> がないため、ローカルキャッシュのみを格納できます。
ConcurrentMap を拡張し、複数のキャッシュシステムと互換性があります。
5.3. クラスターモード リンクのコピーリンクがクリップボードにコピーされました!
- レプリケーションモードは、クラスター内のすべてのキャッシュインスタンス間で追加されたエントリーをレプリケートします。
- インバリデーションモードはデータを共有しませんが、無効なエントリーの削除を開始するようリモートキャッシュに伝えます。
- ディストリビューションモードは、クラスターの全ノード上ではなく、ノードのサブセット上の各エントリーを保管します。
5.3.1. 非同期および同期の操作 リンクのコピーリンクがクリップボードにコピーされました!
5.3.2. 非同期通信について リンクのコピーリンクがクリップボードにコピーされました!
local-cache によって表され、ディストリビューションモードは distributed-cache、レプリケーションモードは replicated-cache によって表されます。これらの各要素には、mode プロパティーが含まれ、同期通信の場合は SYNC、非同期通信の場合は SYNC に値を設定することができます。
例5.1 非同期通信の設定例
注記
5.3.3. キャッシュモードのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
5.3.3.1. ReadExternal の無効なデータ リンクのコピーリンクがクリップボードにコピーされました!
Cache.putAsync() を使用する場合、シリアライズを開始するとオブジェクトが変更される可能性があります。それによってデータストリームが破損されると、無効なデータが readExternal に渡されます。このような場合、オブジェクトへのアクセスを同期化すると、この問題を解決することができます。
5.3.3.2. クラスター物理アドレスの読み出し リンクのコピーリンクがクリップボードにコピーされました!
インスタンスメソッド呼び出しを使用して物理アドレスを読み出すことができます。たとえば、AdvancedCache.getRpcManager().getTransport().getPhysicalAddresses() のように読み出します。
第6章 ディストリビューションモードのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
6.1. ディストリビューションモードについて リンクのコピーリンクがクリップボードにコピーされました!
6.2. ディストリビューションモードの一貫したハッシュアルゴリズム リンクのコピーリンクがクリップボードにコピーされました!
numSegments を使用して設定され、クラスターを再起動しても変更できません。キーとセグメントのマッピングも固定されます。クラスターのトポロジーがどのように変わるかに関係なく、キーは同じセグメントに対してマップされます。
6.3. ディストリビューションモードにおけるエントリーの検索 リンクのコピーリンクがクリップボードにコピーされました!
PUT 操作が実行されると、リモート呼び出しが owners に指定された回数実行されます。クラスターのいずれかのノードで GET 操作が実行されると、リモート呼び出しが 1 回実行されます。バックグラウンドでは、GET 操作が実行されると PUT 操作と同じ回数 (owners パラメーターの値) のリモート呼び出しが行われますが、これらの呼び出しは同時に実行され、返されたエントリーは即座に呼び出し側に渡されます。
6.4. ディストリビューションモードの戻り値 リンクのコピーリンクがクリップボードにコピーされました!
6.5. ディストリビューションモードの設定 リンクのコピーリンクがクリップボードにコピーされました!
手順6.1 distributed-cache 要素
distributed-cache 要素は、以下のパラメーターを使用して分散キャッシュの設定を行います。
nameパラメーターは、キャッシュの一意の ID を提供します。modeパラメーターは、クラスター化されたキャッシュモードを設定します。有効な値はSYNC(同期) とASYNC(非同期) です。- (オプションの)
segmentsパラメーターは、クラスターごとのハッシュ領域セグメントの数を指定します。このパラメーターの推奨される値は、クラスターサイズに 10 を乗算した値であり、デフォルト値は20です。 startパラメーターは、サーバーの起動時か、サーバーが要求またはデプロイされるときにキャッシュを起動させるかどうかを指定します。ownersパラメーターは、ハッシュセグメントを含むノード数を示します。statisticsがコンテナーレベルで有効にされている場合、statistics属性をfalseに設定することにより、キャッシュごとの統計は、監視を必要としないキャッシュについては選択的に無効にすることができます。
重要
6.6. 同期および非同期の分散 リンクのコピーリンクがクリップボードにコピーされました!
例6.1 通信モードの例
A、B、C という 3 つのノードがクラスターにあり、ノード A と B をマップする K というキーがあるとします。また、戻り値の必要なクラスター C 上で、Cache.remove(K) のような操作を実行するとします。この場合、正常に実行するには、操作が最初にノード A と B の両方に呼び出しを同期転送し、ノード A または B より返される結果を待つ必要があります。非同期通信が使用された場合、操作が予期される通りに動作しても戻り値が有効であるかどうかは保証されません。
第7章 レプリケーションモードのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
7.1. レプリケーションモードについて リンクのコピーリンクがクリップボードにコピーされました!
7.2. 最適化されたレプリケーションモードの使用 リンクのコピーリンクがクリップボードにコピーされました!
7.3. レプリケーションモードの設定 リンクのコピーリンクがクリップボードにコピーされました!
手順7.1 replicated-cache 要素
重要
replicated-cache 要素は、以下のパラメーターを使用して分散キャッシュの設定を行います。
nameパラメーターは、キャッシュの一意の ID を提供します。modeパラメーターは、クラスター化されたキャッシュモードを設定します。有効な値はSYNC(同期) とASYNC(非同期) です。startパラメーターは、サーバーの起動時か、サーバーが要求またはデプロイされるときにキャッシュを起動させるかどうかを指定します。statisticsがコンテナーレベルで有効にされている場合、statistics属性をfalseに設定することにより、キャッシュごとの統計は、監視を必要としないキャッシュについては選択的に無効にすることができます。
cache-container および locking の詳細については、該当する章を参照してください。
7.4. 同期および非同期のレプリケーション リンクのコピーリンクがクリップボードにコピーされました!
- 同期レプリケーションは、クラスターの全ノードで変更がレプリケートされるまでスレッドや呼び出し側 (
put()操作の場合など) をブロックします。確認応答を待つために、同期レプリケーションでは操作が終了する前にすべてのレプリケーションが正常に適用されます。 - 非同期レプリケーションはノードからの応答を待つ必要がないため、同期レプリケーションよりもかなり高速になります。非同期レプリケーションはバックグラウンドでレプリケーションを実行し、呼び出しは即座に返されます。非同期レプリケーション中に発生したエラーはログに書き込まれます。そのため、クラスターのすべてのキャッシュインスタンスでトランザクションが正常にレプリケートされなくても、トランザクションは正常に終了することが可能です。
7.4.1. 非同期レプリケーションの動作に対するトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
- 状態転送を無効にし、
ClusteredCacheLoaderを使用して必要な時にリモート状態をレイジーにルックアップします。 - 状態転送と
REPL_SYNCを有効にします。非同期 API (cache.putAsync(k, v)など) を使用して「fire-and-forget」機能をアクティベートします。 - 状態転送と
REPL_ASYNCを有効にします。PRC はすべて同期的になりますが、レプリケーションキューを有効にすると (非同期モードで推奨) クライアントスレッドは中断されません。
7.5. レプリケーションキュー リンクのコピーリンクがクリップボードにコピーされました!
- 以前に設定された間隔。
- 要素数を超えるキューサイズ。
- 以前に設定された間隔と要素数を超えるキューサイズの組み合わせ。
7.5.1. レプリケーションキューの使用 リンクのコピーリンクがクリップボードにコピーされました!
- 非同期マーシャリングを無効にします。
max-threads数の値を、transport要素のexecutor属性に対して1に設定します。executorはライブラリーモードでのみ使用できるため、以下のように設定ファイルに定義されます。<transport executor="infinispan-transport"/>
<transport executor="infinispan-transport"/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
queue-flush-interval、値はミリ秒単位) やキューサイズ (queue-size) と共に次のように設定することができます。
例7.1 非同期モードのレプリケーションキュー
7.6. レプリケーション保証について リンクのコピーリンクがクリップボードにコピーされました!
7.7. 内部ネットワークのレプリケーショントラフィック リンクのコピーリンクがクリップボードにコピーされました!
IP アドレスを介したトラフィックにパブリック IP アドレスを介したトラフィックよりも低い課金を行ったり、内部ネットワークトラフィックにまったく課金しないことがあります (GoGrid など)。低料金で利用できるよう、内部ネットワークを使用してレプリケーションのトラフィックを転送するよう Red Hat JBoss Data Grid を設定することが可能です。このような設定では、割り当てられた内部 IP アドレスを調べるのは簡単ではありませんが、JBoss Data Grid は JGroups インターフェースを使用してこの問題を解決します。
第8章 インバリデーションモードのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
8.1. インバリデーションモードについて リンクのコピーリンクがクリップボードにコピーされました!
8.2. インバリデーションモードの設定 リンクのコピーリンクがクリップボードにコピーされました!
手順8.1 invalidation-cache 要素
invalidation-cache 要素は、以下のパラメーターを使用して分散キャッシュの設定を行います。
nameパラメーターは、キャッシュの一意の ID を提供します。modeパラメーターは、クラスター化されたキャッシュモードを設定します。有効な値はSYNC(同期) とASYNC(非同期) です。startパラメーターは、サーバーの起動時か、サーバーが要求またはデプロイされるときにキャッシュを起動させるかどうかを指定します。statisticsがコンテナーレベルで有効にされている場合、statistics属性をfalseに設定することにより、キャッシュごとの統計は、監視を必要としないキャッシュについては選択的に無効にすることができます。
重要
cache-container、locking、および transaction 要素について詳しくは、該当する章を参照してください。
8.3. 同期的/非同期の無効化 リンクのコピーリンクがクリップボードにコピーされました!
- 同期的な無効化は、クラスターのすべてのキャッシュが無効化メッセージを受信し、古いデータをエビクトするまでスレッドをブロックします。
- 非同期的な無効化は、応答待ちのスレッドをブロックせずに無効化メッセージがブロードキャストされる fire-and-forget モードで機能します。
8.4. 1 次キャッシュと無効化 リンクのコピーリンクがクリップボードにコピーされました!
第9章 状態転送 リンクのコピーリンクがクリップボードにコピーされました!
owners コピーをキャッシュに保持するために一部の状態を削除します (整合性のあるハッシュによって決定されます)。インバリデーションモードでは、最初の状態転送はレプリケーションモードと似ており、唯一の違いはノードの状態が同じであることが保証されないことです。ノードが脱退すると、レプリケーションモードまたはインバリデーションモードでキャッシュが状態転送を実行しません。分散キャッシュは、各キーの owners コピーを保持するために、脱退するノードに格納されたキーの追加コピーを作成する必要があります。
ClusterLoader を設定する必要があります。設定しない場合、ノードは、データがそのキャッシュにロードされることなく、キーの所有者またはバックアップ所有者になります。さらに、状態転送が分散モードで無効にされると、キーの所有者は owners より少なくなることがあります。
9.1. 非ブロッキング状態転送 リンクのコピーリンクがクリップボードにコピーされました!
- 状態転送が実行中であるためクラスター全体が要求に応答できない時間を最小化します。
- 状態転送が実行中であるため既存のメンバーが要求への応答を中止する時間を最小化します。
- 状態転送を実行することを可能にします (クラスターのパフォーマンスが低下します)。ただし、状態転送時にパフォーマンスが低下すると、例外がスローされず、プロセスを続行できます。
- 状態転送の実行中に null 値を返さずに
GET操作が別のノードからキーを正常に取得することを許可します。
- ブロックプロトコルは、状態転送中にトランザクション配信をキューに格納します。
- 状態転送制御メッセージ (CacheTopologyControlCommand など) は、総オーダー情報に基づいて送信されます。
9.2. JMX による状態転送の抑制 リンクのコピーリンクがクリップボードにコピーされました!
getCache() 呼び出しは、再調整が再度有効にされないか、または stateTransfer.awaitInitialTransfer が false に設定されない限り、stateTransfer.timeout が期限切れになった後にタイムアウトになります。
9.3. rebalancingEnabled 属性 リンクのコピーリンクがクリップボードにコピーされました!
rebalancingEnabled JMX 属性によってのみトリガーでき、これには特定の設定は不要です。
rebalancingEnabled 属性は、いずれのノードでも LocalTopologyManager JMX Mbean からクラスター全体に対して変更することができます。この属性はデフォルトではtrue であり、プログラムを使って設定することができます。
<await-initial-transfer="false"/>
<await-initial-transfer="false"/>
パート IV. API の有効化 リンクのコピーリンクがクリップボードにコピーされました!
第10章 API の宣言的な有効化 リンクのコピーリンクがクリップボードにコピーされました!
10.1. バッチ化 API リンクのコピーリンクがクリップボードにコピーされました!
バッチ化は、BATCH のトランザクションモードを定義してキャッシュごとに有効にできます。以下の例はこれを説明しています。
<local-cache> <transaction mode="BATCH"/> </local-cache>
<local-cache>
<transaction mode="BATCH"/>
</local-cache>
10.2. グループ化 API リンクのコピーリンクがクリップボードにコピーされました!
グループ化 API は、以下の例にあるように groups 要素を追加することにより、キャッシュごとに有効にすることができます。
<distributed-cache>
<groups enabled="true"/>
</distributed-cache>
<distributed-cache>
<groups enabled="true"/>
</distributed-cache>
カスタム Grouper が存在することを仮定した場合、以下のようにクラス名を渡すことによって定義できます。
<distributed-cache>
<groups enabled="true">
<grouper class="com.acme.KXGrouper" />
</groups>
</distributed-cache>
<distributed-cache>
<groups enabled="true">
<grouper class="com.acme.KXGrouper" />
</groups>
</distributed-cache>
10.3. Externalizable API リンクのコピーリンクがクリップボードにコピーされました!
Externalizer クラスは、以下を実行するクラスです。
- 該当するオブジェクトタイプをバイトアレイにマーシャリングします。
- バイトアレイの内容のオブジェクトタイプのインスタンスに対するマーシャリングを解除します。
10.3.1. 高度なエクスターナライザーの登録 (宣言的) リンクのコピーリンクがクリップボードにコピーされました!
手順10.1 高度なエクスターナライザーの登録
serialization要素をcache-container要素に追加します。advanced-externalizer要素を追加して、カスタムエクスターナライザーをclass属性で定義します。必要に応じて Book$BookExternalizer 値を置き換えます。
10.3.2. カスタムエクスターナライザー ID 値 リンクのコピーリンクがクリップボードにコピーされました!
| ID 範囲 | 対象 |
|---|---|
| 1000-1099 | Infinispan Tree モジュール |
| 1100-1199 | Red Hat JBoss Data Grid Server モジュール |
| 1200-1299 | Hibernate Infinispan 2 次キャッシュ |
| 1300-1399 | JBoss Data Grid Lucene Directory |
| 1400-1499 | Hibernate OGM |
| 1500-1599 | Hibernate Search |
| 1600-1699 | Infinispan Query モジュール |
| 1700-1799 | Infinispan Remote Query モジュール |
10.3.2.1. エクスターナライザー ID のカスタマイズ (宣言的) リンクのコピーリンクがクリップボードにコピーされました!
手順10.2 エクスターナライザー ID のカスタマイズ (宣言的)
serialization要素をcache-container要素に追加します。advanced-externalizer要素を追加して、新規の高度なエクスターナライザーについての情報を追加します。id属性を使用してエクスターナライザー ID を定義します。選択した ID が他のモジュール用に予約された ID の範囲にないことを確認します。class属性を使用してエクスターナライザークラスを定義します。必要に応じて Book$BookExternalizer 値を置き換えます。
第11章 Infinispan Query API のセットアップおよび設定 リンクのコピーリンクがクリップボードにコピーされました!
11.1. Infinispan Query のセットアップ リンクのコピーリンクがクリップボードにコピーされました!
11.1.1. Infinispan Query の依存関係 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-embedded-query</artifactId>
<version>${infinispan.version}</version>
</dependency>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-embedded-query</artifactId>
<version>${infinispan.version}</version>
</dependency>
infinispan-embedded-query.jar および infinispan-embedded.jar ファイルをインストールする必要があります。
警告
infinispan-embedded-query.jar ファイル内に埋め込むことはできません。他のバージョンの Hibernate Search と Lucene を infinispan-embedded-query として同じデプロイメントに組み込まないようにしてください。これらが含まれると、クラスパスの競合が発生する原因となり、予期せぬ動作が実行されます。
11.2. インデックス化モード リンクのコピーリンクがクリップボードにコピーされました!
11.2.1. インデックスの管理 リンクのコピーリンクがクリップボードにコピーされました!
- 各ノードがグローバルインデックスの個別コピーを維持できる。
- インデックスがすべてのノード間で共有される。
indexLocalOnly を true に設定してインデックスがローカルに保存されると、それらのインデックスを更新できるようにそれぞれのキャッシュへの書き込みは他のすべてのノードに転送される必要があります。indexLocalOnly を false に設定してインデックスが共有される場合、書き込み元のノードのみが共有インデックスを更新する必要があります。
directory provider というディレクトリー構造の抽象化を行います。インデックスは、インメモリーとして、ファイルシステム上、または分散されたキャッシュ内に格納できます。
11.2.2. インデックスの管理 (ローカルモード) リンクのコピーリンクがクリップボードにコピーされました!
indexLocalOnly オプションはローカルモードでは意味がありません。
11.2.3. インデックスの管理 (レプリケートモード) リンクのコピーリンクがクリップボードにコピーされました!
indexLocalOnly を false に設定して、各ノードがローカルで開始された更新と共に、他のノードから受信する必要な更新を適用できるようにします。
indexLocalOnly を true に設定し、各ノードがローカルに発生した変更のみを適用できるようにします。これにより、インデックスが同期しないというリスクはなくても、インデックスの更新に使用されるノードには競合が生じます。
図11.1 レプリケートされたキャッシュクエリー
11.2.4. インデックスの管理 (ディストリビューションモード) リンクのコピーリンクがクリップボードにコピーされました!
indexLocalOnly を true に設定して共有インデックスを使用する必要があります。
図11.2 共有インデックスによるクエリー
11.2.5. インデックスの管理 (インバリデーションモード) リンクのコピーリンクがクリップボードにコピーされました!
11.3. Directory Provider リンクのコピーリンクがクリップボードにコピーされました!
- RAM Directory Provider
- Filesystem Directory Provider
- Infinispan Directory Provider
11.3.1. RAM Directory Provider リンクのコピーリンクがクリップボードにコピーされました!
- 独自のインデックスの保持。
- Lucene のインメモリーまたはファイルシステムベースのインデックスディレクトリーの使用。
<local-cache name="indexesInMemory">
<indexing index="LOCAL">
<property name="default.directory_provider">ram</property>
</indexing>
</local-cache>
<local-cache name="indexesInMemory">
<indexing index="LOCAL">
<property name="default.directory_provider">ram</property>
</indexing>
</local-cache>
11.3.2. Filesystem Directory Provider リンクのコピーリンクがクリップボードにコピーされました!
例11.1 ディスクベースのインデックスストア
11.3.3. Infinispan Directory Provider リンクのコピーリンクがクリップボードにコピーされました!
infinispan-directory モジュールが同梱されます。
注記
infinispan-directory をスタンドアロンの機能としてではなく、クエリー機能との関連でのみサポートしています。
infinispan-directory により、Lucene は分散されたデータグリッド内にインデックスを保存できます。これにより、インデックスを分散し、メモリーに保存し、またオプションではキャッシュストアを使用してディスクに書き込むことで永続化することもできます。
重要
true に設定されます。これにより、パフォーマンスが大幅に向上します。ただし、外部アプリケーションが infinispan で使用されているものと同じインデックスにアクセスする場合、このプロパティーは false に設定される必要があります。ほとんどアプリケーションとユースケースにおいては、パフォーマンスが向上するためにデフォルト値の使用が推奨されます。そのため、この値は確実に変更する必要がある場合にのみ変更してください。
InfinispanIndexManager は、マスターにすべての更新を送信するデフォルトのバックエンドを提供します。マスターは後に更新をインデックスに適用します。マスターノードに障害が発生すると更新が失われる可能性があるため、キャッシュとインデックスは同期させません。デフォルト以外のバックエンドはサポートされません。
例11.2 共有インデックスの有効化
11.4. インデックスの設定 リンクのコピーリンクがクリップボードにコピーされました!
11.4.1. リモートクライアントサーバーモードでのインデックスの設定 リンクのコピーリンクがクリップボードにコピーされました!
- NONE
- LOCAL = indexLocalOnly="true"
- ALL = indexLocalOnly="false"
例11.3 リモートクライアントサーバーモードでの設定
<indexing index="LOCAL">
<property name="default.directory_provider">ram</property>
<!-- Additional configuration information here -->
</indexing>
<indexing index="LOCAL">
<property name="default.directory_provider">ram</property>
<!-- Additional configuration information here -->
</indexing>
デフォルトで、Lucene キャッシュはローカルキャッシュとして作成されます。ただし、この設定では Lucene の検索結果がクラスターのノード間で共有されません。これを避けるには、以下の設定スニペットにあるようにクラスターモードで Lucene で必要とされるキャッシュを定義します。
例11.4 リモートクライアントサーバーモードでの Lucene キャッシュの設定
11.4.2. インデックスの再構築 リンクのコピーリンクがクリップボードにコピーされました!
- タイプでインデックス化されている内容の定義が変更されている。
Analyserなどのインデックスの定義方法に影響を与えるパラメーターが変更されている。- インデックスがシステム管理者のエラーにより、破壊または破損している。
MassIndexer への参照を取得し、以下のようにこれを開始します。
SearchManager searchManager = Search.getSearchManager(cache); searchManager.getMassIndexer().start();
SearchManager searchManager = Search.getSearchManager(cache);
searchManager.getMassIndexer().start();
11.5. インデックスのチューニング リンクのコピーリンクがクリップボードにコピーされました!
11.5.1. Near-Realtime Index Manager リンクのコピーリンクがクリップボードにコピーされました!
<property name="default.indexmanager">near-real-time</property>
<property name="default.indexmanager">near-real-time</property>
11.5.2. Infinispan ディレクトリーのチューニング リンクのコピーリンクがクリップボードにコピーされました!
- データキャッシュ
- メタデータキャッシュ
- ロッキングキャッシュ
例11.5 Infinispan ディレクトリーのチューニング
11.5.3. インデックス前の設定 リンクのコピーリンクがクリップボードにコピーされました!
default. プレフィックスが使用されるためです。各インデックスに異なる設定を指定するには、default をインデックス名に置き換えます。デフォルトでは、これはインデックス化されたオブジェクトの完全クラス名ですが、@Indexed アノテーションのインデックス名は上書きできます。
パート V. リモートクライアントサーバーモードインターフェース リンクのコピーリンクがクリップボードにコピーされました!
- 非同期 API (リモートクライアントサーバーモードで Hot Rod クライアントを併用する場合のみ使用可能)
- REST インターフェース
- Memcached インターフェース
- Hot Rod インターフェース
- RemoteCache API
第12章 REST インターフェース リンクのコピーリンクがクリップボードにコピーされました!
重要
security-domain および auth-method パラメーターを削除します。
12.1. REST インターフェースコネクター リンクのコピーリンクがクリップボードにコピーされました!
12.1.1. REST コネクターの設定 リンクのコピーリンクがクリップボードにコピーされました!
rest-connector 要素を設定します。
手順12.1 リモートクライアントサーバーモード用 REST コネクターの設定
rest-connector 要素は、REST コネクターの設定情報を指定します。
cache-containerパラメーターは、REST コネクターで使用されるキャッシュコンテナーを指定します。これは必須パラメーターです。context-pathパラメーターは、REST コネクターのコンテキストパスを指定します。このパラメーターのデフォルト値は空の文字列 ("") です。これはオプションパラメーターです。security-domainパラメーターは、REST エンドポイントへのアクセスを認証するためにセキュリティーサブシステムで宣言された指定済みドメインを使用することを指定します。これはオプションパラメーターです。このパラメーターが省略されると、認証は実行されません。auth-methodパラメーターは、エンドポイントのクレデンシャルを取得するために使用するメソッドを指定します。このパラメーターのデフォルト値はBASICです。サポートされる別の値にはBASIC、DIGEST、およびCLIENT-CERTがあります。これはオプションパラメーターです。security-modeパラメーターは、書き込み操作 (PUT、POST、DELETE など) または読み取り操作 (GET や HEAD など) に対してのみ認証が必要かどうかを指定します。このパラメーターの有効な値はWRITE(書き込み操作のみを認証する場合) またはREAD_WRITE(読み書き操作を認証する場合) です。このパラメーターのデフォルト値はREAD_WRITEです。
第13章 Memcached インターフェース リンクのコピーリンクがクリップボードにコピーされました!
13.1. Memcached サーバーについて リンクのコピーリンクがクリップボードにコピーされました!
- スタンドアロン。各サーバーは、他の memcached サーバーと通信せずに独立して動作します。
- クラスター。サーバーはデータを他の memcached サーバーにレプリケートおよび分散します。
13.2. memcached 統計 リンクのコピーリンクがクリップボードにコピーされました!
| 統計 | データタイプ | 説明 |
|---|---|---|
| uptime | 32 ビット符号なし整数。 | memcached インスタンスが利用可能であり、実行されている時間 (秒数単位) を含みます。 |
| time | 32 ビット符号なし整数。 | 現在の時間を含みます。 |
| version | 文字列 | 現在のバージョンを含みます。 |
| curr_items | 32 ビット符号なし整数。 | インスタンスが現在格納しているアイテムの数を含みます。 |
| total_items | 32 ビット符号なし整数。 | 存続期間中にインスタンスにより格納されたアイテムの合計数を含みます。 |
| cmd_get | 64 ビット符号なし整数 | get 操作要求 (データ取得要求) の合計数を含みます。 |
| cmd_set | 64 ビット符号なし整数 | 設定された操作要求 (データ格納要求) の合計数を含みます。 |
| get_hits | 64 ビット符号なし整数 | 要求されたキーにあるキーの数を含みます。 |
| get_misses | 64 ビット符号なし整数 | 要求されたキーにないキーの数を含みます。 |
| delete_hits | 64 ビット符号なし整数 | 削除するキー (特定され正常に削除されたキー) の数を含みます。 |
| delete_misses | 64 ビット符号なし整数 | 削除するキー (特定されず、削除できなかったキー) の数を含みます。 |
| incr_hits | 64 ビット符号なし整数 | 増分するキー (特定され正常に増分されたキー) の数を含みます。 |
| incr_misses | 64 ビット符号なし整数 | 増分するキー (特定されず、増分できなかったキー) の数を含みます。 |
| decr_hits | 64 ビット符号なし整数 | 減分するキー (特定され正常に減分されたキー) の数を含みます。 |
| decr_misses | 64 ビット符号なし整数 | 減分するキー (特定されず、減分できなかったキー) の数を含みます。 |
| cas_hits | 64 ビット符号なし整数 | 比較し、スワップするキー (特定され正常に比較およびスワップされたキー) の数を含みます。 |
| cas_misses | 64 ビット符号なし整数 | 比較し、スワップするキー (特定されず、比較およびスワップされなかったキー) の数を含みます。 |
| cas_badval | 64 ビット符号なし整数 | 比較およびスワップが行われたが、元の値が提供された値に一致しなかったキーの数を含みます。 |
| evictions | 64 ビット符号なし整数 | 実行されたエビクションコールの数を含みます。 |
| bytes_read | 64 ビット符号なし整数 | ネットワークからサーバーが読み取ったバイトの合計数を含みます。 |
| bytes_written | 64 ビット符号なし整数 | ネットワークからサーバーが書き込んだバイトの合計数を含みます。 |
13.3. Memcached インターフェースコネクター リンクのコピーリンクがクリップボードにコピーされました!
memcached ソケットバインディングを使用して Memcached サーバーが有効になり、local コンテナーで宣言された memcachedCache キャッシュが公開され、他のすべての設定にデフォルト値が使用されます。
<memcached-connector socket-binding="memcached" cache-container="local"/>
<memcached-connector socket-binding="memcached"
cache-container="local"/>
13.3.1. Memcached コネクターの設定 リンクのコピーリンクがクリップボードにコピーされました!
connectors 要素内にある memcached コネクターを設定するために使用する属性を示しています。
手順13.1 リモートクライアントサーバーモードでの Memcached コネクターの設定
memcached-connector 要素は、memcached で使用する設定要素を定義します。
socket-bindingパラメーターは、memcached コネクターで使用されるソケットバインディングポートを指定します。これは必須パラメーターです。cache-containerパラメーターは、memcached コネクターで使用されるキャッシュコンテナーを指定します。これは必須パラメーターです。worker-threadsパラメーターは、memcached コネクターで利用可能なワーカースレッドの数を指定します。このパラメーターのデフォルト値は、160 です。これはオプションパラメーターです。idle-timeoutパラメーターは、接続がタイムアウトするまでコネクターがアイドル状態のままになる時間 (ミリ秒単位) を指定します。このパラメーターのデフォルト値は-1です (タイムアウト期間が設定されません)。これは、オプションパラメーターです。tcp-no-delayパラメーターは、TCP パケットが遅延され一括して送信されるかを指定します。このパラメーターの有効な値はtrueとfalseになります。このパラメーターのデフォルト値は、trueです。これはオプションパラメーターです。send-buffer-sizeパラメーターは、memcached コネクターの送信バッファーのサイズを指定します。このパラメーターのデフォルト値は TCP スタックバッファーのサイズです。これはオプションパラメーターです。receive-buffer-sizeパラメーターは、memcached コネクターの受信バッファーのサイズを指定します。このパラメーターのデフォルト値は TCP スタックバッファーのサイズです。これはオプションパラメーターです。
第14章 Hot Rod インターフェース リンクのコピーリンクがクリップボードにコピーされました!
14.1. Hot Rod について リンクのコピーリンクがクリップボードにコピーされました!
14.2. Memcached ではなく Hot Rod を使用する利点 リンクのコピーリンクがクリップボードにコピーされました!
- Memcached
- memcached プロコトルでは、サーバーエンドポイントが memcached text wire protocol を使用します。memcached wire protocol の利点は、一般的に使用されていることであり、これはほとんどのプラットフォームで利用できます。memcached を使用する場合は、クラスタリング、スケーラビリティーの状態共有、および高可用性を含む JBoss Data Grid のすべての機能を利用できます。ただし、memcached プロトコルには dynamicity がなく、クラスターのいずれかのノードで障害が発生したときにクライアント上のサーバーノードのリストを手動で更新する必要があります。また、memcached クライアントはクラスターのデータの場所を認識しません。つまり、クライアントは非所有者のノードからデータを要求し、データをクライアントに返す前に、そのノードから実際の所有者への追加の要求のペナルティーが発生します。この結果、Hot Rod プロトコルは memcached よりも優れたパフォーマンスを提供できます。
- Hot Rod
- JBoss Data Grid の Hot Rod プロトコルは、memcached のすべての機能を提供するバイナリーワイヤープロトコルであり、優れたスケーリング、持続性、および弾力性を提供します。Hot Rod プロトコルは、リモートキャッシュで各ノードのホスト名とポートを必要としませんが、memcached ではこれらのパラメーターを指定する必要があります。Hot Rod クライアントはクラスター化された Hot Rod サーバーのトポロジーの変更を自動的に検出します。新しいノードがクラスターに参加したり、クラスターから脱退したりすると、クライアントは Hot Rod サーバートポロジービューを更新します。この結果、Hot Rod では、設定と保守が容易になり、動的なロードバランシングとフェイルオーバーの利点が提供されます。また、Hot Rod ワイヤープロトコルは分散キャッシュに接続するときにスマートルーティングを使用します。この場合に、サーバーノードとクライアント間で一貫したハッシュアルゴリズムが共有され、memcached よりも高速な読み取りおよび書き込み機能が提供されます。
警告
cacheManager.getCache メソッドを使用してキャッシュを取得できます。
14.3. Hot Rod ハッシュ機能 リンクのコピーリンクがクリップボードにコピーされました!
14.4. Hot Rod インターフェースコネクター リンクのコピーリンクがクリップボードにコピーされました!
hotrod ソケットバインディングを使用して Hot Rod サーバーが有効になります。
<hotrod-connector socket-binding="hotrod" cache-container="local" />
<hotrod-connector socket-binding="hotrod"
cache-container="local" />
<topology-state-transfer /> 子要素をコネクターに追加することにより、調整できます。
注記
14.4.1. Hot Rod コネクターの設定 リンクのコピーリンクがクリップボードにコピーされました!
hotrod-connector 要素と topology-state-transfer 要素は、次の手順に基づいて設定する必要があります。
手順14.1 リモートクライアントサーバーモード用 Hot Rod コネクターの設定
hotrod-connector要素は、Hot Rod で使用する設定要素を定義します。socket-bindingパラメーターは、Hot Rod コネクターで使用されるソケットバインディングポートを指定します。これは必須パラメーターです。cache-containerパラメーターは、Hot Rod コネクターで使用されるキャッシュコンテナーを指定します。これは必須パラメーターです。worker-threadsパラメーターは、Hot Rod コネクターで利用可能なワーカースレッドの数を指定します。このパラメーターのデフォルト値は、160です。これはオプションパラメーターです。idle-timeoutパラメーターは、接続がタイムアウトするまでコネクターがアイドル状態のままになる時間 (ミリ秒単位) を指定します。このパラメーターのデフォルト値は-1です (タイムアウト期間が設定されません)。これは、オプションパラメーターです。tcp-no-delayパラメーターは、TCP パケットが遅延され一括して送信されるかを指定します。このパラメーターの有効な値はtrueとfalseになります。このパラメーターのデフォルト値は、trueです。これはオプションパラメーターです。send-buffer-sizeパラメーターは、Hot Rod コネクターの送信バッファーのサイズを指定します。このパラメーターのデフォルト値は TCP スタックバッファーのサイズです。これはオプションパラメーターです。receive-buffer-sizeパラメーターは、Hot Rod コネクターの受信バッファーのサイズを指定します。このパラメーターのデフォルト値は TCP スタックバッファーのサイズです。これはオプションパラメーターです。
topology-state-transfer要素は、Hot Rod コネクターのトポロジー状態転送設定を指定します。この要素はhotrod-connector要素内でのみ使用できます。lock-timeoutパラメーターは、ロックを取得しようとする操作がタイムアウトする時間を指定します。このパラメーターのデフォルト値は10秒です。これはオプションパラメーターです。replication-timeoutパラメーターは、レプリケーション操作がタイムアウトする時間 (ミリ秒単位) を指定します。このパラメーターのデフォルト値は10秒です。これはオプションパラメーターです。external-hostパラメーターは、トポロジー情報にリストされたクライアントに Hot Rod サーバーが送信するホスト名を指定します。このパラメーターのデフォルト値は、ホストアドレスです。これはオプションパラメーターです。external-portパラメーターは、トポロジー情報にリストされたクライアントに Hot Rod サーバーが送信するポートを指定します。このパラメーターのデフォルト値は、設定されたポートです。これはオプションパラメーターです。lazy-retrievalパラメーターは、Hot Rod コネクターが取得操作をレイジーに実行するかどうかを指定します。このパラメーターのデフォルト値はtrueです。これはオプションパラメーターです。
パート VI. キャッシュのロックのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
第15章 ロック リンクのコピーリンクがクリップボードにコピーされました!
15.1. ロックの設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
invalidation-cache、distributed-cache、 replicated-cache または local-cache) 内で locking 要素を使用して設定されます。
注記
READ_COMMITTED です。分離モードを明示的に指定するために isolation 属性が含まれる場合、この属性は無視され、警告がスローされて、デフォルト値が代わりに使用されます。
手順15.1 ロックの設定 (リモートクライアントサーバーモード)
acquire-timeoutパラメーターは、ロックの取得がタイムアウトになった後のミリ秒数を指定します。concurrency-levelパラメーターは、LockManager によって使用されるロックストライプの数を定義します。stripingパラメーターは、ロックストライピングがローカルキャッシュに使用されるかどうかを指定します。
15.2. ロックの設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
locking 要素とそのパラメーターは、default 要素内で設定され、それぞれの名前付きキャッシュでは、local-cache 要素内で設定されます。この設定の例は、以下の通りです。
手順15.2 ロックの設定 (ライブラリーモード)
concurrencyLevelパラメーターは、ロックコンテナーの平行性レベルを指定します。データグリッドと通信する同時スレッドの数に従ってこの値を設定します。isolationパラメーターはキャッシュの分離レベルを指定します。有効な分離レベルは、READ_COMMITTEDおよびREPEATABLE_READです。分離レベルについてさらに詳しくは、「分離レベルについて」を参照してください。acquire-timeoutパラメーターは、ロック取得の試行がタイムアウトになった後の時間 (ミリ秒単位) を指定します。stripingパラメーターは、ロックを必要とするすべてのエントリーに対して、共有ロックのプールを維持するかどうかを指定します。FALSEに設定されると、ロックがキャッシュ内のそれぞれのエントリーに対して作成されます。さらに詳しくは、「ロックストライピングについて」を参照してください。write-skewパラメーターは、isolationがREPEATABLE_READに設定された場合にのみ有効です。このパラメーターがFALSEに設定された場合、書き込み時に使用中のエントリーと基礎となるエントリー間の相違があると、使用中のエントリーが基礎となるエントリーを上書きします。このパラメーターがTRUEに設定された場合は、このような競合 (書き込みの競合など) により例外がスローされます。write-skewパラメーターは、OPTIMISTICトランザクションでのみ使用でき、SIMPLEバージョン管理スキームを使用してエントリーバージョン管理を有効にする必要があります。
15.3. ロックのタイプ リンクのコピーリンクがクリップボードにコピーされました!
15.3.1. 楽観的ロックについて リンクのコピーリンクがクリップボードにコピーされました!
write-skew が有効になっている場合、トランザクションが終了する前に、競合する変更が 1 つ以上データに加えられると、楽観的ロックモードのトランザクションはロールバックします。
15.3.2. 悲観的ロックについて リンクのコピーリンクがクリップボードにコピーされました!
15.3.3. 悲観的ロックのタイプ リンクのコピーリンクがクリップボードにコピーされました!
- 明示的な楽観的ロックは、JBoss Data Grid Lock API を使用してトランザクションの期間にキャッシュユーザーがキャッシュキーを明示的にロックできるようにします。ロック呼び出しは、クラスターの全ノードにおいて、指定されたキャッシュキー上でロックの取得を試みます。ロックはすべてコミットまたはロールバックフェーズ中に開放されます。
- 暗黙的な悲観的ロックは、キャッシュキーが変更操作のためアクセスされる時にキャッシュキーがバックグラウンドでロックされるようにします。暗黙的な悲観的ロックを使用すると、各変更操作に対してキャッシュキーが確実にローカルでロックされるよう JBoss Data Grid がチェックします。ロックされていないキャッシュキーが見つかると、JBoss Data Grid はロックされていないキャッシュキーのロックを取得するため、クラスターワイドのロックを要求します。
15.3.4. 明示的な悲観的ロックの例 リンクのコピーリンクがクリップボードにコピーされました!
手順15.3 明示的な悲観的ロックによるトランザクション
tx.begin() cache.lock(K) cache.put(K,V5) tx.commit()
tx.begin()
cache.lock(K)
cache.put(K,V5)
tx.commit()
- 行
cache.lock(K)が実行されると、Kでクラスター全体のロックが取得されます。 - 行
cache.put(K,V5)が実行されると、取得の成功が保証されます。 - 行
tx.commit()が実行されると、この処理のために保持されたロックが開放されます。
15.3.5. 暗黙的な悲観的ロックの例 リンクのコピーリンクがクリップボードにコピーされました!
手順15.4 暗黙的な悲観的ロックによるトランザクション
tx.begin() cache.put(K,V) cache.put(K2,V2) cache.put(K,V5) tx.commit()
tx.begin()
cache.put(K,V)
cache.put(K2,V2)
cache.put(K,V5)
tx.commit()
- 行
cache.put(K,V)が実行されると、Kでクラスター全体のロックが取得されます。 - 行
cache.put(K2,V2)が実行されると、K2でクラスター全体のロックが取得されます。 - 行
cache.put(K,V5)が実行されると、Kのクラスター全体のロックは以前取得されたため、ロックの取得は実行できませんが、put操作は引き続き実行されます。 - 行
tx.commit()が実行されると、このトランザクションのために保持されたすべてのロックが開放されます。
15.3.6. ロックモードの設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
transaction 要素を使用します。
<transaction locking="{OPTIMISTIC/PESSIMISTIC}" />
<transaction locking="{OPTIMISTIC/PESSIMISTIC}" />
15.3.7. ロックモードの設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
transaction 要素内で設定されます。
<transaction transaction-manager-lookup="{TransactionManagerLookupClass}"
mode="{NONE, BATCH, NON_XA, NON_DURABLE_XA, FULL_XA}"
locking="{OPTIMISTIC,PESSIMISTIC}">
</transaction>
<transaction transaction-manager-lookup="{TransactionManagerLookupClass}"
mode="{NONE, BATCH, NON_XA, NON_DURABLE_XA, FULL_XA}"
locking="{OPTIMISTIC,PESSIMISTIC}">
</transaction>
locking 値を OPTIMISTIC または PESSIMISTIC に設定します。
15.4. ロック操作 リンクのコピーリンクがクリップボードにコピーされました!
15.4.1. LockManager について リンクのコピーリンクがクリップボードにコピーされました!
LockManager コンポーネントは、書き込み処理が始まる前にエントリーをロックします。LockManager は LockContainer を使用してロックを見つけたり、ロックを保持および作成します。JBoss Data Grid が内部的に使用する LockContainers には 2 つのタイプがあり、その決定は useLockStriping 設定に依存します。最初のタイプはロックストライピングのサポートを提供し、2 つ目のタイプはエントリーごとに 1 つのロックをサポートします。
関連トピック:
15.4.2. ロックの取得について リンクのコピーリンクがクリップボードにコピーされました!
15.4.3. 平行性レベルについて リンクのコピーリンクがクリップボードにコピーされました!
DataContainers 内部のコレクションなど、関連するすべての JDK ConcurrentHashMap ベースのコレクションを調整します。
第16章 ロックストライピングのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
16.1. ロックストライピングについて リンクのコピーリンクがクリップボードにコピーされました!
16.2. ロックストライピングの設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
striping 要素を true に設定して有効になります。
例16.1 ロックストライピング (リモートクライアントサーバーモード)
<locking acquire-timeout="20000" concurrency-level="500" striping="true" />
<locking acquire-timeout="20000"
concurrency-level="500"
striping="true" />
注記
READ_COMMITTED です。分離モードを明示的に指定するために isolation 属性が含まれる場合、この属性は無視され、警告がスローされて、デフォルト値が代わりに使用されます。
locking 要素は以下の属性を使用します。
acquire-timeout属性は、ロックの取得を試行する最大時間を指定します。この属性のデフォルト値は10000ミリ秒です。concurrency-level属性は、ロックコンテナーの同時実行レベルを指定します。JBoss Data Grid と通信する同時スレッドの数に従ってこの値を調整します。この属性のデフォルト値は32です。striping属性は、ロックを必要とするすべてのエントリーに対してロックの共有プールを維持するかどうかを指定します (true)。falseに設定された場合は、各エントリーに対してロックが作成されます。ロックストライピングによりメモリーフットプリントが制御され、システムでの同時実行性を削減できます。この属性のデフォルト値はfalseです。
16.3. ロックストライピングの設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
striping パラメーターを使用して行います。
手順16.1 ロックストライピングの設定 (ライブラリーモード)
concurrency-levelは、ロックストライピングが有効な場合に使用される共有ロックコレクションのサイズを指定するために使用されます。isolationパラメーターは、キャッシュの分離レベルを指定します。有効な分離レベルはREAD_COMMITTEDとREPEATABLE_READです。acquire-timeoutパラメーターは、ロック取得の試行がタイムアウトになった後の時間 (ミリ秒単位) を指定します。stripingパラメーターは、ロックを必要とするすべてのエントリーに対して、共有ロックのプールを維持するかどうかを指定します。FALSEに設定されると、ロックがキャッシュ内のそれぞれのエントリーに対して作成されます。TRUEに設定されると、ロックストライピングは有効にされ、共有ロックは必要に応じてプールから使用されます。write-skewチェックは、異なるトランザクションのエントリーへの変更によってトランザクションのロールバックを実行するかどうかを決定します。書き込みスキューを true に設定するには、isolation_levelをREPEATABLE_READに設定する必要があります。write-skewおよびisolation_levelのデフォルト値はそれぞれFALSEとREAD_COMMITTEDです。write-skewパラメーターは、OPTIMISTICトランザクションでのみ使用でき、SIMPLEバージョン管理スキームを使用してエントリーバージョン管理を有効にする必要があります。
第17章 分離レベルのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
17.1. 分離レベルについて リンクのコピーリンクがクリップボードにコピーされました!
READ_COMMITTED と REPEATABLE_READ の 2 つです。
READ_COMMITTED。この分離レベルはさまざまな要件に適用されます。これは、リモートクライアントサーバーおよびライブラリーモードでのデフォルト値です。REPEATABLE_READ。重要
リモートクライアントサーバーモードのロックに有効な唯一の値はデフォルトのREAD_COMMITTED値です。isolation値で明示的に指定された値は無視されます。locking要素が設定に存在しない場合、デフォルトの分離値はREAD_COMMITTEDです。
- リモートクライアントサーバーモードの設定例については、「ロックストライピングの設定 (リモートクライアントサーバーモード)」を参照してください。
- ライブラリーモードの設定例については、「ロックストライピングの設定 (ライブラリーモード)」を参照してください。
17.2. READ_COMMITTED について リンクのコピーリンクがクリップボードにコピーされました!
READ_COMMITTED は Red Hat JBoss Data Grid で使用できる 2 つの分離モードの 1 つです。
READ_COMMITTED モードでは、書き込み操作はデータ自体ではなくデータのコピーとして作成されます。書き込み操作は他のデータの書き込みをブロックしますが、書き込みは読み出し操作をブロックしません。そのため、READ_COMMITTED と REPEATABLE_READ の両モードは、書き込み操作がいつ発生するかに関係なく、いつでも読み取り操作を許可します。
READ_COMMITTED モードでは、読み取りの合間にデータを変更する別のトランザクションでの書き込み操作のため、トランザクション内の複数の読み取りで異なる結果が返されることがあります。 これは、反復不可能読み取りと呼ばれ、REPEATABLE_READ モードでは回避されます。
17.3. REPEATABLE_READ について リンクのコピーリンクがクリップボードにコピーされました!
REPEATABLE_READ は Red Hat JBoss Data Grid で使用できる 2 つの分離モードの 1 つです。
REPEATABLE_READ は読み取り操作中の書き込み操作や、書き込み操作時の読み取り操作を許可しません。これにより、単一のトランザクションの同じ行に 2 つの読み取り操作があるのに取得した値が異なる場合に発生する「反復不可能読み取り」が起こらないようにします (この原因は 2 つの読み取り操作の間に値を変更する書き込み操作にあると考えられます) 。
REPEATABLE_READ 分離モードは、変更が発生する前にエントリーの値を保存します。これにより、同じエントリーの 2 番目の読み取り操作は変更された新しい値ではなく、保存された値を読み取るため、「反復不可能読み取り」の発生を防ぐことができます。そのため、読み取りの間に別のトランザクションで書き込み操作が発生しても、1 つのトランザクションで 2 つの読み取り操作によって取得される 2 つの値は常に同じになります。
パート VII. キャッシュストアのセットアップと設定 リンクのコピーリンクがクリップボードにコピーされました!
第18章 キャッシュストア リンクのコピーリンクがクリップボードにコピーされました!
注記
shared が false に設定された場合) は、ノードの参加時に、クラスターから削除された可能性がある古いエントリーがストアにまだ存在し、再び現れることがあります。
18.1. キャッシュローダーとキャッシュライター リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.persistence.spi にある以下の SPI を介して行われます。
CacheLoaderCacheWriterAdvancedCacheLoaderAdvancedCacheWriter
CacheLoader と CacheWriter は、ストアに対して読み書きを行う基本的なメソッドを提供します。CacheLoader は、必要なデータがキャッシュにない場合にデータストアからデータを取得します。CacheWriter は、キャッシュのエビクション時にエントリーのパッシべーションとアクティべーションを強制実行するために使用されます。
AdvancedCacheLoader と AdvancedCacheWriter は、基礎となるストレージを一括で処理する並列反復、失効したエントリーの削除、クリアおよびサイズ指定などの操作を提供します。
org.infinispan.persistence.file.SingleFileStore を使用すると、独自のストア実装を簡単に作成できます。
注記
CacheLoader、CacheStore により拡張) が使用されていました (これは現時点でも利用可能です)。
18.2. キャッシュストアの設定 リンクのコピーリンクがクリップボードにコピーされました!
18.2.1. キャッシュストアの設定 リンクのコピーリンクがクリップボードにコピーされました!
ignoreModifications 要素が特定のキャッシュストアに対して "true" にされない限り、すべてのキャッシュストアに影響を与えます。
18.2.2. XML を使用したキャッシュストアの設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
18.2.3. SKIP_CACHE_LOAD フラグについて リンクのコピーリンクがクリップボードにコピーされました!
SKIP_CACHE_LOAD フラグを使用します。
18.2.4. SKIP_CACHE_STORE フラグについて リンクのコピーリンクがクリップボードにコピーされました!
SKIP_CACHE_STORE フラグが使用されると、キャッシュストアは指定されたキャッシュ操作に対して考慮されません。このフラグは、関連付けられたキャッシュストアからキャッシュを取得せずにエントリーがキャッシュ内にあるかどうかを判別できると同時に、設定済みのキャッシュストアにキャッシュを組み込まずにエントリーをキャッシュに配置する際に役立ちます。
18.2.5. SKIP_SHARED_CACHE_STORE フラグについて リンクのコピーリンクがクリップボードにコピーされました!
SKIP_SHARED_CACHE_STORE フラグが有効にされると、共有キャッシュストアは指定されたキャッシュ操作に対して考慮されません。このフラグは、共有キャッシュストアからキャッシュを取得せずにエントリーがキャッシュ内にあるかどうかを判別できると同時に、共有キャッシュストアにキャッシュを組み込まずにエントリーをキャッシュに配置する際に役立ちます。
18.4. 接続ファクトリー リンクのコピーリンクがクリップボードにコピーされました!
ConnectionFactory 実装に依存してデータベースへの接続を取得します。このプロセスは接続管理またはプーリングとも呼ばれます。
ConnectionFactoryClass 設定属性を使用して指定することができます。JBoss Data Grid には次の ConnectionFactory 実装が含まれています。
- ManagedConnectionFactory。
- SimpleConnectionFactory。
- PooledConnectionFactory。
18.4.1. ManagedConnectionFactory について リンクのコピーリンクがクリップボードにコピーされました!
ManagedConnectionFactory は、アプリケーションサーバーなどの管理された環境内での使用に適した接続ファクトリーです。この接続ファクトリーは JNDI ツリー内の設定された場所を調査でき、接続管理を DataSource へ委譲できます。
18.4.2. SimpleConnectionFactory について リンクのコピーリンクがクリップボードにコピーされました!
SimpleConnectionFactory は呼び出しごとにデータベース接続を作成する接続ファクトリーです。この接続ファクトリーは実稼働環境での使用向けには設計されていません。
18.4.3. PooledConnectionFactory について リンクのコピーリンクがクリップボードにコピーされました!
PooledConnectionFactory は C3P0 に基づく接続ファクトリーであり、通常は JBoss EAP などのサーブレットコンテナーを施与うしたデプロイメントではなくスタンドアロンのデプロイメント用に推奨されます。この接続ファクトリーは、ユーザーがファクトリーで生成されるすべての DataSource インスタンスで使用できる一連のパラメーターを定義できるようにすることにより機能できます。
第19章 キャッシュストアの実装 リンクのコピーリンクがクリップボードにコピーされました!
注記
shared が false に設定された場合) は、ノードの参加時に、クラスターから削除された可能性がある古いエントリーがストアにまだ存在し、再び現れることがあります。
19.1. キャッシュストアの比較 リンクのコピーリンクがクリップボードにコピーされました!
- 単一ファイルキャッシュストアはローカルのファイルキャッシュストアです。これにより、クラスター化されたキャッシュの各ノードに対してデータがローカルで永続化されます。単一ファイルキャッシュストアは、優れた読み書きパフォーマンスを提供しますが、キーがメモリーに保持され、各ノードで大きいデータセットを永続化するときに使用が制限されます。詳細については、「単一ファイルキャッシュストア」を参照してください。
- LevelDB ファイルキャッシュストアは、高い読み書きパフォーマンスを提供するローカルのファイルキャッシュストアです。キーがメモリに保持される単一ファイルキャッシュストアの制限はありません。詳細については、「LevelDB キャッシュストア」を参照してください。
- JDBC キャッシュストアは、必要に応じて共有できるキャッシュストアです。使用時に、クラスター化されたキャッシュのすべてのノードは、クラスターの各ノードに対して単一のデータベースまたはローカルの JDBC データベースに永続化されます。共有キャッシュストアには、LevelDB キャッシュストアなどのローカルキャッシュストアのスケーラビリティーとパフォーマンスがありませんが、永続化データに対して単一の場所が提供されます。JDBC キャッシュストアでは、エントリーがバイナリー blob として永続化され、JBoss Data Grid 外部で読み取ることができません。詳細については、「JDBC ベースのキャッシュストア」を参照してください。
- JPA キャッシュストア (ライブラリーモードでのみサポート) は JDBC キャッシュストアのような要求キャッシュストアですが、データベースに永続化するときにスキーマ情報が保持されます。したがって、永続化されたエントリーは、JBoss Data Grid 外部で読み取ることができます。詳細については、「JPA キャッシュストア」を参照してください。
19.2. キャッシュストア設定の詳細 (ライブラリモード) リンクのコピーリンクがクリップボードにコピーされました!
passivationパラメーターは、Red Hat JBoss Data Grid がストアと対話する方法に影響を与えます。オブジェクトがインメモリーキャッシュから削除されると、パッシベーションによりオブジェクトがシステムやデータベースなどの 2 次データストアに書き込まれます。このパラメーターの有効な値は、trueとfalseですが、passivationはデフォルトでfalseに設定されます。
sharedパラメーターは、異なるキャッシュインスタンスによってキャッシュストアが共有されていることを示します。たとえば、クラスター内のすべてのインスタンスが、同じリモートの共有データベースと通信するために同じ JDBC 設定を使用する場合があります。sharedは、デフォルトでfalseになります。trueに設定すると、異なるキャッシュインスタンスによって重複データがキャッシュストアに書き込まれることが避けられます。LevelDB キャッシュストアの場合は、このパラメーターを設定から除外するか、falseに設定する必要があります (このキャッシュストアの共有はサポートされていません)。preloadパラメーターはデフォルトでfalseに設定されます。trueに設定されると、キャッシュストアに保存されたデータは、キャッシュの起動時にメモリーにプリロードされます。これにより、キャッシュストアのデータが起動後すぐに利用できるようになり、データのレイジーなロードの結果としてキャッシュ操作の遅れを防ぐことができます。プリロードされたデータは、ノード上でローカルにのみに保存され、プリロードされたデータのレプリケーションや分散は行われません。Red Hat JBoss Data Grid は、エビクションのエントリーの最大設定数までの数のエントリーをプリロードします。fetch-stateパラメーターは、キャッシュの永続ステートを取り込むかどうかを決定し、クラスターに参加する際にこれをローカルキャッシュストアに適用します。キャッシュストアが共有される場合、キャッシュが同じキャッシュストアにアクセスする際に、fetch persistent 状態は無視されます。複数のキャッシュストアでこのプロパティーがtrueに設定されている場合にキャッシュサービスを起動すると、設定の例外がスローされます。fetch-stateプロパティーはデフォルトではfalseです。- ルックアップを迅速化するために、単一ファイルキャッシュストアはキーのインデックスとファイル内のそれらの場所を保持します。このインデックスがメモリー消費の問題の原因になるのを避けるために、このキャッシュストアは、
max-entriesパラメーターで定義される、保存されるエントリーの最大数でバインドすることができます。この制限の上限を上回る場合は、LRU アルゴリズムを使用してエントリーをインメモリーインデックスと基礎となるファイルベースのキャッシュストアの両方から永久的に削除できます。デフォルト値は-1で、無制限のエントリーを許可します。 singletonパラメーターは、シングルトンストアのキャッシュストアを有効にします。SingletonStore は、クラスター内の唯一のインスタンスが基礎となるストアと通信する場合にのみ使用される委譲するキャッシュストアです。ただし、singletonパラメーターはfile-storeには推奨されません。デフォルト値はfalseです。purgeパラメーターは、起動時にキャッシュストアがパージされるかどうかを制御します。location設定要素は、ストアが書き込みできるディスクの場所を設定します。
write-behind 要素には、キャッシュストアのさまざまな側面を設定するパラメーターが含まれます。
thread-pool-sizeパラメーターは、変更をストアに同時に適用するスレッドの数を指定します。このパラメーターのデフォルト値は1です。flush-lock-timeoutパラメーターは、キャッシュストアに定期的にフラッシュされる状態を保護するロックを取得するための時間を指定します。このパラメーターのデフォルト値は1です。modification-queue-sizeパラメーターは、非同期ストアの変更キューのサイズを指定します。基礎となるキャッシュストアがこのキューを処理するよりも速く更新される場合に、その期間において非同期ストアは同期ストアのように動作し、キューがさらに要素を許可できるようになるまでブロックします。このパラメーターのデフォルト値は1024要素です。shutdown-timeoutパラメーターは、キャッシュストアを停止するのにかかる最大時間を指定します。このパラメーターのデフォルト値は25000ミリ秒です。
cache属性は、リモート Infinispan クラスターで接続するリモートキャッシュの名前を指定します。リモートキャッシュの名前が指定されないと、デフォルトのキャッシュが使用されます。fetch-state属性がtrueに設定されると、リモートキャッシュがクラスターに参加したときに永続状態が取り込まれます。複数のキャッシュストアがチェーン化されている場合、1 つのキャッシュストアだけでこのプロパティーをtrueに設定できます。この値のデフォルトはfalseです。shared属性は、複数のキャッシュインスタンスがキャッシュストアを共有する場合にtrueに設定されます。これにより、複数のキャッシュインスタンスが同じ変更内容を個別に書き込むことを防ぐことができます。この属性のデフォルト値はfalseです。preload属性を使用すると、キャッシュストアデータがメモリーにプリロードされ、起動後すぐにアクセス可能になります。これをtrueに設定すると、起動時間が増加するという不利な点もあります。この属性のデフォルト値はfalseです。singletonパラメーターは、SingletonStore の委譲するキャッシュストアを有効にします。これは、クラスター内の唯一のインスタンスが基礎となるストアと通信する場合にのみ使用されます。デフォルト値はfalseです。purge属性を使用すると、キャッシュストアが起動プロセスでパージされます。この属性のデフォルト値はfalseです。tcp-no-delay属性は、TCPNODELAYスタックをトリガーします。この属性のデフォルト値はtrueです。ping-on-start属性は、クラスタートポロジーを取り込むために ping 要求をバックエンドサーバーに送信します。この属性のデフォルト値はtrueです。key-size-estimate属性は、キーサイズの推定値を提供します。この属性のデフォルト値は64です。value-size-estimate属性は、値をシリアライズおよびデシリアライズする時のバイトバッファーのサイズを指定します。この属性のデフォルト値は512です。force-return-values属性は、FORCE_RETURN_VALUEをすべての呼び出しに対して有効にするかどうかを設定します。この属性のデフォルト値はfalseです。
remote-store 要素内の remote-server 要素を作成し、サーバー情報を定義します。
host属性はホストアドレスを設定します。port属性は、リモートキャッシュストアで使用されるポートを設定します。これはデフォルトで11222になります。
max-activeパラメーターは、一度に各サーバーに設定できるアクティブな接続の最大数を示します。この属性のデフォルト値は-1であり、これはアクティブな接続の無限な数を示します。max-idleパラメーターは、一度に各サーバーに設定できるアイドル状態の接続の最大数を示します。この属性のデフォルト値は-1であり、これはアイドル状態の接続の無限な数を示します。max-totalパラメーターは、組み合わされたサーバーセット内の永続的な接続の最大数を示します。この属性のデフォルト設定は-1であり、これは接続の無限な数を示します。min-idle-timeパラメーターは、常に利用可能にする必要のある (各サーバーの) アイドル状態の接続の最小数のターゲット値を設定します。パラメーターが正の数値とtimeBetweenEvictionRunsMillis> 0 に設定される場合、アイドル状態の接続のエビクションスレッドが実行されるたびに、各サーバーでminIdleアイドルインスタンスを利用できるように十分な数のアイドルインスタンスを作成しようとします。このパラメーターのデフォルト設定は1です。eviction-intervalパラメーターは、アイドル接続の検査の「実行」前にエビクションスレッドをスリープ状態にする必要のある時間を示します。正の数値でない場合、エビクションスレッドは起動しません。このパラメーターのデフォルト設定は120000ミリ秒、つまり 2 分です。min-evictable-idle-timeパラメーターは、アイドル時間により接続がエビクションの候補となる前にプール内でアイドル状態になる最小時間を指定します。正の数値でない場合、アイドル時間によりプールからドロップされる接続はありません。この設定はtimeBetweenEvictionRunsMillis> 0 でない限り影響を与えません。このパラメーターのデフォルト設定は1800000つまり (30 分) です。test-idleパラメーターは、アイドル接続のエビクションの実行時に TCP パケットをサーバーに送信してアイドル状態の接続を検証するかどうかを示します。検証に失敗する接続はプールからドロップします。この設定はtimeBetweenEvictionRunsMillis> 0 でない限り影響を与えません。このパラメーターのデフォルト設定はtrueです。
relative-toパラメーターは、キャッシュ状態を格納するためのベースディレクトリーを指定します。pathパラメーターはキャッシュ状態を格納するためのrelative-toパラメーター内の位置を指定します。sharedパラメーターは、キャッシュストアを共有するかどうかを指定します。LevelDB キャッシュストアのこのパラメーターについてサポートされる唯一の値はfalseです。preloadパラメーターは、キャッシュストアをプリロードするかどうかを指定します。有効な値はtrueとfalseです。block-sizeパラメーターはキャッシュストアのブロックサイズを定義します。singletonパラメーターは、SingletonStore の委譲するキャッシュストアを有効にします。これは、クラスター内の唯一のインスタンスが基礎となるストアと通信する場合にのみ使用されます。デフォルト値はfalseです。cache-sizeパラメーターはキャッシュストアのキャッシュサイズを定義します。clear-thresholdパラメーターはキャッシュストアのキャッシュクリアのしきい値を定義します。
persistence-unit属性は、JPA キャッシュストアの名前を指定します。entity-class属性は、キャッシュエントリー値を格納するために使用する JPA エントリーの完全修飾クラス名を指定します。batch-size(オプション) 属性は、キャッシュストアストリーミングのバッチサイズを指定します。この属性のデフォルト値は100です。store-metadata(オプション) 属性は、キャッシュストアがメタデータ (失効やバージョンに関する情報など) を保持するかどうかを指定します。この属性のデフォルト値はtrueです。singletonパラメーターは、SingletonStore の委譲するキャッシュストアを有効にします。これは、クラスター内の唯一のインスタンスが基礎となるストアと通信する場合にのみ使用されます。デフォルト値はfalseです。
fetch-stateパラメーターは、クラスターへ参加する時に永続状態が取り込まれるかを決定します。クラスター環境でレプリケーションとインバリデーションを使用している場合は、これをtrueに設定します。さらに、複数のキャッシュストアがチェーン化されている場合、1 つのキャッシュストアのみがこのプロパティーを有効に設定できます。共有キャッシュストアが使用されている場合、キャッシュは、このプロパティーがtrueに設定されているにも関わらず、永続状態の転送を許可しません。fetch-stateパラメーターはデフォルトではfalseに設定されます。singletonパラメーターは、SingletonStore の委譲するキャッシュストアを有効にします。これは、クラスター内の唯一のインスタンスが基礎となるストアと通信する場合にのみ使用されます。デフォルト値はfalseです。purgeパラメーターは、初回の起動時にキャッシュストアをパージするかどうかを指定します。key-to-string-mapperパラメーターは、キーをデータベーステーブルの文字列にマップするために使用されるクラス名を指定します。
connection-urlパラメーターは、JDBC ドライバー固有の接続 URL を指定します。usernameパラメーターには、connection-urlで接続するために使用されるユーザー名が含まれます。passwordには、connection-urlで接続する際に使用するパスワードが含まれます。driverパラメーターは、データベースに接続するために使用されるドライバーのクラス名を指定します。
prefix属性は、キャッシュバケットテーブルの名前を作成する際に、ターゲットキャッシュの名前に付与される文字列を定義します。drop-on-exitパラメーターは、シャットダウン時にデータベーステーブルがドロップされるかどうかを指定します。create-on-startパラメーターは、スタートアップ時にストアによってデータベーステーブルが作成されるかどうかを指定します。fetch-sizeパラメーターは、このテーブルからクエリーを実行する際に使用するサイズを指定します。このパラメーターを使用し、クエリーのサイズが大きくなった場合のヒープメモリーの消費を防ぎます。batch-sizeパラメーターは、このテーブルの変更時に使用されるバッチサイズを指定します。
nameパラメーターは、使用される列の名前を指定します。typeパラメーターは、使用される列のタイプを指定します。
classパラメーターは、キャッシュストア実装のクラス名を指定します。preloadパラメーターは、起動中にエントリーをキャッシュにロードするかどうかを指定します。このパラメーターの有効な値はtrueとfalseです。sharedパラメーターは、キャッシュストアを共有するかどうかを指定します。これは、複数のキャッシュインスタンスがキャッシュストアを共有する場合に使用されます。このパラメーターに有効な値はtrueとfalseです。
プロパティーは、プロパティータグ間のエントリーを保存された値にしてキャッシュストアの内部に定義できます。たとえば、以下の例では 1 の値が minOccurs に定義されます。
<property name="minOccurs">1</property>
<property name="minOccurs">1</property>
name属性は、プロパティーの名前を指定します。
19.3. キャッシュストア設定の詳細 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
- キャッシュの名前を指定するため、
local-cache属性のnameパラメーターが使用されます。 statisticsパラメーターは、コンテナーレベルで統計を有効にするかどうかを指定します。statistics属性をfalseに設定することにより、キャッシュごとに統計を有効または無効にします。
file-store要素のnameパラメーターが、ファイルストアの名前を指定するために使用されます。passivationパラメーターは、キャッシュのエントリーがパッシベートされるか (true) またはキャッシュストアが内容のコピーをメモリーに保持するか (false) を決定します。purgeパラメーターは、起動時にキャッシュストアをパージするかどうかを指定します。 このパラメーターの有効な値はtrueとfalseです。sharedパラメーターは、複数のキャッシュインスタンスがキャッシュストアを共有する場合に使用されます。このパラメーターは、複数のキャッシュインスタンスが同じ変更内容を複数回書き込まないようにするために設定することができます。このパラメーターに有効な値はtrueとfalseです。ただし、sharedパラメーターは LevelDB キャッシュストアには推奨されません (このキャッシュストアを共有できないため)。relative-toプロパティーは、file-storeがデータを保存するディレクトリーです。これは名前付きのパスを定義するために使用されます。pathプロパティーは、データが保存されるファイルの名前です。これは、完全パスを決定するためにrelative-toプロパティーの値に追加される相対パス名です。max-entriesパラメーターは、許可されるエントリーの最大数を指定します。無制限のエントリーの場合のデフォルト値は -1 です。fetch-stateパラメーターは、true に設定されている場合に、クラスターへ参加する際に永続状態を取り込みます。複数のキャッシュストアがチェーン化されている場合、その内の 1 つのみでこのプロパティーを有効にできます。共有キャッシュストアが使用されている場合、永続状態の転送は、データを提供する同じ永続ストアが永続状態を受信するだけなので意味をなしません。そのため、共有キャッシュストアが使用されている場合、キャッシュストアでこのプロパティーがtrueに設定されている場合であっても、永続状態の転送は許可されません。クラスター化環境でのみこのプロパティーを true に設定することが推奨されます。このパラメーターのデフォルト値は false です。preloadパラメーターは、true に設定されている場合に、キャッシュの起動時にキャッシュストアに保存されたデータをメモリーにロードします。ただし、このパラメーターを true に設定することにより、起動時間が増加するためパフォーマンスへの影響があります。このパラメーターのデフォルト値は false です。singletonパラメーターは、シングルトンストアのキャッシュストアを有効にします。SingletonStore は、クラスター内の唯一のインスタンスが基礎となるストアと通信する場合にのみ使用される委譲するキャッシュストアです。ただし、singletonパラメーターはfile-storeには推奨されません。デフォルト値はfalseです。
classパラメーターは、キャッシュストア実装のクラス名を指定します。
nameパラメーターは、プロパティーの名前を指定します。valueパラメーターは、プロパティーに割り当てられた値を指定します。
cacheパラメーターは、リモートキャッシュの名前を定義します。定義されない状態のままの場合、デフォルトのキャッシュが代わりに使用されます。socket-timeoutパラメーターは、SO_TIMEOUTで定義される値 (ミリ秒単位) が指定されるタイムアウトでリモート Hot Rod サーバーに適用されるかどうかを設定します。タイムアウト値が0の場合は、無限のタイムアウトを示します。デフォルト値は 60,000 ms (ミリ秒) または 1 分です。tcp-no-delayは、TCP_NODELAYがソケット接続でリモートの Hot Rod サーバーに適用されるかどうかを設定します。hotrod-wrappingは、リモートストア上でラッパーが Hot Rod に必要となるかどうかを設定します。singletonパラメーターは、SingletonStore の委譲するキャッシュストアを有効にします。これは、クラスター内の唯一のインスタンスが基礎となるストアと通信する場合にのみ使用されます。デフォルト値はfalseです。
outbound-socket-bindingパラメーターは、リモートサーバーのアウトバウンドソケットバインディングを設定します。
datasourceパラメーターは、データソースの JNDI 名を定義します。passivationパラメーターは、キャッシュのエントリーがパッシベートされるか (true) またはキャッシュストアが内容のコピーをメモリーに保持するか (false) を決定します。preloadパラメーターは、起動中にエントリーをキャッシュにロードするかどうかを指定します。このパラメーターの有効な値はtrueとfalseです。purgeパラメーターは、起動時にキャッシュストアをパージするかどうかを指定します。 このパラメーターの有効な値はtrueとfalseです。sharedパラメーターは、複数のキャッシュストアインスタンスがキャッシュストアを共有する場合に使用されます。複数のキャッシュインスタンスが同じ変更内容を複数回書き込まないようにするため、このパラメーターを設定することができます。このパラメーターに有効な値はtrueとfalseです。singletonパラメーターは、シングルトンストアのキャッシュストアを有効にします。SingletonStore は、クラスター内の唯一のインスタンスが基礎となるストアと通信する場合にのみ使用される委譲キャッシュストアです。
prefixパラメーターはデータベーステーブル名のプレフィックスの文字列を指定します。
nameパラメーターはデータベース列の名前を指定します。typeパラメーターはデータベース列のタイプを指定します。
relative-toパラメーターは、キャッシュ状態を格納するためのベースディレクトリーを指定します。この値はデフォルトでjboss.server.data.dirになります。pathパラメーターは、キャッシュ状態が格納されるrelative-toパラメーターで指定されたディレクトリー内の場所を指定します。未定義の場合、パスのデフォルト値はキャッシュコンテナーの名前になります。passivationパラメーターは、LevelDB キャッシュストアに対してパッシベーションを有効にするかどうかを指定します。有効な値はtrueとfalseです。singletonパラメーターは、SingletonStore の委譲するキャッシュストアを有効にします。これは、クラスター内の唯一のインスタンスが基礎となるストアと通信する場合にのみ使用されます。デフォルト値はfalseです。purgeパラメーターは、起動時にキャッシュストアをパージするかどうかを指定します。有効な値はtrueとfalseです。
19.4. 単一ファイルキャッシュストア リンクのコピーリンクがクリップボードにコピーされました!
SingleFileCacheStore が含まれています。
SingleFileCacheStore は、単純なファイルシステムベースの実装であり、古くなったファイルシステムベースのキャッシュストアである FileCacheStore の代わりになるものです。
SingleFileCacheStore は、単一ファイルに、すべてのキーバリューペアと、それらの対応するメタデータ情報を保存します。データ検索のスピードを速めるために、すべてのキーとそれらの値およびメタデータの位置をメモリーに保存します。そのため、単一ファイルキャッシュストアを使用すると、キーのサイズと保存されるキーの数量に応じて、必要なメモリーが若干増加します。そのため、SingleFileCacheStore は、キーが大きすぎる場合のユースケースでは推奨されません。
SingleFileCacheStore には制限があるため、実稼働環境では制限内での使用が可能です。適切なファイルロックがなく、データが破損する原因となるため、共有ファイルシステム (NFS や Windows の共有など) 上では使用しないでください。また、ファイルシステムは本質的にトランザクションではないため、トランザクションコンテキストでキャッシュが使用されると、コミットフェーズ中にファイルが障害を書き込む原因となります。
19.4.1. 単一ファイルストアの設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
19.4.2. 単一ファイルストアの設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
19.4.3. JBoss Data Grid キャッシュストアのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
19.5. LevelDB キャッシュストア リンクのコピーリンクがクリップボードにコピーされました!
19.5.1. LevelDB キャッシュストアの設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
手順19.1 LevelDB キャッシュストアの設定
- データベースを設定するには、
standalone.xmlのキャッシュ定義に以下の要素を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記
ディレクトリーがない場合は自動的に作成されます。
19.5.2. LevelDB キャッシュストアの XML 設定例 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
19.5.3. JBoss Operations Network を使用した LevelDB キャッシュストアの設定 リンクのコピーリンクがクリップボードにコピーされました!
手順19.2
- Red Hat JBoss Operations Network 3.2 以上がインストールされ、起動されていることを確認します。
- JBoss Operations Network 3.2.0 用 Red Hat JBoss Data Grid プラグインパックをインストールします。
- JBoss Data Grid がインストールされ、起動されていることを確認します。
- JBoss Data Grid サーバーをインベントリーにインポートします。
- JBoss Data Grid 接続設定を実行します。
- 以下のように新しい LevelDB キャッシュストアを作成します。
図19.1 新しい LevelDB キャッシュストアの作成
defaultキャッシュを右クリックします。- メニューで、 オプションにカーソルを置きます。
- サブメニューで、 をクリックします。
- 以下のように新しい LevelDB キャッシュストアの名前を指定します。
図19.2 新しい LevelDB キャッシュストアの名前指定
- 表示された Resource Create Wizard で、新しい LevelDB キャッシュストアの名前を追加します。
- をクリックして作業を継続します。
- 以下のように LevelDB キャッシュストアを設定します。
図19.3 LevelDB キャッシュストアの設定
- 設定ウィンドウのオプションを使用して新しい LevelDB キャッシュストアを設定します。
- をクリックして設定を完了します。
- 以下のように再起動操作をスケジュールします。
図19.4 再起動操作のスケジュール
- 画面の左パネルで、JBossAS7 Standalone Servers エントリーを展開します (まだ展開されていない場合)。
- 展開されたメニュー項目から JDG (0.0.0.0:9990) をクリックします。
- 画面の右パネルに、選択されたサーバーの詳細が表示されます。 タブをクリックします。
- Operation ドロップダウンボックスで、Restart 操作を選択します。
- Now エントリーのラジオボタンを選択します。
- をクリックしてサーバーをすぐに再起動します。
- 以下のように新しい LevelDB キャッシュストアを検出します。
図19.5 新しい LevelDB キャッシュストアの検出
- 画面の左パネルで、指定された順序で次の項目を選択して展開します: → → → → → → →
- 新しい LevelDB キャッシュストアの名前をクリックして右パネルの設定情報を表示します。
19.6. JDBC ベースのキャッシュストア リンクのコピーリンクがクリップボードにコピーされました!
JdbcBinaryStore。JdbcStringBasedStore。JdbcMixedStore。
19.6.1. JdbcBinaryStores リンクのコピーリンクがクリップボードにコピーされました!
JdbcBinaryStore はすべてのキータイプをサポートします。同じテーブル行/Blob の同じハッシュ値 (キー上の hashCode メソッド) を持つすべてのキーを格納します。組み込まれるキーに共通するハッシュ値が、テーブルの行/Blob の主キーとして設定されます。このハッシュ値により、JdbcBinaryStore は大変優れた柔軟性を提供しますが、これにより平行性とスループットのレベルが下がります。
k1、k2、k3) のハッシュコードが同じである場合、同じテーブル行に格納されます。3 つの異なるスレッドが k1、k2、k3 を同時に更新しようとすると、すべてのキーが同じ行を共有するため同時には更新できないことから、順次更新する必要があります。
19.6.1.1. JdbcBinaryStore の設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
JdbcBinaryStore の設定です。
19.6.1.2. JdbcBinaryStore の設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
JdbcBinaryStore の設定例です。
19.6.2. JdbcStringBasedStores リンクのコピーリンクがクリップボードにコピーされました!
JdbcStringBasedStore は複数のエントリーを各行にグループ化せずに、各エントリーをテーブルの独自の行に格納するため、同時負荷の下でスループットが増加します。また、各キーを String オブジェクトへマッピングする (プラグ可能な) バイジェクション (bijection) も使用します。Key2StringMapper インターフェースはバイジェクションを定義します。
DefaultTwoWayKey2StringMapper と呼ばれるデフォルトの実装が含まれています。
19.6.2.1. JdbcStringBasedStore の設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
JdbcStringBasedStore の設定例です。
19.6.2.2. JdbcStringBasedStore 設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
JdbcStringBasedStore の設定例は次のとおりです。
19.6.2.3. JdbcStringBasedStore の複数ノード設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
JdbcStringBasedStore の設定になります。この設定は、複数のノードを使用しなければならない場合に使用されます。
19.6.3. JdbcMixedStores リンクのコピーリンクがクリップボードにコピーされました!
JdbcMixedStore は、キーのタイプを基にキーを JdbcBinaryStore または JdbcStringBasedStore に委譲するハイブリッド実装です。
19.6.3.1. JdbcMixedStore の設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
JdbcMixedStore の設定です。
19.6.3.2. JdbcMixedStore の設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
JdbcMixedStore の設定例です。
19.6.4. キャッシュストアのトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
19.6.4.1. JdbcStringBasedStore の IOExceptions リンクのコピーリンクがクリップボードにコピーされました!
JdbcStringBasedStore を使用している時に IOException Unsupported protocol version 48 エラーが発生した場合は、データ列タイプが正しいタイプである BLOB や VARBINARY ではなく、VARCHAR や CLOB などに設定されていることを示しています。JdbcStringBasedStore は文字列であるキーのみを必要とし、値はバイナリー列に保存されるため、すべてのデータタイプを値に使用できます。
19.7. リモートキャッシュストア リンクのコピーリンクがクリップボードにコピーされました!
RemoteCacheStore は、リモート Red Hat JBoss Data Grid クラスターにデータを保存するキャッシュローダーの実装です。RemoteCacheStore は Hot Rod クライアントサーバーアーキテクチャーを使用してリモートクラスターと通信します。
RemoteCacheStore とクラスター間の接続を細かく調整する機能も提供します。
19.7.1. リモートキャッシュストアの設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
19.7.2. リモートキャッシュストアの設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
19.7.3. リモートキャッシュストアのアウトバウンドソケットの定義 リンクのコピーリンクがクリップボードにコピーされました!
standalone.xml ファイルの outbound-socket-binding 要素を使用して定義されます。
standalone.xml ファイルにおけるこの設定の例は次のとおりです。
例19.1 アウトバウンドソケットの定義
19.8. JPA キャッシュストア リンクのコピーリンクがクリップボードにコピーされました!
重要
19.8.1. JPA キャッシュストアの XML 設定例 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
infinispan.xml ファイルに追加します。
19.8.2. データベースへのメタデータの格納 リンクのコピーリンクがクリップボードにコピーされました!
storeMetadata が true (デフォルト値) に設定された場合、有効期限、作成および変更タイムスタンプ、バージョンなどのエントリーに関するメタ情報はデータベースに格納されます。エンティティーテーブルのレイアウトは固定され、メタデータを収めることができないため、JBoss Data Grid はメタデータを __ispn_metadata__ という名前の追加テーブルにメタデータを格納します。
手順19.3 persistence.xml でのメタデータエンティティーの設定
- Hibernate を JPA 実装として使用すると、以下のように
persistence.xmlのプロパティーhibernate.hbm2ddl.autoを使用してこれらのテーブルの自動作成を許可できます。<property name="hibernate.hbm2ddl.auto" value="update"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 以下の内容を
persistence.xmlに追加して、JPA プロバイダーに対してメタデータエンティティークラスを宣言します。<class>org.infinispan.persistence.jpa.impl.MetadataEntity</class>
<class>org.infinispan.persistence.jpa.impl.MetadataEntity</class>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
storeMetadata 属性を false に設定します。
19.8.3. 各種のコンテナーでの JPA キャッシュストアのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-cachestore-jpa</artifactId>
<version>8.3.0.Final-redhat-1</version>
</dependency>
<dependency>
<groupId>org.infinispan</groupId>
<artifactId>infinispan-cachestore-jpa</artifactId>
<version>8.3.0.Final-redhat-1</version>
</dependency>
手順19.4 JBoss EAP 6.3.x およびそれ以前のバージョンでの JPA キャッシュストアのデプロイ
- JBoss Data Grid モジュールの依存関係をアプリケーションのクラスパスに追加するには、以下のいずれかの方法で JBoss EAP デプロイヤーに依存関係のリストを提供します。
- 依存関係設定を
MANIFEST.MFファイルに追加します。Manifest-Version: 1.0 Dependencies: org.infinispan:jdg-7.0 services, org.infinispan.persistence.jpa:jdg-7.0 services
Manifest-Version: 1.0 Dependencies: org.infinispan:jdg-7.0 services, org.infinispan.persistence.jpa:jdg-7.0 servicesCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 依存関係設定を
jboss-deployment-structure.xmlファイルに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
手順19.5 JBoss EAP 6.4 以降での JPA キャッシュストアのデプロイ
persistence.xmlで以下のプロパティーを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow jboss-deployment-structure.xmlで以下の依存関係を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 追加の JDG モジュールなどの依存関係を
jboss-deployment-structure.xmlのdependenciesセクションに追加します。
重要
19.9. Cassandra キャッシュストア リンクのコピーリンクがクリップボードにコピーされました!
auto-create-keyspace パラメーターを有効にして実行できます。キースペースの作成例は以下のとおりです。
CREATE KEYSPACE IF NOT EXISTS Infinispan WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};
CREATE TABLE Infinispan.InfinispanEntries (key blob PRIMARY KEY, value blob, metadata blob);
CREATE KEYSPACE IF NOT EXISTS Infinispan WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};
CREATE TABLE Infinispan.InfinispanEntries (key blob PRIMARY KEY, value blob, metadata blob);
19.9.1. Cassandra キャッシュストアの有効化 リンクのコピーリンクがクリップボードにコピーされました!
ライブラリーモード:infinispan-cachestore-cassandra-8.3.0.final-redhat-1-deployable.jarはjboss-datagrid-${jdg-version}-library/ディレクトリーに組み込まれており、Cassandra キャッシュストアを使用しているすべてのプロジェクトに追加できます。リモートクライアントサーバーモード: Cassandra キャッシュストアはサーバーのmodules/ディレクトリーに事前にパッケージ化されており、追加の設定なしにデフォルトで使用できます。JBoss EAP の JBoss Data Grid モジュール: Cassandra キャッシュストアは配信されるモジュールに組み込まれており、モジュール名としてorg.infinispan.persistence.cassandraを使用して追加できます。
19.9.2. Cassandra キャッシュストアの XML 設定例 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.persistence.cassandra.CassandraStore を使用し、プロパティーをストア内に個別に定義することによって定義されます。
19.9.3. Cassandra キャッシュストアの XML 設定例 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
- オプション 1: 「Cassandra キャッシュストアの XML 設定例 (リモートクライアントサーバーモード)」で説明されている リモートクライアントサーバーモードで使用されるのと同じメソッドの使用。
- オプション 2:
cassandra-storeスキーマの使用。以下のスニペットは、Cassandra キャッシュストアを定義する設定例を示しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
19.9.4. Cassandra 設定パラメーター リンクのコピーリンクがクリップボードにコピーされました!
cassandra-server 要素を設定に指定できます。要素のそれぞれには以下のプロパティーがあります。
| パラメーター名 | 説明 | デフォルト値 |
|---|---|---|
host | Cassandra サーバーのホスト名または IP アドレス。 | 127.0.0.1 |
port | サーバーがリッスンしているポート。 | 9042 |
| パラメーター名 | 説明 | デフォルト値 |
|---|---|---|
auto-create-keyspace | キースペースおよびエントリーテーブルを起動時に自動作成する必要があるかどうかを決定します。 | true |
keyspace | 使用するキースペースの名前。 | Infinispan |
entry-table | エントリーを格納するテーブルの名前。 | InfinispanEntries |
consistency-level | クエリーに使用する整合性レベル | LOCAL_ONE |
serial-consistency-level | クエリーに使用するシリアル整合性レベル | SERIAL |
connection-pool も以下の要素で定義できます。
| パラメーター名 | 説明 | デフォルト値 |
|---|---|---|
pool-timeout-millis | ホストプールからの接続が利用できない場合にドライバーがブロックする時間。このタイムアウトの後にドライバーは次のホストを試行します。 | 5 |
heartbeat-interval-seconds | アクティビティーが実行されていない場合に接続がドロップされるのを防ぐためのアプリケーション側のハートビート。無効にするには 0 に設定します。 | 30 |
idle-timeout-seconds | アイドル接続が削除される前のタイムアウト。 | 120 |
19.10. カスタムキャッシュストア リンクのコピーリンクがクリップボードにコピーされました!
CacheLoaderCacheWriterAdvancedCacheLoaderAdvancedCacheWriterExternalStoreAdvancedLoadWriteStore
注記
AdvancedCacheWriter が実装されない場合は、該当するライターを使用して、失効したエントリーをパージまたはクリアできません。
注記
AdvancedCacheLoader が実装されない場合、該当するローダーに格納されたエントリーはプリロードに使用されません。
SingleFileStore などを使用します。SingleFileStore サンプルコードを参照するには、JBoss Data Grid ソースコードをダウンロードします。
SingleFileStore サンプルコードをダウンロードします。
手順19.6 JBoss Data Grid ソースコードのダウンロード
- Red Hat カスタマーポータルにアクセスするには、ブラウザーで https://access.redhat.com/home に移動します。
- をクリックします。
- JBoss 開発および管理 というラベルの付いたセクションで、 をクリックします。
- Red Hat login フィールドと Password フィールドに該当する認証情報を入力し、 をクリックします。
- ダウンロード可能なファイルのリストから、Red Hat JBoss Data Grid 7 ソースコード を見つけ、 をクリックします。ファイルを必要な場所に保存し、展開します。
jboss-datagrid-7.0.0-sources/infinispan-8.3.0.Final-redhat-1-src/core/src/main/java/org/infinispan/persistence/file/SingleFileStore.javaでSingleFileStoreソースコードを見つけます。
19.10.1. カスタムキャッシュストアの Maven アーキタイプ リンクのコピーリンクがクリップボードにコピーされました!
手順19.7 Maven アーキタイプの生成
- JBoss Data Grid Maven リポジトリーが Red Hat JBoss Data Grid の 『Getting Started Guide』に記載された手順に従ってインストールされていることを確認します。
- コマンドプロンプトを開き、以下のコマンドを実行して現在のディレクトリーでアーキタイプを生成します。
mvn -Dmaven.repo.local="path/to/unzipped/jboss-datagrid-7.0.0-maven-repository/" archetype:generate -DarchetypeGroupId=org.infinispan -DarchetypeArtifactId=custom-cache-store-archetype -DarchetypeVersion=8.3.0.Final-redhat-1
mvn -Dmaven.repo.local="path/to/unzipped/jboss-datagrid-7.0.0-maven-repository/" archetype:generate -DarchetypeGroupId=org.infinispan -DarchetypeArtifactId=custom-cache-store-archetype -DarchetypeVersion=8.3.0.Final-redhat-1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記
読みやすさを目的として上記のコマンドは複数の行に分割されていますが、実行時にはコマンドとすべての引数を 1 つの行で指定する必要があります。
19.10.2. カスタムキャッシュストアの設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
例19.2 カスタムキャッシュストアの設定
<distributed-cache name="cacheStore" mode="SYNC" segments="20" owners="2" remote-timeout="30000">
<store class="my.package.CustomCacheStore">
<property name="customStoreProperty">10</property>
</store>
</distributed-cache>
<distributed-cache name="cacheStore" mode="SYNC" segments="20" owners="2" remote-timeout="30000">
<store class="my.package.CustomCacheStore">
<property name="customStoreProperty">10</property>
</store>
</distributed-cache>
19.10.2.1. オプション 1: デプロイメントを使用してカスタムキャッシュストアを追加 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
手順19.8 デプロイメントを使用してカスタムキャッシュストア .jar ファイルを JDG サーバーにデプロイ
- 以下の Java サービスローダーファイル
META-INF/services/org.infinispan.persistence.spi.AdvancedLoadWriteStoreをモジュールに追加し、以下のように参照をカスタムキャッシュストアクラスに追加します。my.package.CustomCacheStore
my.package.CustomCacheStoreCopy to Clipboard Copied! Toggle word wrap Toggle overflow - jar を
$JDG_HOME/standalone/deployments/ディレクトリーにコピーします。 - .jar ファイルがサーバーで利用可能な場合は、以下のメッセージがログに表示されます。
JBAS010287: Registering Deployed Cache Store service for store 'my.package.CustomCacheStore'
JBAS010287: Registering Deployed Cache Store service for store 'my.package.CustomCacheStore'Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 「カスタムキャッシュストア」で示されたように、
infinispan-coreサブシステムで、インターフェースをオーバーライドするクラスを指定してcache-container内部にキャッシュのエントリーを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
19.10.2.2. オプション 2: CLI を使用してカスタムキャッシュストアを追加 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
手順19.9 CLI を使用してカスタムキャッシュストア .jar ファイルを JDG サーバーにデプロイ
- 以下のコマンドを実行して JDG サーバーに接続します。
[$JDG_HOME] $ bin/cli.sh --connect --controller=$IP:$PORT
[$JDG_HOME] $ bin/cli.sh --connect --controller=$IP:$PORTCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 以下のコマンドを実行して、.jar ファイルをデプロイします。
deploy /path/to/artifact.jar
deploy /path/to/artifact.jarCopy to Clipboard Copied! Toggle word wrap Toggle overflow
19.10.2.3. オプション 3: JON を使用してカスタムキャッシュストアを追加 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
手順19.10 JBoss Operation Network を使用してカスタムキャッシュストア .jar ファイルを JDG サーバーにデプロイ
- JON ログインします。
- 上部のバーの
Bundlesに移動します。 Newボタンをクリックし、Recipeラジオボタンを選択します。- 以下の例のように、ストアを参照するデプロイメントバンドルファイルの内容を挿入します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Nextボタンを押しBundle Groups設定ウィザードページに進み、もう一度Nextボタンを押します。- ファイルアップローダーでカスタムキャッシュストア
.jarファイルを指定し、Uploadを押してファイルをアップロードします。 Nextボタンを押し、Summary設定ウィザードページに進みます。バンドル設定を終了するためにFinishボタンを押します。- 上部のバーの
Bundlesタブに戻ります。 - 新しく作成されたバンドルを選択し、
Deployボタンをクリックします。 Destination Nameを入力し、適切なリソースグループを選択します。このグループは JDG サーバーでのみ構成される必要があります。Base LocationのラジオボックスグループからInstall Directoryを選択します。- 下の
Deployment Directoryテキストフィールドに/standalone/deploymentsと入力します。 - デフォルトのオプションを使用してウィザードを続行します。
- サーバーのホストで以下のコマンドを使用してデプロイメントを検証します。
find $JDG_HOME -name "custom-store.jar"
find $JDG_HOME -name "custom-store.jar"Copy to Clipboard Copied! Toggle word wrap Toggle overflow - バンドルが
$JDG_HOME/standalone/deploymentsにインストールされていることを確認します。
注記
19.10.3. カスタムキャッシュストアの設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
例19.3 カスタムキャッシュストアの設定
注記
パート VIII. パッシベーションのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
第20章 アクティベーションモードとパッシベーションモード リンクのコピーリンクがクリップボードにコピーされました!
20.1. パッシベーションモードの利点 リンクのコピーリンクがクリップボードにコピーされました!
20.2. パッシベーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
passivation パラメーターをキャッシュストア要素に追加します。
例20.1 リモートクライアントサーバーモードでのパッシベーションの切り替え
<local-cache name="customCache"/> <!-- Additional configuration elements for local-cache here --> <file-store passivation="true" <!-- Additional configuration elements for file-store here --> </local-cache>
<local-cache name="customCache"/>
<!-- Additional configuration elements for local-cache here -->
<file-store passivation="true"
<!-- Additional configuration elements for file-store here -->
</local-cache>
passivation パラメーターを persistence 要素に追加します。
例20.2 ライブラリーモードでのパッシベーションの切り替え
<persistence passivation="true"> <!-- Additional configuration elements here --> </persistence>
<persistence passivation="true">
<!-- Additional configuration elements here -->
</persistence>
20.3. エビクションとパッシベーション リンクのコピーリンクがクリップボードにコピーされました!
20.3.1. エビクションとパッシベーションの用途 リンクのコピーリンクがクリップボードにコピーされました!
- パッシベートされたエントリーに関する通知がキャッシュリスナーへ送信されます。
- エビクトされたエントリーが保存されます。
20.3.2. パッシベーションが無効な場合のエビクションの例 リンクのコピーリンクがクリップボードにコピーされました!
| 手順 | メモリー内のキー | ディスク上のキー |
|---|---|---|
keyOne の挿入 | メモリー: keyOne | ディスク: keyOne |
keyTwo の挿入 | メモリー: keyOne、 keyTwo | ディスク: keyOne、 keyTwo |
エビクションスレッドが実行され、keyOne をエビクトする | メモリー: keyTwo | ディスク: keyOne、 keyTwo |
keyOne の読み取り | メモリー: keyOne、 keyTwo | ディスク: keyOne、 keyTwo |
エビクションスレッドが実行され、keyTwo をエビクトする | メモリー: keyOne | ディスク: keyOne、 keyTwo |
keyTwo の削除 | メモリー: keyOne | ディスク: keyOne |
20.3.3. パッシベーションが有効な場合のエビクションの例 リンクのコピーリンクがクリップボードにコピーされました!
| 手順 | メモリー内のキー | ディスク上のキー |
|---|---|---|
keyOne の挿入 | メモリー: keyOne | ディスク: |
keyTwo の挿入 | メモリー: keyOne、 keyTwo | ディスク: |
エビクションスレッドが実行され、keyOne をエビクトする | メモリー: keyTwo | ディスク: keyOne |
keyOne の読み取り | メモリー: keyOne、 keyTwo | ディスク: |
エビクションスレッドが実行され、keyTwo をエビクトする | メモリー: keyOne | ディスク: keyTwo |
keyTwo の削除 | メモリー: keyOne | ディスク: |
パート IX. キャッシュ書き込みのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
第21章 キャッシュ書き込みモード リンクのコピーリンクがクリップボードにコピーされました!
- ライトスルー (同期)
- ライトビハインド (非同期)
21.1. ライトスルーキャッシング リンクのコピーリンクがクリップボードにコピーされました!
Cache.put() 呼び出し経由)、JBoss Data Grid が基盤のキャッシュストアを見つけ、更新するまで呼び出しが返されないようにします。この機能により、キャッシュストアへの更新をクライアントスレッド境界内で終了させることができます。
21.1.1. ライトスルーキャッシングのメリットとデメリット リンクのコピーリンクがクリップボードにコピーされました!
ライトスルーモードの主な利点は、キャッシュとキャッシュストアが同時に更新されるため、キャッシュストアとキャッシュの内容の整合性を保つことができることです。
キャッシュストアはキャッシュエントリーと同時に更新されるため、キャッシュストアへのアクセスや更新と同時に発生するキャッシュ操作のパフォーマンスが低下します。
21.1.2. ライトスルーキャッシングの設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
手順21.1 ライトスルーのローカルファイルキャッシュストアの設定
nameパラメーターは、使用するlocal-cacheの名前を指定します。fetch-stateパラメーターは、クラスターへ参加する時に永続状態が取り込まれるかを決定します。クラスター環境でレプリケーションとインバリデーションを使用している場合は、これをtrueに設定します。さらに、複数のキャッシュストアがチェーンされている場合、1 つのキャッシュストアのみがこのプロパティーを有効に設定できます。共有キャッシュストアが使用されている場合、キャッシュは、このプロパティーがtrueに設定されているにも関わらず、永続状態の転送を許可しません。fetch-stateパラメーターはデフォルトではfalseに設定されます。purgeパラメーターは、キャッシュの初回起動時にキャッシュがパージされるかどうかを制御します。sharedパラメーターは、複数のキャッシュストアインスタンスがキャッシュストアを共有する場合に使用され、キャッシュストアレベルで定義されるようになりました。複数のキャッシュインスタンスが同じ変更内容を複数回書き込まないようにするため、このパラメーターを設定することができます。このパラメーターに有効な値はtrueとfalseです。
21.2. ライトビハインドキャッシング リンクのコピーリンクがクリップボードにコピーされました!
21.2.1. スケジュール外のライトビハインドストラテジーについて リンクのコピーリンクがクリップボードにコピーされました!
21.2.2. スケジュール外のライトビハインドストラテジーの設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
write-behind 要素をターゲットキャッシュストアの設定に追加します。
手順21.2 write-behind 要素
write-behind 要素は次の設定パラメーターを使用します。
modification-queue-sizeパラメーターは、非同期ストアの変更キューサイズを設定します。更新がキャッシュストアがキューを処理するよりも速く行なわれる場合に、非同期ストアは同期ストアのように動作します。ストアの動作は、キューが要素を許可できるようになるまで同期された状態になり、要素をブロックします。その後ストアの動作は再び非同期になります。shutdown-timeoutパラメーターは、キャッシュストアがシャットダウンするまでのミリ秒単位の時間を指定します。ストアが停止している場合でも、いくらかの変更が依然として適用される必要がある場合があります。タイムアウトの値として大きな値を設定すると、データを損失する可能性が低くなります。このパラメーターのデフォルト値は25000です。flush-lock-timeoutパラメーターは、定期的にフラッシュされる状態を保護するロックを取得するための時間 (ミリ秒単位) を指定します。このパラメーターのデフォルト値は15000です。thread-pool-sizeパラメーターはスレッドプールのサイズを指定します。このスレッドプール内のスレッドによって、変更がキャッシュストアに適用されます。このパラメーターのデフォルト値は5です。
21.2.3. スケジュール外のライトビハインドストラテジーの設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
async 要素をストア設定に追加します。
手順21.3 async 要素
async 要素は次の設定パラメーターを使用します。
modificationQueueSizeパラメーターは、非同期ストアの変更キューサイズを設定します。更新がキャッシュストアがキューを処理するよりも速く行なわれる場合に、非同期ストアは同期ストアのように動作します。ストアの動作は、キューが要素を受け入れるまで同期が取られた状態のままになり、要素をブロックします。その後ストアの動作は再び非同期になります。shutdownTimeoutパラメーターは、キャッシュストアがシャットダウンされた後の時間 (ミリ秒単位) を指定します。これにより、キャッシュがシャットダウンされた際に非同期ライターがデータをストアへフラッシュする時間が提供されます。このパラメーターのデフォルト値は25000です。flushLockTimeoutパラメーターは、定期的にフラッシュする状態を保護するロックを取得するための時間 (ミリ秒単位) を指定します。このパラメーターのデフォルト値は15000です。threadPoolSizeパラメーターは、変更をストアに同時に適用するスレッドの数を指定します。このパラメーターのデフォルト値は5です。
パート X. キャッシュとキャッシュマネージャーのモニタリング リンクのコピーリンクがクリップボードにコピーされました!
第22章 Java Management Extensions (JMX) のセットアップ リンクのコピーリンクがクリップボードにコピーされました!
22.1. Java Management Extensions (JMX) について リンクのコピーリンクがクリップボードにコピーされました!
MBeans によって管理および監視されます。
22.2. Red Hat JBoss Data Grid における JMX の使用 リンクのコピーリンクがクリップボードにコピーされました!
22.3. JMX 統計レベル リンクのコピーリンクがクリップボードにコピーされました!
- 個別のキャッシュインスタンスによって管理情報が生成されるキャッシュレベル。
CacheManagerレベル。このレベルでは、CacheManagerエンティティーがCacheManagerより作成されたすべてのキャッシュインスタンスを管理します。そのため、管理情報は個別のキャッシュではなく、これらすべてのキャッシュインスタンスに対して生成されます。
重要
22.4. キャッシュインスタンスに対して JMX を有効にする リンクのコピーリンクがクリップボードにコピーされました!
デフォルトキャッシュインスタンスに対する <default> 要素内または特定のキャッシュに対するターゲット <local-cache> 要素下に、次のスニペットを追加します。
<jmxStatistics enabled="true"/>
<jmxStatistics enabled="true"/>
22.5. CacheManager に対して JMX を有効にする リンクのコピーリンクがクリップボードにコピーされました!
CacheManager レベルでは、宣言的に、またはプログラムを用いて次のように JMX 統計を有効にすることができます。
次の <global> 要素を追加して、CacheManager レベルで JMX を宣言的に有効にします。
<globalJmxStatistics enabled="true"/>
<globalJmxStatistics enabled="true"/>
22.6. ローリングアップグレードの使用時に JMX で CacheStore を無効にする リンクのコピーリンクがクリップボードにコピーされました!
RollingUpgradeManager MBean で disconnectSource 操作を呼び出すことで、JMX を使用して CacheStore を無効にすることができます。
関連トピック:
22.7. 複数の JMX ドメイン リンクのコピーリンクがクリップボードにコピーされました!
CacheManager インスタンスが 1 つの仮想マシンに存在したり、キャッシュインスタンスの名前が CacheManager と異なる場合に、複数の JMX ドメインが使用されます。
CacheManager に付けるようにします。
次のスニペットを関係する CacheManager 設定に追加します。
<globalJmxStatistics enabled="true" cacheManagerName="Hibernate2LC"/>
<globalJmxStatistics enabled="true" cacheManagerName="Hibernate2LC"/>
22.8. MBeans リンクのコピーリンクがクリップボードにコピーされました!
MBean は、サービス、コンポーネント、デバイス、またはアプリケーションなどの管理可能なリソースを表します。
MBeans を提供します。たとえば、トランスポート層で統計を提供する MBeans などが提供されます。JBoss Data Grid サーバーは、JMX 統計で設定されます。JMX 統計はホスト名、ポート、読み取りバイト、書き込みバイト、およびワーカースレッドの数を提供する MBean で、次の場所に存在します。
jboss.infinispan:type=Server,name=<Memcached|Hotrod>,component=Transport
jboss.infinispan:type=Server,name=<Memcached|Hotrod>,component=Transport
MBeans は、2 つの JMX ドメイン下で利用可能です。
- jboss.as - これらの
MBeansはサーバーサブシステムにより作成されます。 - jboss.infinispan - これらの
MBeansは、内蔵モードで作成されたものと対称的になります。
MBeans のみを使用する必要があります (jboss.as 下にあるものは Red Hat JBoss Enterprise Application Platform 用に使用されます)。
注記
22.8.1. MBean について リンクのコピーリンクがクリップボードにコピーされました!
MBean を使用できます。
- キャッシュマネージャーレベルの JMX 統計が有効になっている場合、
jboss.infinispan:type=CacheManager,name="DefaultCacheManager"という名前のMBeanが存在し、キャッシュマネージャーMBeanによってプロパティーが指定されます。 - キャッシュレベルの JMX 統計が有効になっている場合、使用される設定に応じて複数の
MBeanが表示されます。たとえば、ライトビハインドキャッシュストアが設定されている場合、キャッシュストアコンポーネントに属するプロパティーを公開するMBeanが表示されます。すべてのキャッシュレベルのMBeansは同じ形式を使用します。jboss.infinispan:type=Cache,name="<name-of-cache>(<cache-mode>)",manager="<name-of-cache-manager>",component=<component-name>
jboss.infinispan:type=Cache,name="<name-of-cache>(<cache-mode>)",manager="<name-of-cache-manager>",component=<component-name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow この形式の詳細は次のとおりです。cache-container要素のdefault-cache属性を使用してキャッシュのデフォルト名を指定します。cache-modeはキャッシュのキャッシュモードに置き換えられます。可能な列挙値を小文字にしたものがキャッシュモードを表します。component-nameは、 JMX 参考ドキュメントにある JMX コンポーネント名の 1 つに置き換えられます。
MBean の名前は次のようになります。
jboss.infinispan:type=Cache,name="default(dist_sync)", manager="default",component=CacheStore
jboss.infinispan:type=Cache,name="default(dist_sync)", manager="default",component=CacheStore
22.8.2. デフォルトでない MBean サーバーでの MBean の登録 リンクのコピーリンクがクリップボードにコピーされました!
getMBeanServer() メソッドが必要な (デフォルト以外の) MBeanServer を返すようにします。
次のスニペットを追加します。
<globalJmxStatistics enabled="true" mBeanServerLookup="com.acme.MyMBeanServerLookup"/>
<globalJmxStatistics enabled="true" mBeanServerLookup="com.acme.MyMBeanServerLookup"/>
第23章 JBoss Operations Network (JON) のセットアップ リンクのコピーリンクがクリップボードにコピーされました!
23.1. JBoss Operations Network (JON) について リンクのコピーリンクがクリップボードにコピーされました!
重要
重要
Update 04 以上のパッチバージョンで JBoss Operations Network 3.3.0 にアップグレードします。JBoss Operations Network のアップグレードについては、JBoss Operations Network 『Installation Guide』 の「Upgrading JBoss ON」のセクションを参照してください。
注記
23.2. JBoss Operations Network (JON) のダウンロード リンクのコピーリンクがクリップボードにコピーされました!
23.2.1. JBoss Operations Network (JON) インストールの前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Linux、Windows、または Mac OSX オペレーティングシステム、および x86_64、i686、または ia64 プロセッサー。
- JBoss Operations Network サーバーおよび JBoss Operations Network エージェントの両方を実行するには、Java 6 以上が必要です。
- JBoss Operations Network サーバーとエージェントで同期されたクロック。
- 外部データベースをインストールする必要があります。
23.2.2. JBoss Operations Network のダウンロード リンクのコピーリンクがクリップボードにコピーされました!
手順23.1 JBoss Operations Network のダウンロード
- Red Hat カスタマーポータルにアクセスするには、ブラウザーで https://access.redhat.com/home に移動します。
- をクリックします。
- JBoss 開発および管理 というラベルの付いたセクションで、 をクリックします。
- Red Hat login フィールドと Password フィールドに該当する認証情報を入力し、 をクリックします。
- Version ドロップダウンメニューリストから適切なバージョンを選択します。
- 必要なダウンロードファイルの横にある ボタンをクリックします。
23.2.3. リモート JMX ポートの値 リンクのコピーリンクがクリップボードにコピーされました!
23.2.4. JBoss Operations Network (JON) プラグインのダウンロード リンクのコピーリンクがクリップボードにコピーされました!
手順23.2 インストールファイルのダウンロード
- Web ブラウザーで http://access.redhat.com を開きます。
- ページ上部にあるメニュー内の をクリックします。
JBoss Development and Managementの下にあるリストで をクリックします。- ログイン情報を入力します。「Software Downloads」ページに移動します。
JBoss Operations Network プラグインをダウンロードします。
JBoss Data Grid の JBoss Operations Network プラグインを使用する予定であれば、Product ドロップダウンボックスか、または左側のメニューのいずれかからJBoss ON for Data Gridを選択します。Red Hat JBoss Operations Network VERSION Base Distributionボタンをクリックします。Data Grid Management Plugin Pack for JBoss ON VERSIONをダウンロードする手順を繰り返します。
23.3. JBoss Operations Network サーバーのインストール リンクのコピーリンクがクリップボードにコピーされました!
注記
23.4. JBoss Operations Network エージェント リンクのコピーリンクがクリップボードにコピーされました!
init.d スクリプトとして実行したりできます。
注記
23.5. リモートクライアントサーバーモードの JBoss Operations Network リンクのコピーリンクがクリップボードにコピーされました!
- インストールおよび設定操作の開始および実行。
- リソースおよびメトリックスの監視。
23.5.1. JBoss Operations Network プラグインのインストール (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
プラグインのインストール
- JBoss Data Grid サーバーの RHQ プラグインを
$JON_SERVER_HOME/pluginsにコピーします。 - JBoss Enterprise Application Platform プラグインを
$JON_SERVER_HOME/pluginsにコピーします。
サーバーはここでプラグインを自動的に検出し、これらをデプロイします。プラグインはデプロイメントが成功すると、プラグインディレクトリーから削除されます。プラグインの取得
JBoss Operations Network サーバーから利用可能なすべてのプラグインを取得します。これを実行するには、以下をエージェントのコンソールに入力します。plugins update
plugins updateCopy to Clipboard Copied! Toggle word wrap Toggle overflow インストール済みプラグインのリスト
以下のコマンドを使用して、JBoss Enterprise Application Platform プラグインと JBoss Data Grid サーバー rhq プラグインが正しくインストールされていることを確認します。plugins info
plugins infoCopy to Clipboard Copied! Toggle word wrap Toggle overflow
23.6. JBoss Operations Network リモートクライアントサーバーのプラグイン リンクのコピーリンクがクリップボードにコピーされました!
23.6.1. JBoss Operations Network プラグインのメトリックス リンクのコピーリンクがクリップボードにコピーされました!
| 特性名 | 表示名 | 説明 |
|---|---|---|
| cache-manager-status | Cache Container Status | キャッシュコンテナーの現在のランタイム状態。 |
| cluster-name | Cluster Name | クラスターの名前。 |
| members | Cluster Members | クラスターのメンバーの名前。 |
| coordinator-address | Coordinator Address | コーディネーターノードのアドレス。 |
| local-address | Local Address | ローカルノードのアドレス。 |
| version | Version | キャッシュマネージャーバージョン。 |
| defined-cache-names | Defined Cache Names | このマネージャーに定義されたキャッシュ。 |
| メトリック名 | 表示名 | 説明 |
|---|---|---|
| cluster-size | Cluster Size | クラスター内のメンバーの数。 |
| defined-cache-count | Defined Cache Count | このマネージャーに定義されたキャッシュの数。 |
| running-cache-count | Running Cache Count | このマネージャーで実行中のキャッシュの数。 |
| created-cache-count | Created Cache Count | このマネージャーで実際に作成されたキャッシュの数。 |
| 特性名 | 表示名 | 説明 |
|---|---|---|
| cache-status | Cache Status | キャッシュの現在のランタイム状態。 |
| cache-name | Cache Name | キャッシュの現在の名前。 |
| version | Version | キャッシュバージョン。 |
| メトリック名 | 表示名 | 説明 |
|---|---|---|
| cache-status | Cache Status | キャッシュの現在のランタイム状態。 |
| number-of-locks-available | [LockManager] Number of locks available | 現在利用可能な排他ロックの数。 |
| concurrency-level | [LockManager] Concurrency level | LockManager の設定済みの平行性レベル。 |
| average-read-time | [Statistics] Average read time | キャッシュでの読み取り操作が完了するまでに必要な平均のミリ秒数です。 |
| hit-ratio | [Statistics] Hit ratio | ヒット数 (試行が成功した回数) を試行の合計数で割った結果 (パーセント単位) です。 |
| elapsed-time | [Statistics] Seconds since cache started | キャッシュ起動後の秒数。 |
| read-write-ratio | [Statistics] Read/write ratio | キャッシュの読み取り/書き込み比率 (パーセント単位)。 |
| average-write-time | [Statistics] Average write time | キャッシュでの書き込み操作の完了に必要な平均のミリ秒数。 |
| hits | [Statistics] Number of cache hits | キャッシュヒット数。 |
| evictions | [Statistics] Number of cache evictions | キャッシュエビクション操作の数。 |
| remove-misses | [Statistics] Number of cache removal misses | キーが見つからなかった場合のキャッシュ除去の回数。 |
| time-since-reset | [Statistics] Seconds since cache statistics were reset | 最後にキャッシュ統計がリセットされてからの秒数。 |
| number-of-entries | [Statistics] Number of current cache entries | キャッシュ内の現在のエントリーの数。 |
| stores | [Statistics] Number of cache puts | キャッシュの put 操作の回数。 |
| remove-hits | [Statistics] Number of cache removal hits | キャッシュの remove 操作のヒット数。 |
| misses | [Statistics] Number of cache misses | キャッシュミスの数。 |
| success-ratio | [RpcManager] Successful replication ratio | 数値 (double) 形式でのレプリケーションの合計数に対する正常なレプリケーションの比率です。 |
| replication-count | [RpcManager] Number of successful replications | 成功したレプリケーションの数。 |
| replication-failures | [RpcManager] Number of failed replications | 失敗したレプリケーションの数。 |
| average-replication-time | [RpcManager] Average time spent in the transport layer | トランスポート層で費やされた平均時間 (ミリ秒単位)。 |
| commits | [Transactions] Commits | 最終リセット時から実行されるトランザクションのコミット数。 |
| prepares | [Transactions] Prepares | 最終リセット時から実行されるトランザクションの準備回数。 |
| rollbacks | [Transactions] Rollbacks | 最終リセット時から実行されるトランザクションのロールバック回数。 |
| invalidations | [Invalidation] Number of invalidations | インバリデーションの数。 |
| passivations | [Passivation] Number of cache passivations | パッシベーションイベントの数。 |
| activations | [Activations] Number of cache entries activated | アクティベーションイベントの数。 |
| cache-loader-loads | [Activation] Number of cache store loads | キャッシュストアからロードされるエントリーの数。 |
| cache-loader-misses | [Activation] Number of cache store misses | キャッシュストアに存在しなかったエントリーの数。 |
| cache-loader-stores | [CacheStore] Number of cache store stores | キャッシュストアに保存されるエントリーの数。 |
注記
Red Hat JBoss Data Grid の JBoss Operations Network (JON) プラグインによって提供されるメトリックスは、REST と Hot Rod エンドポイント用のみです。REST プロトコルの場合、データは Web サブシステムのメトリックスから取得する必要があります。これらのエンドポイントのそれぞれについてさらに詳しくは、『スタートガイド』を参照してください。
| メトリック名 | 表示名 | 説明 |
|---|---|---|
| bytesRead | Bytes Read | 読み込まれるバイト数。 |
| bytesWritten | Bytes Written | 書き込まれるバイト数。 |
注記
23.6.2. JBoss Operations Network プラグイン操作 リンクのコピーリンクがクリップボードにコピーされました!
| 操作名 | 説明 |
|---|---|
| Start Cache | キャッシュを起動します。 |
| Stop Cache | キャッシュを停止します。 |
| Clear Cache | キャッシュ内容をクリアします。 |
| Reset Statistics | キャッシュによって収集される統計をリセットします。 |
| Reset Activation Statistics | キャッシュによって収集されるアクティベーション統計をリセットします。 |
| Reset Invalidation Statistics | キャッシュによって収集されるインバリデーション統計をリセットします。 |
| Reset Passivation Statistics | キャッシュによって収集されるパッシベーション統計をリセットします。 |
| Reset Rpc Statistics | キャッシュによって収集されるレプリケーション統計をリセットします。 |
| Remove Cache | キャッシュコンテナーから所定のキャッシュを削除します。 |
| Record Known Global Keyset | アップグレードプロセスで取得するために、グローバルな既知のキーセットを既知のキーに記録します。 |
| Synchronize Data | 指定された移行プログラムを使用して、古いクラスターのデータをこれに同期します。 |
| Disconnect Source | 指定される移行プログラムに従って、ターゲットクラスターをソースクラスターから切り離します。 |
これらの操作に使用されるキャッシュバックアップは、データセンター間レプリケーションを使用して設定されます。JBoss Operations Network (JON) ユーザーインターフェースでは、それぞれのキャッシュバックアップはキャッシュの子になります。データセンター間のレプリケーションについてさらに詳しくは、35章データセンター間のレプリケーションのセットアップを参照してください。
| 操作名 | 説明 |
|---|---|
| status | サイトの状態を表示します。 |
| bring-site-online | サイトをオンラインにします。 |
| take-site-offline | サイトをオフラインにします。 |
Red Hat JBoss Data Grid は、リモートクライアントサーバーモードでのトランザクションの使用をサポートしません。結果として、いずれのエンドポイントでもトランザクションを使用することができません。
23.6.3. JBoss Operations Network プラグイン属性 リンクのコピーリンクがクリップボードにコピーされました!
| 属性名 | タイプ | 説明 |
|---|---|---|
| cluster | string | グループ通信クラスターの名前。 |
| executor | string | トランスポートに使用されるエグゼキューター。 |
| lock-timeout | long | トランスポートにおけるロックのタイムアウト期間。デフォルト値は 240000 です。 |
| machine | string | トランスポートのマシン ID。 |
| rack | string | トランスポートのラック ID。 |
| site | string | トランスポートのサイト ID。 |
| stack | string | トランスポートに使用される JGroups スタック。 |
23.6.4. JBoss Operations Network (JON) を使用した新しいキャッシュの作成 リンクのコピーリンクがクリップボードにコピーされました!
手順23.3 リモートクライアントサーバーモードでの新しいキャッシュの作成
- JBoss Operations Network コンソールにログインします。
- JBoss Operations Network コンソールに で をクリックします。
- コンソールの左側にある リストから を選択します。
- サーバーリストから特定の Red Hat JBoss Data Grid サーバーを選択します。
- サーバー名の下にある をクリックし、次に をクリックします。
- 新しく作成されたキャッシュの親になる任意のキャッシュコンテナーを選択します。
- 選択されたキャッシュコンテナーを右クリックします (例: )。
- コンテキストメニューで、 に移動し、 を選択します。
- リソース作成ウィザードで新しいキャッシュを作成します。
- 新しいキャッシュ名を入力し、 をクリックします。
- デプロイメントオプションでキャッシュ属性を設定し、 をクリックします。
注記
23.7. ライブラリーモードの JBoss Operations Network リンクのコピーリンクがクリップボードにコピーされました!
- インストールおよび設定操作の開始および実行。
- リソースおよびメトリックスの監視。
23.7.1. JBoss Operations Network プラグインのインストール (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
手順23.4 JBoss Operations Network ライブラリーモードプラグインのインストール
JBoss Operations Network コンソールを開きます。
- JBoss Operations Network コンソールから、 を選択します。
- コンソールの左側にある オプションから を選択します。
図23.1 JBoss Data Grid 用の JBoss Operations Network コンソール
ライブラリーモードプラグインをアップロードします。
- をクリックし、ローカルファイルシステムで
InfinispanPluginを見つけます。 - をクリックして、プラグインを JBoss Operations Network サーバーに追加します。
図23.2
InfinispanPluginのアップロード。更新のためのスキャン
- ファイルが正常にアップロードされたら、画面の下部にある をクリックします。
InfinispanPluginがインストール済みプラグインのリストに表示されます。
図23.3 更新済みプラグインのためのスキャン
23.7.2. ライブラリーモードでの JBoss Data Grid インスタンスの追加 リンクのコピーリンクがクリップボードにコピーされました!
23.7.2.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- パッチが
Update 02以上の JBoss Operations Network (JON) 3.2.0 の正しく設定されたインスタンス。 - アプリケーションが実行されるサーバー上の JON Agent の実行中インスタンス。詳細については、「JBoss Operations Network エージェント」を参照してください。
- 完全な JDK を含む RHQ エージェントの操作インスタンス。エージェントに JDK の
tools.jarファイルへのアクセス権があることを確認します。JON エージェントの環境ファイル (bin/rhq-env.sh) で、完全な JDK ホームを参照するようRHQ_AGENT_JAVA_HOMEプロパティーの値を設定します。 - RHQ エージェントは、JBoss Enterprise Application Platform インスタンスと同じユーザーを使用して起動している必要があります。たとえば、JON エージェントを root 権限を持つユーザーとして実行し、JBoss Enterprise Application Platform プロセスを異なるユーザーとして実行しても予想どおりには機能しないため、この実行は避けるようにしてください。
- JBoss Data Grid Library Mode 用のインストール済み JON プラグイン。詳細については、「JBoss Operations Network プラグインのインストール (ライブラリーモード) 」を参照してください。
- パッチが
Update 02以上の JBoss Operation Networks 3.2.0 のGeneric JMX plugin。 - 統計機能と監視機能を動作させるために、ライブラリーモードキャッシュの JMX 統計が有効な Red Hat JBoss Data Grid のライブラリーモードを使用したカスタムアプリケーション。キャッシュインスタンスの JMX 統計を有効にする方法については「キャッシュインスタンスに対して JMX を有効にする」 を参照し、キャッシュマネージャー用に JMX を有効にする方法については「 CacheManager に対して JMX を有効にする」を参照してください。
- Java 仮想マシン (JVM) は、JMX MBean Server を公開するために設定する必要があります。Oracle/Sun JDK については、http://docs.oracle.com/javase/1.5.0/docs/guide/management/agent.html を参照してください。
- JBoss Enterprise Application Platform 用に適切に追加され、設定された管理ユーザー。
23.7.2.2. ライブラリーモードでの JBoss Data Grid インスタンスの手動による追加 リンクのコピーリンクがクリップボードにコピーされました!
手順23.5 ライブラリーモードでの JBoss Data Grid インスタンスの追加
プラットフォームのインポート
- にナビゲートし、コンソールの左側の リストから を選択します。
- アプリケーションが実行されているプラットフォームを選択し、画面の下部で をクリックします。
図23.4 からのプラットフォームのインポート。
プラットフォーム上のサーバーへのアクセス
jdgプラットフォームが Platforms リストに表示されます。- 実行中のサーバーにアクセスするためにプラットフォームをクリックします。
図23.5
jdgプラットフォームを開いてサーバーのリストを表示。JMX サーバーのインポート
- タブから、 を選択します。
- 画面の下部で ボタンをクリックし、リストから オプションを選択します。
図23.6 JMX サーバーのインポート
JDK 接続設定を有効にします。
- ウィンドウで、 オプションのリストから を指定します。
図23.7 JDK 5 テンプレートの選択
コネクターアドレスを変更します。
- メニューで、指定された の修正を Infinispan ライブラリーを含むプロセスのホスト名と JMX ポートを使って行います。
- 監視する新規 JBoss Data Grid インスタンスの JMX コネクターのアドレスを入力します。以下に例を示します。コネクターアドレス:
service:jmx:rmi://127.0.0.1/jndi/rmi://127.0.0.1:7997/jmxrmi
service:jmx:rmi://127.0.0.1/jndi/rmi://127.0.0.1:7997/jmxrmiCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記
コネクターアドレスは、新規インスタンスに割り当てられたホストと JMX ポートによって異なります。この場合、インスタンスには起動時に以下のシステムプロパティーが必要です。-Dcom.sun.management.jmxremote.port=7997 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.port=7997 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=falseCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 必要な場合は、 および 情報を指定します。
- をクリックします。
図23.8 Deployment Options 画面での値の修正
キャッシュ統計および操作を表示します。
- をクリックして、サーバーの一覧を更新します。
- 画面の左側のパネルにある ツリーには、 ノードが含まれ、これには利用可能なキャッシュマネージャーが含まれます。このキャッシュマネージャーには利用可能なキャッシュが含まれます。
- メトリックスを表示するために利用可能なキャッシュからキャッシュを選択します。
- タブを選択します。
- ビューは、統計およびメトリックスを表示します。
- タブは、サービスで実行できるさまざまな操作へのアクセスを提供します。
図23.9 JBoss Operations Network コンソールで利用可能な JMX 経由でリレーされるメトリックスと操作データ。
23.7.2.3. JBoss Enterprise Application Platform にデプロイされたアプリケーションのライブラリーモードでの監視 リンクのコピーリンクがクリップボードにコピーされました!
23.7.2.3.1. スタンドアロンモードでデプロイされたアプリケーションの監視 リンクのコピーリンクがクリップボードにコピーされました!
手順23.6 スタンドアロンモードでデプロイされたアプリケーションの監視
JBoss Enterprise Application Platform インスタンスを起動します。
JBoss Enterprise Application Platform インスタンスを以下のように起動します。- 以下のコマンドをコマンドラインに入力するか、スタンドアロン設定ファイル (
/bin/standalone.conf) を個別に変更します。JAVA_OPTS="$JAVA_OPTS -Dorg.rhq.resourceKey=MyEAP"
JAVA_OPTS="$JAVA_OPTS -Dorg.rhq.resourceKey=MyEAP"Copy to Clipboard Copied! Toggle word wrap Toggle overflow - JBoss Enterprise Application Platform インスタンスをスタンドアロンモードで以下のように起動します。
$JBOSS_HOME/bin/standalone.sh
$JBOSS_HOME/bin/standalone.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Red Hat JBoss Data Grid アプリケーションをデプロイします。
globalJmxStatisticsおよびjmxStatisticsを有効にした JJBoss Data Grid ライブラリーモードアプリケーションが含まれる WAR ファイルをデプロイします。JBoss Operations Network (JON) 検出を実行します。
JBoss Operations Network (JON) エージェントでdiscovery --fullコマンドを実行します。アプリケーションサーバープロセスを見つけます。
JBoss Operations Network (JON) web インターフェースに、JBoss Enterprise Application Platform プロセスが JMX サーバーとしてリストされます。プロセスをインベントリーにインポートします。
プロセスを JBoss Operations Network (JON) インベントリーにインポートします。オプション: 検出を再度実行します。
必要な場合は、discovery --fullコマンドを再び実行し、新規リソースを検出します。
JBoss Data Grid ライブラリーモードアプリケーションが JBoss Enterprise Application Platform のスタンドアロンモードでデプロイされ、JBoss Operations Network (JON) を使用して監視することができるようになります。
23.7.2.3.2. ドメインモードでデプロイされたアプリケーションの監視 リンクのコピーリンクがクリップボードにコピーされました!
手順23.7 ドメインモードでデプロイされたアプリケーションの監視
ホスト設定の編集
domain/configuration/host.xmlファイルを編集し、server要素を以下の設定に置き換えます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow JBoss Enterprise Application Platform の起動
ドメインモードによる JBoss Enterprise Application Platform 6 の起動:$JBOSS_HOME/bin/domain.sh
$JBOSS_HOME/bin/domain.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow Red Hat JBoss Data Grid アプリケーションのデプロイ
globalJmxStatisticsおよびjmxStatisticsを有効にした JJBoss Data Grid ライブラリーモードアプリケーションが含まれる WAR ファイルをデプロイします。JBoss Operations Network (JON) での検出の実行
必要な場合は、新規リソースを検出するために JBoss Operations Network (JON) エージェントについてdiscovery --fullコマンドを実行します。
JBoss Data Grid ライブラリーモードアプリケーションが、JBoss Enterprise Application Platform のドメインモードでデプロイされ、JBoss Operations Network (JON) を使用して監視することができるようになります。
23.8. JBoss Operations Network のプラグインクイックスタート リンクのコピーリンクがクリップボードにコピーされました!
23.9. 他の管理ツールと操作 リンクのコピーリンクがクリップボードにコピーされました!
23.9.1. URL 経由のデータアクセス リンクのコピーリンクがクリップボードにコピーされました!
put() および post() メソッドは、キャッシュにデータを格納します。使用される URL より使用されるキャッシュ名とキーを判断することができます。データはキャッシュに格納される値で、要求の本文に置かれます。
GET および HEAD メソッドが使用され、他のヘッダーはキャッシュの設定と挙動を制御します。
注記
23.9.2. Map メソッドの制限 リンクのコピーリンクがクリップボードにコピーされました!
size()、 values()、 keySet()、 entrySet() などの特定の Map メソッドは不安定であるため、Red Hat JBoss Data Grid で一定の制限付きで使用することが可能です。これらのメソッドはロック (グローバルまたはローカル) を取得せず、同時編集、追加、および削除はこれらの呼び出しでは考慮されません。
JBoss Data Grid 7.0 では、マップメソッド size()、values()、keySet()、および entrySet() には、デフォルトでキャッシュローダーのエントリーが含まれます。使用されるキャッシュローダーはこれらのコマンドのパフォーマンスに直接影響を与えます。たとえば、データベースを使用している場合、これらのメソッドはデータが格納されるテーブルの完全なスキャンを実行し、処理が遅くなることがあります。キャッシュローダーからエントリーをロードしないようにし、パフォーマンスの低下を避けるには、必要なメソッドを実行する前に Cache.getAdvancedCache().withFlags(Flag.SKIP_CACHE_LOAD) を使用します。
JBoss Data Grid 7.0 では、Cache.size() メソッドは、クラスター全体で、このキャッシュとキャッシュローダーの両方にあるすべての要素の数を提供します。ローダーまたはリモートエントリーを使用している場合、メモリー関連の問題の発生を防げるようにエントリーのサブセットのみが指定時にメモリーに保持されます。すべてのエントリーのロードする場合、その速度が遅くなる場合があります。
size() メソッドで返される結果は、ローカルノードにあるエントリー数を返すよう強制実行する org.infinispan.context.Flag#CACHE_MODE_LOCAL フラグと、パッシべートされたエントリーを無視する org.infinispan.context.Flag#SKIP_CACHE_LOAD フラグによって影響を受けます。これらのフラグのいずれかを使用すると、クラスター全体ですべての要素の数を返さない代わりにこのメソッドのパフォーマンスを上げることができます。
JBoss Data Grid 7.0 では、Hot Rod プロトコルには専用の SIZE 操作が含まれ、クライアントはこの操作を使用してすべてのエントリーのサイズを計算します。
パート XI. Red Hat JBoss Data Grid の Web 管理 リンクのコピーリンクがクリップボードにコピーされました!
第24章 Red Hat JBoss Data Grid 管理コンソール リンクのコピーリンクがクリップボードにコピーされました!
24.1. JBoss Data Grid 管理コンソールについて リンクのコピーリンクがクリップボードにコピーされました!
24.2. Red Hat JBoss Data Grid 管理コンソールの前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- Java 8
- JBoss Data Grid サーバーがインストール済みで、ドメインモードで実行できる。
24.3. Red Hat JBoss Data Grid 管理コンソースの使用開始 リンクのコピーリンクがクリップボードにコピーされました!
24.3.1. Red Hat JBoss Data Grid 管理コンソールの使用開始 リンクのコピーリンクがクリップボードにコピーされました!
24.3.2. JBoss Data Grid Server のダウンロードおよびインストール リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat カスタマーポータルから Red Hat JBoss Data Grid サーバーのバージョンをダウンロードします。
- ダウンロードしたパッケージをシステムの優先ディレクトリーに解凍して JBoss Data Grid をインストールします。
注記
24.3.3. 管理ユーザーの追加 リンクのコピーリンクがクリップボードにコピーされました!
手順24.1 管理ユーザーの追加
- 以下のように bin フォルダー内で add-user スクリプトを実行します。
./add-user.sh
./add-user.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 追加するユーザーのタイプのオプションを選択します。管理ユーザーの場合は、オプション
aを選択します。 - 一覧表示される推奨に基づいてユーザー名とパスワードを設定します。
- ユーザーを追加する必要のあるグループの名前を入力します。グループがない場合は空白にします。
注記
ダウンロードおよびインストールの詳細は、『Red Hat JBoss Data Grid Getting Started Guide』 の 『Download and Install JBoss Data Grid』 セクションを参照してください。 - Apache Spark プロセス接続にユーザーを使用する必要があるかどうかを確認します。
注記
次に進む前に、$JBOSS_HOME が別のインストールに設定されていないことを確認します。この確認をしないと、予期しない結果が出される可能性があります。
管理ユーザーが正常に追加されます。
24.3.4. JBoss Data Grid Server の起動 リンクのコピーリンクがクリップボードにコピーされました!
./domain.sh
./domain.sh
24.3.5. JBoss Data Grid 管理コンソールへのログイン リンクのコピーリンクがクリップボードにコピーされました!
http://localhost:9990/console/index.html
http://localhost:9990/console/index.html
図24.1 JBoss Data Grid 管理コンソールログイン画面
24.4. ダッシュボードビュー リンクのコピーリンクがクリップボードにコピーされました!
- キャッシュ
- クラスター
- ステータスイベント
24.4.1. キャッシュコンテナービュー リンクのコピーリンクがクリップボードにコピーされました!
図24.2 キャッシュコンテナービュー
24.4.2. クラスタービュー リンクのコピーリンクがクリップボードにコピーされました!
図24.3 クラスタービュー
24.4.3. ステータスイベントビュー リンクのコピーリンクがクリップボードにコピーされました!
図24.4 ステータスイベントビュー
24.5. キャッシュ管理 リンクのコピーリンクがクリップボードにコピーされました!
24.5.1. 新規キャッシュの追加 リンクのコピーリンクがクリップボードにコピーされました!
手順24.2 新規キャッシュの追加
- 「Cache Containers」ビューで、キャッシュコンテナーの名前をクリックします。
図24.5 「Cache Containers」ビュー
- すべての設定済みのキャッシュを一覧表示するキャッシュビューが表示されます。「」をクリックして新規キャッシュを追加し、設定します。新規キャッシュの作成ウィンドウが開かれます。
図24.6 キャッシュの追加
- 新規キャッシュ名を入力し、ドロップダウンメニューからベース設定テンプレートを選択し、「」をクリックします。
図24.7 キャッシュプロパティー
- キャッシュ設定画面が表示されます。キャッシュパラメーターを入力し、「」をクリックします。
図24.8 キャッシュの設定
- 確認画面が表示されます。「」をクリックしてキャッシュを作成します。
図24.9 キャッシュの確認
新規キャッシュが正常に追加されます。
24.5.2. キャッシュ設定の編集 リンクのコピーリンクがクリップボードにコピーされました!
手順24.3 キャッシュ設定の編集
- JBoss Data Grid 管理コンソールにログインし、キャッシュコンテナーの名前をクリックします。
図24.10 キャッシュコンテナー
- キャッシュビューで、キャッシュ名をクリックします。
図24.11 キャッシュビュー
- キャッシュの統計およびプロパティーのページが表示されます。右側にある「Configuration」タブをクリックします。
図24.12 キャッシュ設定ボタン
- キャッシュの設定を編集するためのインターフェースが開かれます。編集可能なキャッシュプロパティーは、右側のキャッシュプロパティーのメニューで確認できます。
図24.13 キャッシュ設定の編集インターフェース
- キャッシュプロパティーメニューから編集する設定プロパティーを選択します。キャッシュ設定パラメーターの説明を確認するには、情報アイコン上にカーソルを移動します。パラメーターの説明はツールチップの形式で表示されます。
図24.14 キャッシュ設定パラメーター
- 「General」プロパティーがデフォルトで選択されているとします。指定されたパラメーターの入力フィールドに必要な値を入力します。スクロールダウンして「」をクリックします。
- 確認のためのダイアログボックスが表示されます。「Update」をクリックします。
図24.15
- 再起動するためのダイアログボックスが表示されます。「」をクリックして変更を適用します。
図24.16 再起動ダイアログボックス
注記
キャッシュプロパティーの編集を継続するには、「」をクリックします。
24.5.3. キャッシュ統計およびプロパティービュー リンクのコピーリンクがクリップボードにコピーされました!
手順24.4 キャッシュ統計の表示
- 「Cache Container」ビューでキャッシュコンテナーの名前をクリックし、キャッシュの一覧に移動します。
- キャッシュの一覧からキャッシュの名前をクリックします。オプションで、キャッシュをフィルターするために左側のキャッシュフィルターを使用できます。キャッシュは、キーワード、サブ文字列で、またはタイプおよび特性を選択してフィルターできます。
図24.17 キャッシュビュー
- 以下のページでは、「
Cache content」、「Operations performance」および「Caching Activity」の見出しの下に総合的なキャッシュ統計が表示されます。図24.18 キャッシュ統計
- 追加のキャッシュ統計は、「
Entries Lifecycle」、「Cache Loader」および「Locking」の見出しの下に表示されます。図24.19 キャッシュ統計
- キャッシュプロパティーを表示するには、右側にある「Configuration」をクリックします。
図24.20 設定ボタン
- キャッシュプロパティーのメニューが右側に表示されます。
図24.21 キャッシュプロパティーメニュー
図24.22 「General Status」タブ
図24.23 キャッシュノードラベル
24.5.4. キャッシュの有効化および無効化 リンクのコピーリンクがクリップボードにコピーされました!
手順24.5 キャッシュの無効化
- 「Cache Container 」ビューでキャッシュコンテナーの名前をクリックし、キャッシュビューに移動します。無効にするキャッシュの名前をクリックします。
図24.24 キャッシュビュー
- キャッシュ統計が表示されます。インターフェースの右側にある「 Actions」タグをクリックしてから「」をクリックします。
図24.25 キャッシュビューの無効化
- 確認ダイアログボックスが表示されます。「」をクリックしてキャッシュを無効にします。
図24.26 キャッシュの無効化を確認
- 後続のダイアログボックスが表示されます。「」をクリックします。
図24.27 確認ボックス
- 選択されたキャッシュは正常に無効にされ、キャッシュ名ラベルの横にあるインジケーター「Disabled」と共に表示されます。
図24.28 無効にされたキャッシュ
キャッシュが正常に無効にされます。
手順24.6 キャッシュの有効化
- キャッシュを有効にするには、キャッシュビューから特定の無効にされたキャッシュをクリックします。
図24.29 キャッシュビュー
- インターフェースの右側にある「」タブをクリックします。
図24.30
- 「Actions」タブから「」をクリックします。
図24.31 アクションメニュー
- 確認ダイアログボックスが表示されます。「」をクリックします。
図24.32 確認ボックス
- 後続のダイアログボックスが表示されます。「」をクリックします。
図24.33 情報ボックス
- 選択されたキャッシュは正常に無効にされ、キャッシュ名ラベルの横にあるインジケーター「Enabled」と共に表示されます。
図24.34 有効にされたキャッシュ
24.5.5. キャッシュのフラッシュとクリア リンクのコピーリンクがクリップボードにコピーされました!
キャッシュのフラッシュ
手順24.7 キャッシュのフラッシュ
- 「Cache Containers」ビューで、キャッシュコンテナーの名前をクリックします。
- キャッシュビューが表示されます。クリアするキャッシュをクリックします。
図24.35 キャッシュビュー
- キャッシュの統計ページが表示されます。右側にある「」をクリックします。
図24.36 アクションボタン
- 「」メニューから「」をクリックします。
図24.37 アクションメニュー
- 確認ダイアログボックスが表示されます。「」をクリックします。
図24.38 キャッシュのフラッシュ確認ボックス
- キャッシュが正常にフラッシュされます。「」をクリックします。
図24.39 キャッシュのフラッシュの情報ボックス
キャッシュのクリア
手順24.8 キャッシュのクリア
- 「Cache Containers」ビューで、キャッシュコンテナーの名前をクリックします。
- キャッシュビューが表示されます。クリアするキャッシュをクリックします。
図24.40 キャッシュビュー
- キャッシュの統計ページで、右側にある「」をクリックします。
図24.41
- 「」メニューから、「」をクリックします。
図24.42 クリアボタン
- 確認ダイアログボックスが表示されます。「」をクリックします。
図24.43 確認ボックス
- キャッシュが正常にフラッシュされます。「」をクリックします。
図24.44 情報ボックス
24.5.6. サーバータスクの実行 リンクのコピーリンクがクリップボードにコピーされました!
24.5.7. サーバータスク リンクのコピーリンクがクリップボードにコピーされました!
24.5.7.1. 新規サーバータスク リンクのコピーリンクがクリップボードにコピーされました!
手順24.9 新規サーバータスクの起動
- JBoss Data Grid 管理コンソールの「Cache Containers」ビューで、キャッシュコンテナーの名前をクリックします。
- キャッシュビューページで、「」タブをクリックします。
図24.45 タスクの実行
- 「Tasks execution」タブで、「」をクリックします。
図24.46 新規タスクの起動
- 新規タスクプロパティーを入力し、「」をクリックします。
図24.47 タスクプロパティー
新規サーバータスクが正常に作成されます。
24.5.7.2. サーバータスクビュー リンクのコピーリンクがクリップボードにコピーされました!
図24.48 サーバータスクビュー
図24.49 タスクの開始/終了時間
24.6. キャッシュコンテナーの設定 リンクのコピーリンクがクリップボードにコピーされました!
手順24.10 キャッシュコンテナー設定へのアクセス
- 「Cache Containers」ビューで、キャッシュコンテナーの名前をクリックします。
図24.50 キャッシュコンテナービュー
- インターフェースの右側にある「Configuration」設定ボタンをクリックします。
図24.51 設定
図24.52 キャッシュコンテナーの設定
24.6.1. プロトコルバッファースキーマの定義 リンクのコピーリンクがクリップボードにコピーされました!
手順24.11 プロトコルスキーマの定義
- 「Schema」タブの右上にある「」をクリックしてスキーマ作成ウィンドウを起動します。
- それぞれのフィールドにスキーマ名とスキーマを入力し、「」をクリックします。
図24.53 新規スキーマ
- プロトコルバッファースキーマが追加されます。
図24.54 プロトコルバッファー
24.6.2. トランスポート設定 リンクのコピーリンクがクリップボードにコピーされました!
図24.55 トランスポート設定
図24.56 再起動の確認
24.6.3. スレッドプールの定義 リンクのコピーリンクがクリップボードにコピーされました!
図24.57 非同期操作
図24.58 エクスパレーションの値
図24.59 リスナーの値
図24.60 永続性の値
図24.61 リモートコマンド
図24.62 レプリケーションキューの値
図24.63 状態転送の値
図24.64 トランスポートの値
24.6.4. 新規セキュリティーロールの追加 リンクのコピーリンクがクリップボードにコピーされました!
手順24.12 セキュリティーロールの追加
- 「」タブをクリックします。キャッシュコンテナーに権限が定義されていない場合は、 をクリックして定義します。
図24.65 権限の定義
- ドロップダウンメニューからロールマッパーを選択します。「」をクリックしてパーミッションウィンドウを起動します。
図24.66 ロールマッパーの選択
- 「」ウィンドウで、新規ロールの名前を入力し、チェックボックスにチェックを付けてパーミッションを割り当てます。「」をクリックしてロールを保存します。
図24.67 ロールパーミッション
- 新規のセキュリティーロールが追加されます。
図24.68 新規セキュリティーロール
24.6.5. キャッシュ設定テンプレートの作成 リンクのコピーリンクがクリップボードにコピーされました!
図24.69 キャッシュテンプレートビュー
手順24.13 新規キャッシュ設定テンプレートの作成
- テンプレート一覧の右側にある「」をクリックします。
- キャッシュ設定テンプレート名を入力し、ドロップダウンからベース設定を選択して「」をクリックします。
図24.70 キャッシュ設定テンプレート
- ロックやエクスパレーション、インデックスなどの各種のキャッシュ操作のキャッシュテンプレート属性を設定します。
図24.71 キャッシュ設定テンプレート
- 値を入力した後に「」をクリックしてキャッシュテンプレートを作成します。
24.7. クラスターの管理 リンクのコピーリンクがクリップボードにコピーされました!
24.7.1. クラスターノードビュー リンクのコピーリンクがクリップボードにコピーされました!
図24.72 ノードビュー
24.7.2. クラスターノードの不一致 リンクのコピーリンクがクリップボードにコピーされました!
図24.73 クラスターノードの不一致
24.7.3. クラスターの再調整 リンクのコピーリンクがクリップボードにコピーされました!
注記
手順24.14 再調整の有効化および無効化
- キャッシュコンテナービューで、キャッシュコンテナーの名前をクリックします。
- キャッシュビューで、右側にある「」をクリックします。
図24.74
- コールアウトメニューが開かれます。「」をクリックします。
図24.75
- 確認ダイアログボックスが表示されます。「」をクリックします。
図24.76
- クラスターの再調整が正常に無効にされます。
図24.77
- 再調整を有効にするには、「Actions」 > 「Enable Rebalancing」をクリックします。
図24.78
- 確認ダイアログボックスが表示されます。「」をクリックします。
図24.79
図24.80
手順24.15 再調整の有効化および無効化
- キャッシュコンテナービューで、キャッシュコンテナーの名前をクリックします。
- キャッシュビューで、特定のキャッシュをクリックします。
- キャッシュ統計ページが表示されます。右側にある「」をクリックします。
図24.81
- コールアウトメニューから「」をクリックします。
図24.82
- 確認ダイアログボックスが表示されます。「」をクリックします。
図24.83
- キャッシュの再調整が正常に無効にされます。
図24.84
- キャッシュレベルの再調整を有効にするには、「」メニューから「」をクリックします。
図24.85
- 確認ダイアログボックスが表示されます。「」をクリックします。
図24.86
図24.87
24.7.4. クラスターパーティションの処理 リンクのコピーリンクがクリップボードにコピーされました!
図24.88 ネットワークパーティションの警告
24.7.5. クラスターイベント リンクのコピーリンクがクリップボードにコピーされました!
図24.89
図24.90
24.7.6. ノードの追加 リンクのコピーリンクがクリップボードにコピーされました!
手順24.16 新規ノードの追加
- ダッシュボードビューで、「」タブをクリックします。
図24.91 「Clusters」タブ
- 新規ノードを追加する必要のあるクラスターの名前をクリックします。
図24.92 クラスターの選択
- 「」をクリックします。
図24.93 作成されたノードの追加
- ノード設定ウィンドウが開かれます。ノードプロパティーをそれぞれのフィールドに入力して「」をクリックします。
図24.94 ノードプロパティー
- システムが起動します。
図24.95 システムの起動
- 新規ノードが正常に作成されます。
図24.96 新規ノード
24.7.7. ノード統計およびプロパティービュー リンクのコピーリンクがクリップボードにコピーされました!
図24.97 ノード統計
24.7.8. ノードパフォーマンスメトリックスビュー リンクのコピーリンクがクリップボードにコピーされました!
図24.98 ノードパフォーマンスメトリックス
24.7.9. ノードの無効化 リンクのコピーリンクがクリップボードにコピーされました!
手順24.17 新規ノードの追加
- JBoss Data Grid 管理コンソールのクラスタービューでクラスターの名前をクリックします。
- ノードビューで、無効にするノードをクリックします。
図24.99 ノードビュー
- ノード統計ビューが開かれます。ページ右上にある「Actions」タブをクリックしてから「」をクリックします。
図24.100 ノードの停止
- 確認するためのボックスが表示されます。「」をクリックしてクラスターからノードを削除します。
図24.101 確認ボックス
24.7.10. クラスターのシャットダウンおよび再起動 リンクのコピーリンクがクリップボードにコピーされました!
24.7.10.1. クラスターのシャットダウン リンクのコピーリンクがクリップボードにコピーされました!
手順24.18 クラスターのシャットダウン
- JBoss Data Grid 管理コンソールのクラスタービューに移動して、クラスターの名前をクリックします。
図24.102 クラスタービュー
- ノードビューのページのインターフェースの右上に「Actions」タブがあります。「Actions」タブをクリックしてから「」をクリックします。
図24.103 クラスターの停止
- 確認のためのボックスが表示されます。確認するには、「Stop」をクリックします。
図24.104 確認ボックス
24.7.10.2. クラスターの起動 リンクのコピーリンクがクリップボードにコピーされました!
手順24.19 クラスターの起動
- JBoss Data Grid 管理コンソールの「Clusters」ビューに移動し、クラスターの名前をクリックします。
- ノードビューのページのインターフェース右上に「Actions」タグがあります。「Actions」タグをクリックしてから「」をクリックします。
図24.105 クラスターの起動
- 確認のためのボックスが表示されます。「Start」をクリックしてクラスターを起動します。
パート XII. Red Hat JBoss Data Grid におけるデータのセキュア化 リンクのコピーリンクがクリップボードにコピーされました!
JBoss Data Grid には、指定のセキュア化されたキャッシュ上の操作に対応するロールベースのアクセス制御機能が含まれます。ロールは、キャッシュおよびキャッシュマネージャー操作のパーミッションにマップされた状態で、アプリケーションにアクセスするユーザーに割り当てられます。認証されたユーザーのみがこれらのロールで許可されている操作を実行できます。
ノードレベルのセキュリティーには、新規ノードやマージされるパーティションがクラスターに参加する前に認証される必要があります。クラスターに参加することが許可される認証されたノードのみがこれを実行できます。これにより、許可されたサーバーがデータを保存することを防ぎ、データが保護されます。
JBoss Data Grid では、JCA (Java Cryptography Architecture、Java 暗号化アーキテクチャー) によってサポートされるユーザー指定の暗号化アルゴリズム使用して、ノード間での通信の暗号化がサポートされるようになり、データのセキュリティーが強化されました。
第25章 Red Hat JBoss Data Grid セキュリティー: 認証および承認 リンクのコピーリンクがクリップボードにコピーされました!
25.1. Red Hat JBoss Data Grid セキュリティー: 認証および承認 リンクのコピーリンクがクリップボードにコピーされました!
SecureCache のインスタンスが返されます。SecureCache はキャッシュに関する単純なラッパーであり、「現行ユーザー」が操作の実行に必要なパーミッションを持つかどうかをチェックします。「現行ユーザー」は AccessControlContext に関連付けられた「Subject」になります。
図25.1 ロールとパーミッションのマッピング
25.2. パーミッション リンクのコピーリンクがクリップボードにコピーされました!
| パーミッション | 関数 | 説明 |
|---|---|---|
| CONFIGURATION | defineConfiguration | 新規キャッシュ設定を定義できるかどうか。 |
| LISTEN | addListener | リスナーをキャッシュマネージャーに対して登録できるかどうか。 |
| LIFECYCLE | stop, start | キャッシュマネージャーを停止または開始できるかどうか。 |
| ALL | 上記すべてを含む便利なパーミッション。 |
| パーミッション | 関数 | 説明 |
|---|---|---|
| READ | get, contains | エントリーをキャッシュから取得できるかどうか。 |
| WRITE | put, putIfAbsent, replace, remove, evict | データをキャッシュから書き込み、置き換え、エビクトできるかどうか。 |
| EXEC | distexec, mapreduce | コード実行をキャッシュに対して実行できるかどうか。 |
| LISTEN | addListener | リスナーをキャッシュに対して登録できるかどうか。 |
| BULK_READ | keySet, values, entrySet,query | 一括取得操作を実行できるかどうか。 |
| BULK_WRITE | g | 一括書き込み操作を実行できるかどうか。 |
| LIFECYCLE | start, stop | キャッシュを開始または停止できるかどうか。 |
| ADMIN | getVersion, addInterceptor*, removeInterceptor, getInterceptorChain, getEvictionManager, getComponentRegistry, getDistributionManager, getAuthorizationManager, evict, getRpcManager, getCacheConfiguration, getCacheManager, getInvocationContextContainer, setAvailability, getDataContainer, getStats, getXAResource | 基礎となるコンポーネントまたは内部構造へのアクセスが可能かどうか。 |
| ALL | 上記すべてを含む便利なパーミッション。 | |
| ALL_READ | READ と BULK_READ の組み合わせ。 | |
| ALL_WRITE | WRITE と BULK_WRITE の組み合わせ。 |
注記
25.3. ロールマッピング リンクのコピーリンクがクリップボードにコピーされました!
PrincipalRoleMapper をグローバル設定に指定する必要があります。Red Hat JBoss Data Grid では 3 つのマッパーが同梱されており、さらにカスタムマッパーを使用することもできます。
| マッパー名 | Java | XML | 説明 |
|---|---|---|---|
| IdentityRoleMapper | org.infinispan.security.impl.IdentityRoleMapper | <identity-role-mapper /> | ロール名としてプリンシパル名を使用します。 |
| CommonNameRoleMapper | org.infinispan.security.impl.CommonRoleMapper | <common-name-role-mapper /> | プリンシパル名が識別名 (DN) の場合、このマッパーは共通名 (CN) を抽出し、これをロール名として使用します。たとえば、DN cn=managers,ou=people,dc=example,dc=com はロールの managers にマップされます。 |
| ClusterRoleMapper | org.infinispan.security.impl.ClusterRoleMapper | <cluster-role-mapper /> | ClusterRegistry を使用してプリンシパルをロールマッピングに保存します。これにより、CLI の GRANT および DENY コマンドを使用してロールのプリンシパルへの追加または削除を実行できます。 |
| Custom Role Mapper | <custom-role-mapper class="a.b.c" /> | org.infinispan.security.impl.PrincipalRoleMapper の実装の完全修飾クラス名を指定します。 |
25.4. ログインモジュールを使用した認証およびロールマッピングの設定 リンクのコピーリンクがクリップボードにコピーされました!
login-module を使用する場合、カスタムクラスが使用されているため、プリンシパルからロールへの独自のマッピングを実装する必要があります。この変換の実装例は the JBoss Data Grid の 『Developer Guide』 を参照してください。以下は、宣言的な設定例です。
例25.1 LDAP ログインモジュールの設定例
例25.2 ログインモジュールの設定例
重要
25.5. Red Hat JBoss Data Grid の承認の設定 リンクのコピーリンクがクリップボードにコピーされました!
以下は、CacheManager レベルの承認の設定例です。
例25.3 CacheManager 承認 (宣言的な設定)
- 承認を使用するかどうか。
- プリンシプルをルールセットにマップするクラス。
- 名前付きロールのセットとそれらが表すパーミッション。
ロールは、以下のようにキャッシュコンテナーのレベルで定義されたロールを使用して、キャッシュごとに適用できます。
例25.4 ロールの定義
<local-cache name="secured">
<security>
<authorization roles="admin reader writer supervisor"/>
</security>
</local-cache>
<local-cache name="secured">
<security>
<authorization roles="admin reader writer supervisor"/>
</security>
</local-cache>
重要
重要
SecurityException が生じます。
25.6. SecurityManager を使用した承認 リンクのコピーリンクがクリップボードにコピーされました!
SecurityManager がなくても機能します。ライブラリーモードでは、SecurityManager を使用して、とくに distexec およびクエリーなどのより複雑なタスクの一部を実行することもできます。
SecurityManager を有効にします。
java -Djava.security.manager ...
java -Djava.security.manager ...
System.setSecurityManager(new SecurityManager());
System.setSecurityManager(new SecurityManager());
SecurityManager が調査するパーミッションのセットを定義します。アクションがポリシーファイルで許可される場合、SecurityManager がアクションの実行を許可しますが、アクションがポリシーで許可されない場合は SecurityManager はそのアクションを拒否します。
25.7. Java のセキュリティーマネージャー リンクのコピーリンクがクリップボードにコピーされました!
25.7.1. Java Security Manager リンクのコピーリンクがクリップボードにコピーされました!
Java Security Manager は、Java 仮想マシン (JVM) サンドボックスの外部の境界を管理するクラスで、JVM 内で実行しているコードと JVM 外のリソースとの連携方法を制御します。Java Security Manager がアクティブになると、Java API は安全でない多様な動作を実行する前に Security Manager と承認を確認します。
25.7.2. Java Security Manager のポリシー リンクのコピーリンクがクリップボードにコピーされました!
コードの様々なクラスに対して定義されたパーミッションのセットです。Java Security Manager はセキュリティーポリシーとアプリケーションから要求されたアクションを比較します。ポリシーがアクションを許可している場合は、Java Security Manager はそのアクションが行われることを許可します。ポリシーがアクションを許可していない場合は、Java Security Manager はそのアクションを拒否します。セキュリティポリシーは、コードの場所またはコードのシグニチャー、またはサブジェクトのプリンシパルに基づいてパーミッションを定義できます。
java.security.manager や java.security.policy を使用して設定されます。
セキュリティーポリシーのエントリーは、policytool に関係のある以下の設定要素から構成されています。
- CodeBase
- コードの元の URL の場所 (ホストとドメインの情報以外)。オプションのパラメーターです。
- SignedBy
- コードを署名するためにプライベートキーが使用された署名者を参照するキーストアで使用されたエイリアス。これは、単一値またはカンマ区切りの値リストになります。オプションのパラメーターです。省略された場合は、署名の有無に関わらず Java Security Manager に影響はありません。
- Principals
principal_typeとprincipal_nameのペアのリスト。これは、実行スレッドのプリンシパルセット内に存在する必要があります。Principals エントリーは任意です。このエントリーを省略すると、実行スレッドのプリンシパルによる Java Security Manager への影響はありません。- Permissions
- パーミッションは、コードに与えられるアクセス権です。多くのパーミッションは、Java Enterprise Edition 6 (Java EE 6) 仕様の一部として提供されます。本書では、JBoss EAP 6 で提供される追加のパーミッションについてのみ説明します。
重要
25.7.3. Java Security Manager ポリシーの記述 リンクのコピーリンクがクリップボードにコピーされました!
ほとんどの JDK および JRE ディストリビューションには、Java Security Manager セキュリティーポリシーを作成および編集するための policytool という名前のアプリケーションが含まれます。policytool の詳細については、http://docs.oracle.com/javase/6/docs/technotes/tools/ を参照してください。
手順25.1 新しい Java Security Manager ポリシーの設定
policytoolを起動します。policytoolツールを次のいずれかの方法で起動します。Red Hat Enterprise Linux
GUI またはコマンドプロンプトで、/usr/bin/policytoolを実行します。Microsoft Windows Server
スタートメニューまたは Java インストールのbin\から、policytool.exeを実行します。場所は異なることがあります。
ポリシーを作成します。
ポリシーを作成するには、 を選択します。必要なパラメーターを追加し、 をクリックします。既存のポリシーを編集します。
既存のポリシーのリストからポリシーを選択し、 ボタンを選択します。必要に応じてパラメーターを編集します。既存のポリシーを削除します。
既存のポリシーのリストからポリシーを選択し、 ボタンを選択します。
25.7.4. Java Security Manager 内での Red Hat JBoss Data Grid Server の実行 リンクのコピーリンクがクリップボードにコピーされました!
standalone.sh スクリプトにパラメーターをオプションとして渡すことはできません。次の手順を実行すると、インスタンスが Java Security Manager ポリシー内で実行されるように設定できます。
前提条件
- この手順を実行する前に、Java Development Kit (JDK) に含まれる
policytoolコマンドを使用してセキュリティーポリシーを記述する必要があります。この手順では、ポリシーがJDG_HOME/bin/server.policyにあることを前提としています。この代わりに、テキストエディターを使用してセキュリティーポリシーを書き、JDG_HOME/bin/server.policyとして手作業で保存することもできます。 - 設定ファイルを編集する前に、JBoss Data Grid サーバーを完全に停止する必要があります。
手順25.2 JBoss Data Grid Server の Security Manager の設定
設定ファイルを開きます。
編集のために設定ファイルを開きます。このファイルの場所は OS で以下のように一覧表示されます。これはサーバーを起動するために使用される実行可能ファイルではなく、ランタイムパラメーターを含む設定ファイルであることに注意してください。- Linux の場合:
JDG_HOME/bin/standalone.conf - Windows の場合:
JDG_HOME\bin\standalone.conf.bat
ファイルに Java オプションを追加します。
確実に Java オプションが使用されるようにするため、以下で始まるコードブロックに Java オプションを追加します。if [ "x$JAVA_OPTS" = "x" ]; then
if [ "x$JAVA_OPTS" = "x" ]; thenCopy to Clipboard Copied! Toggle word wrap Toggle overflow -Djava.security.policyの値を編集して、セキュリティーポリシーの場所を指定できます。改行を入れずに 1 行で指定する必要があります。-Djava.security.policyプロパティーを設定するときに==を使用して指定すると、セキュリティーマネージャーは指定されたポリシーファイルのみを使用します。=を使用して指定すると、セキュリティーマネージャーは指定されたポリシーとJAVA_HOME/lib/security/java.securityのpolicy.urlセクションに指定されたポリシーを一緒に使用します。重要
JBoss Enterprise Application Platform 6.2.2 およびそれ以降のリリースでは、システムプロパティーjboss.modules.policy-permissionsを true に設定する必要があります。例25.5 standalone.conf
JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy==$PWD/server.policy -Djboss.home.dir=$JBOSS_HOME -Djboss.modules.policy-permissions=true"
JAVA_OPTS="$JAVA_OPTS -Djava.security.manager -Djava.security.policy==$PWD/server.policy -Djboss.home.dir=$JBOSS_HOME -Djboss.modules.policy-permissions=true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例25.6 standalone.conf.bat
set "JAVA_OPTS=%JAVA_OPTS% -Djava.security.manager -Djava.security.policy==\path\to\server.policy -Djboss.home.dir=%JBOSS_HOME% -Djboss.modules.policy-permissions=true"
set "JAVA_OPTS=%JAVA_OPTS% -Djava.security.manager -Djava.security.policy==\path\to\server.policy -Djboss.home.dir=%JBOSS_HOME% -Djboss.modules.policy-permissions=true"Copy to Clipboard Copied! Toggle word wrap Toggle overflow サーバーを起動します。
サーバーを通常どおりに起動します。
25.8. リモートクライアントサーバーモードのデータセキュリティー リンクのコピーリンクがクリップボードにコピーされました!
25.8.1. セキュリティーレルム リンクのコピーリンクがクリップボードにコピーされました!
ManagementRealmは、管理 CLI や Web ベースの管理コンソールに機能を提供する管理 API の認証情報を保存します。これは、JBoss Data Grid Server を管理するための認証システムを提供します。管理 API に使用する同じビジネスルールでアプリケーションを認証する必要がある場合には、ManagementRealmを使用することもできます。ApplicationRealmは Web アプリケーションと EJB のユーザー、パスワード、およびロール情報を保存します。
REALM-users.propertiesはユーザー名とハッシュ化されたパスワードを保存します。REALM-roles.propertiesはユーザー対ロールのマッピングを保存します。mgmt-groups.propertiesはManagementRealmのユーザー対ロールのマッピングを保存します。
standalone/configuration/ ディレクトリーに保存されます。ファイルは add-user.sh や add-user.bat コマンドによって同時に書き込まれます。コマンドの実行時、新しいユーザーをどのレルムに追加するかを最初に決定します。
25.8.2. 新しいセキュリティーレルムの追加 リンクのコピーリンクがクリップボードにコピーされました!
管理 CLI を実行します。
cli.shまたはcli.batコマンドを開始し、サーバーに接続します。新しいセキュリティーレルムを作成します。
次のコマンドを実行し、ドメインコントローラーまたはスタンドアロンサーバー上でMyDomainRealmという名前の新しいセキュリティーレルムを作成します。/host=master/core-service=management/security-realm=MyDomainRealm:add()
/host=master/core-service=management/security-realm=MyDomainRealm:add()Copy to Clipboard Copied! Toggle word wrap Toggle overflow 新しいレルムのユーザーの情報を保存するプロパティーファイルへの参照を作成します。
以下のコマンドを実行して、新規セキュリティーレルムのプロパティーファイルの場所を定義します。このファイルには、このセキュリティーレルムのユーザーについての情報が含まれます。以下のコマンドは、jboss.server.config.dir内のmyfile.propertiesという名前のファイルを参照します。注記
新たに作成されたプロパティーファイルは、含まれるadd-user.shおよびadd-user.batスクリプトによって管理されません。そのため、外部から管理する必要があります。/host=master/core-service=management/security-realm=MyDomainRealm/authentication=properties:add(path="myfile.properties",relative-to="jboss.server.config.dir")
/host=master/core-service=management/security-realm=MyDomainRealm/authentication=properties:add(path="myfile.properties",relative-to="jboss.server.config.dir")Copy to Clipboard Copied! Toggle word wrap Toggle overflow サーバーの再ロード
変更を反映するためにサーバーをリロードします。:reload
:reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow
新しいセキュリティーレルムが作成されます。新たに作成されたこのレルムにユーザーやロールを追加すると、デフォルトのセキュリティーレルムとは別のファイルに情報が保存されます。新規ファイルはご使用のアプリケーションやプロシージャーを使用して管理できます。
25.8.3. セキュリティーレルムへのユーザーの追加 リンクのコピーリンクがクリップボードにコピーされました!
add-user.shまたはadd-user.batコマンドを実行します。ターミナルを開き、JDG_HOME/bin/ディレクトリーへ移動します。Red Hat Enterprise Linux や他の UNIX 系のオペレーティングシステムを稼働している場合は、add-user.shを実行します。Microsoft Windows Server を稼働している場合はadd-user.batを実行します。管理ユーザーかアプリケーションユーザーのどちらを追加するか選択します。
この手順ではbを入力し、アプリケーションユーザーを追加します。ユーザーが追加されるレルムを選択します。
デフォルトでは、ManagementRealmおよびApplicationRealmのみが選択可能です。ただし、カスタムレルムが追加されている場合はその名前を入力します。入力を促されたらユーザー名、パスワード、ロールを入力します。
入力を促されたら希望のユーザー名、パスワード、任意のロールを入力します。yesを入力して選択を確認するか、noを入力して変更をキャンセルします。変更はセキュリティーレルムの各プロパティーファイルに書き込まれます。
25.8.4. セキュリティーレルムの宣言的な有効化 リンクのコピーリンクがクリップボードにコピーされました!
authentication および authorization セクションを宣言します。
例25.7 セキュリティーレルムの宣言的な有効化
server-identities パラメーターも証明書を指定するために使用できます。
25.8.5. 承認のための LDAP からのロールのロード (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
memberOf 属性を用いてユーザーエンティティーがユーザーが属するグループをマップしたり、 uniqueMember 属性を用いてグループエンティティーが属するユーザーをマップしたりすることがあります。また、両方のマッピングが LDAP サーバーによって維持されることもあります。
force が false に設定されている場合は承認クエリー中に再使用されます。force が true の場合は、承認中 (グループのロード中) に検索が再実行されます。通常、これは認証と承認が異なるサーバーによって実行される場合に行われます。
重要
force 属性で、デフォルト値の false に設定されていても必要となります。
username-to-dn
username-to-dn 要素は、ユーザー名をエントリーの識別名へマップする方法を指定します。この要素は、以下の両方の条件に見合う場合のみ必要となります。
- 認証および承認手順は異なる LDAP サーバーに対するものである。
- グループ検索が識別名を使用する。
- 1:1 username-to-dn
- リモートユーザーによって入力されたユーザー名はユーザーの識別名であると指定します。
<username-to-dn force="false"> <username-is-dn /> </username-to-dn>
<username-to-dn force="false"> <username-is-dn /> </username-to-dn>Copy to Clipboard Copied! Toggle word wrap Toggle overflow これは 1:1 マッピングを定義し、追加の設定はありません。 - username-filter
- 次のオプションは、前述の認証手順の簡単なオプションと似ています。指定のユーザー名に対して一致する指定の属性が検索されます。
<username-to-dn force="true"> <username-filter base-dn="dc=people,dc=harold,dc=example,dc=com" recursive="false" attribute="sn" user-dn-attribute="dn" /> </username-to-dn><username-to-dn force="true"> <username-filter base-dn="dc=people,dc=harold,dc=example,dc=com" recursive="false" attribute="sn" user-dn-attribute="dn" /> </username-to-dn>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 設定可能な属性は次のとおりです。base-dn: 検索を開始するコンテキストの識別名。recursive: サブコンテキストが検索対象となるかどうか。デフォルトはfalseです。attribute: 指定のユーザー名に対して一致されるユーザーエントリーの属性。デフォルトはuidです。user-dn-attribute: ユーザーの識別名を取得するために読み取る属性。デフォルトはdnです。
- advanced-filter
- 詳細フィルターを指定するオプションです。認証セクションでは、カスタムフィルターを使用してユーザーの識別名を見つけられます。
<username-to-dn force="true"> <advanced-filter base-dn="dc=people,dc=harold,dc=example,dc=com" recursive="false" filter="sAMAccountName={0}" user-dn-attribute="dn" /> </username-to-dn><username-to-dn force="true"> <advanced-filter base-dn="dc=people,dc=harold,dc=example,dc=com" recursive="false" filter="sAMAccountName={0}" user-dn-attribute="dn" /> </username-to-dn>Copy to Clipboard Copied! Toggle word wrap Toggle overflow username-filter の例で一致する属性は、その意味とデフォルト値が同じです。新たな属性は以下の 1 つのみです。filter: ユーザー名が{0}プレースホルダーで置き換えられる、ユーザーのエントリーの検索に使用されるカスタムフィルター。
重要
フィルターの定義後も XML が有効である必要があるため、&などの特殊文字が使用される場合は、適切な形式が使用されるようにしてください。たとえば、&文字には&を使用します。
グループ検索
例25.8 LDIF の例: プリンシプルからグループ
TestUserOne は GroupOne のメンバーで、GroupOne は GroupFive のメンバーです。グループメンバーシップは、memberOf 属性を使用して表されます。memberOf 属性は、ユーザー (またはグループ) がメンバーであるグループの識別名に設定されます。
memberOf 属性を設定することも可能です (ユーザーが直接メンバーであるグループごとに 1 つ)。
例25.9 LDIF の例: グループからプリンシパル
TestUserOne は GroupOne のメンバーであり、GroupOne は GroupFive のメンバーですが、相互参照にはグループからユーザーへ属性 uniqueMember が使用されます。
一般的なグループ検索
<group-search group-name="..." iterative="..." group-dn-attribute="..." group-name-attribute="..." >
...
</group-search>
<group-search group-name="..." iterative="..." group-dn-attribute="..." group-name-attribute="..." >
...
</group-search>
group-name: この属性は、ユーザーがメンバーであるグループのリストとして返されるグループ名に使用される形式を指定するために使用されます。これは、単純なグループ名またはグループの識別名になります。識別名が必要な場合は、この属性をDISTINGUISHED_NAMEに設定できます。デフォルトはSIMPLEです。iterative: ユーザーがメンバーであるグループを特定した後に、グループがメンバーであるグループを特定するため、グループを基に反復検索するかどうかを指定するために使用される属性です。反復検索が有効であると、他のグループのメンバーでないグループが見つかるか、サイクルが検出されるまで検索を続行します。デフォルトはfalseです。
重要
group-dn-attribute: 属性が識別名であるグループのエントリーです。デフォルトはdnです。group-name-attribute: 属性が単純名であるグループのエントリーです。デフォルトはuidです。
例25.10 プリンシパルからグループへの設定例
memberOf 属性です。
principal-to-group 要素が単一の属性で追加されていることです。
group-attribute: ユーザーがメンバーであるグループの識別名と一致する、ユーザーエントリー上の属性名。デフォルトはmemberOfです。
例25.11 グループからプリンシパルへの設定例
group-to-principal 要素が追加されています。この要素は、ユーザーエントリーを参照するグループの検索がどのように実行されるかを定義するために使用されます。以下の属性が設定されます。
base-dn: 検索を開始するために使用するコンテキストの識別名。recursive: サブコンテキストも検索されるかどうか。デフォルトはfalseです。search-by: 検索で使用されるロール名の形式です。有効な値はSIMPLEおよびDISTINGUISHED_NAMEです。デフォルトはDISTINGUISHED_NAMEです。
principal-attribute: ユーザーエントリーを参照する、グループエントリー上の属性名。デフォルトはmemberです。
25.9. インターフェースのセキュア化 リンクのコピーリンクがクリップボードにコピーされました!
25.9.1. Hot Rod インターフェースセキュリティー リンクのコピーリンクがクリップボードにコピーされました!
25.9.1.1. Hot Rod エンドポイントをパブリックインターフェースとして公開 リンクのコピーリンクがクリップボードにコピーされました!
management の socket-binding 要素の interface パラメーターの値を public に変更します。
<socket-binding name="hotrod" interface="public" port="11222" />
<socket-binding name="hotrod" interface="public" port="11222" />
25.9.1.2. Hot Rod サーバーと Hot Rod クライアント間の通信の暗号化 リンクのコピーリンクがクリップボードにコピーされました!
手順25.3 SSL/TLS を使用したセキュアな Hot Rod
キーストアを生成します。
JDK と共に配信されるキーツールアプリケーションを使用して Java キーストアを作成し、証明書をこれに追加します。証明書は、セキュリティーポリシーに応じて自己署名型を使用するか、または信頼された CA から取得できます。キーストアを設定ディレクトリーに配置します。
キーストアを、~/JDG_HOME/docs/examples/configsディレクトリーからのstandalone-hotrod-ssl.xmlファイルとと共に~/JDG_HOME/standalone/configurationディレクトリーに配置します。SSL サーバー ID を宣言します。
設定ファイルの管理セクションのセキュリティーレルム内で SSL サーバー ID を宣言します。SSL サーバー ID ではキーストアへのパスとそのシークレットキーを指定する必要があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow これらのパラメーターについての詳細は、「Hot Rod 認証の設定 (X.509) 」を参照してください。セキュリティー要素を追加します。
以下のようにセキュリティー要素を Hot Rod コネクターに追加します。<hotrod-connector socket-binding="hotrod" cache-container="local"> <encryption ssl="true" security-realm="ApplicationRealm" require-ssl-client-auth="false" /> </hotrod-connector><hotrod-connector socket-binding="hotrod" cache-container="local"> <encryption ssl="true" security-realm="ApplicationRealm" require-ssl-client-auth="false" /> </hotrod-connector>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 証明書のサーバー認証
サーバーがクライアント証明書の認証を実行できるようにするには、有効なクライアント証明書を含むトラストストアを作成し、require-ssl-client-auth属性をtrueに設定します。
サーバーを起動します。
以下を使用してサーバーを起動します。これにより、Hot Rod エンドポイントがポート 11222 にある状態でサーバーが起動します。このエンドポイントは SSL 接続のみを受け入れます。bin/standalone.sh -c standalone-hotrod-ssl.xml
bin/standalone.sh -c standalone-hotrod-ssl.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
重要
25.9.1.3. SSL を使用した Hot Rod のセキュア化 リンクのコピーリンクがクリップボードにコピーされました!
PLAIN ユーザー名/パスワードを使ったセキュアな Hot Rod クライアントの認証に使用できます。ユーザー名/パスワードが LDAP のクレデンシャルに対してチェックされる際、Hot Rod サーバーから LDAP サーバーへのセキュアな接続も必要になります。SSL 経由で Hot Rod サーバーから LDAP への接続を有効にするには、セキュリティーレルムを以下のように定義する必要があります。
例25.12 Hot Rod クライアントの LDAP サーバーに対する認証
重要
25.9.1.4. SASL を使用した Hot Rod でのユーザー認証 リンクのコピーリンクがクリップボードにコピーされました!
PLAINは、クレデンシャルがプレーンテキスト形式でトランスポートされるために最も安全性の低いメカニズムになります。ただし、実装が最も単純なメカニズムでもあります。このメカニズムは、セキュリティーを強化するために暗号化 (SSL) と併用できます。DIGEST-MD5は、クレデンシャルをトランスポートする前にハッシュ化するメカニズムです。その結果、PLAINメカニズムよりも安全性が高くなります。GSSAPIは、Kerberos チケットを使用するメカニズムです。その結果、正しく設定された Kerberos Domain Controller (例: Microsoft Active Directory) が必要になります。EXTERNALは、基礎となるトランスポート (例:X.509クライアント証明書) から必要なクレデンシャルを取得するメカニズムであるため、正常に機能するにはクライアント証明書の暗号化が必要です。
25.9.1.4.1. Hot Rod 認証の設定 (GSSAPI/Kerberos) リンクのコピーリンクがクリップボードにコピーされました!
手順25.4 SASL GSSAPI/Kerberos 認証の設定: サーバー側の設定
- セキュリティードメインサブシステムを使用して Kerberos のセキュリティーログインモジュールを定義します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - キャッシュコンテナーに承認ロールが定義されており、これらのロールが 「Red Hat JBoss Data Grid の承認の設定」 に示されるようにキャッシュの承認ブロックで適用されていることを確認します。
- Hot Rod コネクターを以下のように設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow server-name属性は、サーバーが着信クライアントに対して宣言する名前を指定します。クライアント設定にも同じサーバー名の値が含まれる必要があります。server-context-name属性は、特定の SASL メカニズムのサーバーサブジェクトを取得するために使用されるログインコンテキストの名前を指定します (例: GSSAPI)。mechanisms属性は、使用される認証メカニズムを指定します。サポートされるメカニズムの一覧は、「SASL を使用した Hot Rod でのユーザー認証」 を参照してください。qop属性は、設定についての本番環境の値の SASL の品質を指定します。この属性のサポートされる値は、auth(認証)、auth-int(改ざんを検出するためにメッセージがチェックサムに対して検証されることを意味する認証と整合性)、およびauth-conf(メッセージの暗号化も行われることを意味する認証、整合性および機密性) です。auth-int auth-confなどのように複数の値を指定できます。順番は優先順位を示し、クライアントとサーバーの優先順位の両方に一致する最初の値が選択されます。strength属性は、SASL の暗号強度を指定します。有効な値はlow、medium、およびhighです。policy要素内のno-anonymous要素は、匿名ログインを受け入れるメカニズムを許可するかどうかを指定します。許可するには、この値をfalseにし、拒否するにはtrueに設定します。
- 各クライアントでクライアント側の設定を実行します。Hot Rod クライアントをプログラムを用いて設定する際に、この設定の情報については、JBoss Data Grid の 『Developer Guide』 で確認できます。
25.9.1.4.2. Hot Rod 認証の設定 (MD5) リンクのコピーリンクがクリップボードにコピーされました!
手順25.5 Hot Rod 認証の設定 (MD5)
sasl要素をauthentication要素に追加し、以下のように Hot Rod コネクター設定をセットアップします (authentication要素の詳細は、「セキュリティーレルムの宣言的な有効化」 を参照してください)。Copy to Clipboard Copied! Toggle word wrap Toggle overflow server-name属性は、サーバーが着信クライアントに対して宣言する名前を指定します。クライアント設定にも同じサーバー名の値が含まれる必要があります。mechanisms属性は、使用される認証メカニズムを指定します。サポートされるメカニズムの一覧は、「SASL を使用した Hot Rod でのユーザー認証」 を参照してください。qop属性は、設定についての本番環境の値の SASL の品質を指定します。この属性のサポートされる値は、auth、auth-int、およびauth-confです。
- 各クライアントが Hot Rod コネクターに接続されるように設定します。この手順をプログラムを用いて実行する際に、その方法については JBoss Data Grid の 『Developer Guide』 で確認できます。
25.9.1.4.3. LDAP/Active Directory を使用した Hot Rod の設定 リンクのコピーリンクがクリップボードにコピーされました!
security-realm要素のnameパラメーターは、接続の確立時に使用するために参照するセキュリティーレルムを指定します。authentication要素には認証の詳細情報が含まれます。ldap要素は、ユーザーを認証するために LDAP 検索を使用する方法を指定します。最初に、LDAP への接続が確立され、ユーザーの識別名を特定するために指定されるユーザー名を使用して検索が実行されます。その後のサーバーへの接続は、ユーザーが指定するパスワードを使って確立されます。2 番目の接続が成功すると認証が行われます。connectionパラメーターは、LDAP に接続するために使用する接続の名前を指定します。- (オプション)
recursiveパラメーターは、フィルターが再帰的に実行されるかどうかを指定します。このパラメーターのデフォルト値はfalseです。 base-dnパラメーターは、検索の開始に使用するコンテキストの識別名を指定します。- (オプション)
user-dnパラメーターは、ユーザーの検索後にユーザーの識別名を読み取るために使用する属性を指定します。このパラメーターのデフォルト値はdnです。
outbound-connections要素は LDAP ディレクトリーに接続するために使用される接続名を指定します。ldap要素は送信 LDAP 接続のプロパティーを指定します。nameパラメーターは、この接続を参照するために使用される固有名を指定します。urlパラメーターは、LDAP 接続を確立するために使用される URL を指定します。search-dnパラメーターは、認証対象で、検索を実行するためのユーザーの識別名を指定します。search-credentialパラメーターは、LDAP にsearch-dnとして接続することが必要なパスワードを指定します。- (オプション)
initial-context-factoryパラメーターは、初期のコンテキストファクトリーのオーバーライドを許可します。このパラメーターのデフォルト値はcom.sun.jndi.ldap.LdapCtxFactoryです。
25.9.1.4.4. Hot Rod 認証の設定 (X.509) リンクのコピーリンクがクリップボードにコピーされました!
X.509 証明書をノードでインストールでき、かつ受信および送信 SSL 接続の認証のためにこれを他のノードで利用できるようにすることができます。これは、サーバーの外部アプリケーションへの表示方法を定義するセキュリティーレルム定義の <server-identities/> 要素を使用して有効にされます。この要素は、リモート接続の確立時、および X.509 キーのロード時に使用されるパスワードを設定するために使用できます。
X.509 証明書をノードにインストールする方法を示しています。
| パラメーター | 必須/オプション | 説明 |
|---|---|---|
path | 必須 | これはキーストアへのパスです。絶対パスを使用することも、次の属性の相対パスを使用することもできます。 |
relative-to | 任意 | キーストアが相対するパスを表すサービスの名前。 |
keystore-password | 必須 | キーストアを開くために必要なパスワード。 |
alias | 任意 | キーストアから使用するエントリーのエイリアス。複数のエントリーが使用されるキーストアの場合、最初に使用できるエントリーが使用されますが、これに依存するのではなく、使用されるエントリーを保証できるようにエイリアスを設定する必要があります。 |
key-password | 任意 | キーエントリーをロードするためのパスワード。省略されている場合、keystore-password が代わりに使用されます。 |
注記
key-password および alias を指定します。
UnrecoverableKeyException: Cannot recover key
UnrecoverableKeyException: Cannot recover key
25.9.2. REST インターフェースセキュリティー リンクのコピーリンクがクリップボードにコピーされました!
25.9.2.1. REST エンドポイントをパブリックインターフェースとして公開 リンクのコピーリンクがクリップボードにコピーされました!
management の socket-binding 要素の interface パラメーターの値を public に変更します。
<socket-binding name="http" interface="public" port="8080"/>
<socket-binding name="http"
interface="public"
port="8080"/>
25.9.2.2. REST エンドポイントのセキュリティーの有効化 リンクのコピーリンクがクリップボードにコピーされました!
注記
手順25.6 REST エンドポイントのセキュリティーの有効化
standalone.xml に以下の変更を行います。
セキュリティーパラメーターの指定
rest エンドポイントでsecurity-domainパラメーターおよびauth-methodパラメーターの有効な値を指定するようにします。これらのパラメーターの推奨設定は以下のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow セキュリティードメイン宣言のチェック
セキュリティーサブシステムに、対応するセキュリティードメイン宣言が含まれるようにします。セキュリティードメイン宣言の設定の詳細については、JBoss Enterprise Application Platform 7 ドキュメンテーションを参照してください。アプリケーションユーザーの追加
該当するスクリプトを実行し、アプリケーションユーザーを追加する設定を入力します。adduser.shスクリプト ($JDG_HOME/binに存在) を実行します。- Windows システムでは、
adduser.batファイル ($JDG_HOME/binに存在) を代わりに実行します。
- 追加するユーザーのタイプについて尋ねられたら、
bを入力してApplication User (application-users.properties)を選択します。 - リターンキーを押して、レルム (
ApplicationRealm) のデフォルト値を使用します。 - ユーザー名とパスワードを指定します。
- グループを尋ねられたら、
RESTと入力します。 - プロンプトが表示されたら、ユーザー名とアプリケーションレルム情報が正しいことを確認し、"yes" と入力して作業を続行します。
作成されたアプリケーションユーザーの確認
作成されたアプリケーションユーザーが正しく設定されていることを確認します。application-users.propertiesファイル ($JDG_HOME/standalone/configuration/に存在) にリストされた設定を確認します。以下は、このファイルの正しい設定の例です。user1=2dc3eacfed8cf95a4a31159167b936fc
user1=2dc3eacfed8cf95a4a31159167b936fcCopy to Clipboard Copied! Toggle word wrap Toggle overflow application-roles.propertiesファイル ($JDG_HOME/standalone/configuration/に存在) にリストされた設定を確認します。以下は、このファイルの正しい設定の例です。user1=REST
user1=RESTCopy to Clipboard Copied! Toggle word wrap Toggle overflow
サーバーのテスト
サーバーを起動し、ブラウザーウィンドウに以下のリンクを入力して REST エンドポイントにアクセスします。http://localhost:8080/rest/namedCache
http://localhost:8080/rest/namedCacheCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記
GET 要求の使用をテストする場合は、405応答コードが期待され、サーバーが正常に認証されたことが示されます。
25.9.3. Memcached インターフェースセキュリティー リンクのコピーリンクがクリップボードにコピーされました!
25.9.3.1. Memcached エンドポイントをパブリックインターフェースとして公開 リンクのコピーリンクがクリップボードにコピーされました!
socket-binding 要素の interface パラメーターの値を、以下のように management から public に変更します。
<socket-binding name="memcached" interface="public" port="11211" />
<socket-binding name="memcached"
interface="public"
port="11211" />
25.10. Active Directory 認証 (Kerberos 以外) リンクのコピーリンクがクリップボードにコピーされました!
25.11. Kerberos を使用した Active Directory 認証 (GSSAPI) リンクのコピーリンクがクリップボードにコピーされました!
手順25.7 Active Directory の Kerberos 認証の設定 (ライブラリーモード)
- JBoss EAP サーバーが Kerberos で認証できるように設定します。これは、以下のような専用セキュリティードメインを設定して実行できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 認証用のセキュリティードメインは JBoss EAP について正常に設定される必要があり、アプリケーションには有効な Kerberos チケットがなければなりません。Kerberos チケットを初期化するには、以下を使用して別のセキュリティードメインを参照する必要があります。. これは手順 3 で説明される標準の Kerberos ログインモジュールを参照します。
<module-option name="usernamePasswordDomain" value="krb-admin"/>
<module-option name="usernamePasswordDomain" value="krb-admin"/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 直前の手順で説明されているセキュリティードメインの認証設定は、以下の標準 Kerberos ログインモジュールを参照します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
25.12. セキュリティー監査ロガー リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.security.impl.DefaultAuditLogger です。このロガーは、利用可能なロギングフレームワーク (JBoss ロギングなど) を使用して監査ログを出力し、TRACE レベルおよび AUDIT カテゴリーで結果を提供します。
AUDIT カテゴリーを、ログファイル、JMS キュー、またはデータベースのいずれかに送信するには、適切なログアペンダーを使用します。
25.12.1. セキュリティー監査ロガーの設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
25.12.2. セキュリティー監査ロガーの設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
<authorization> 要素に指定します。<authorization> 要素は、Infinispan サブシステムの <cache-container> 要素内になければなりません (standalone.xml 設定ファイル内)。
注記
org.jboss.as.clustering.infinispan.subsystem.ServerAuditLogger です。詳細は、JBoss Enterprise Application Platform の 『Administration and Configuration Guide』 の 『Management Interface Audit Logging』 の章を参照してください。
25.12.3. カスタム監査ロガー リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.security.AuditLogger インターフェースを実装する必要があります。カスタムロガーが指定されない場合、デフォルトのロガー (DefaultAuditLogger) が使用されます。
第26章 クラスタートラフィックのセキュリティー リンクのコピーリンクがクリップボードにコピーされました!
26.1. ノードの認証および承認 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
DIGEST-MD5 および GSSAPI の両方のメカニズムがサポートされています。
例26.1 SASL 認証の設定
DIGEST-MD5 メカニズムを使用して ClusterRealm に対して認証しています。参加するノードには cluster ロールがなければなりません。
cluster-role 属性は、クラスターで JOIN または MERGE を実行するために、セキュリティーレルムですべてのノードが属する必要のあるロールを決定します。これが指定されない場合は、cluster-role 属性は、デフォルトでクラスター化された <cache-container> の名前になります。各ノードは、client-name プロパティーを使用して各自を識別します。何も指定されていない場合は、サーバーが実行されているホスト名が使用されます。
jboss.node.name システムプロパティーを指定して上書きすることもできます。以下が例になります。
standalone.sh -Djboss.node.name=node001
$ standalone.sh -Djboss.node.name=node001
注記
26.1.1. クラスターセキュリティーのノード認証の設定 (DIGEST-MD5) リンクのコピーリンクがクリップボードにコピーされました!
DIGEST-MD5 を使用する方法を示しています。
例26.2 DIGEST-MD5 メカニズムの使用
node001、node002、node003 であると想定した場合にcluster-users.properties には以下が含まれます。
node001=/<node001passwordhash>/node002=/<node002passwordhash>/node003=/<node003passwordhash>/
cluster-roles.properties には以下が含まれます。
- node001=clustered
- node002=clustered
- node003=clustered
add-users.sh スクリプトを使用できます。
add-user.sh -up cluster-users.properties -gp cluster-roles.properties -r ClusterRealm -u node001 -g clustered -p <password>
$ add-user.sh -up cluster-users.properties -gp cluster-roles.properties -r ClusterRealm -u node001 -g clustered -p <password>
MD5 パスワードハッシュも <sasl/> 要素の "client_password" プロパティーに置かれる必要があります。
<property name="client_password>...</property>
<property name="client_password>...</property>
注記
JOIN および MERGE を実行するノードのクレデンシャルをレルムに対して検証します。
26.1.2. クラスターセキュリティーのノード認証の設定 (GSSAPI/Kerberos) リンクのコピーリンクがクリップボードにコピーされました!
GSSAPI メカニズムを使用する場合、client_name は、セキュリティードメインサブシステム内で定義される Kerberos で有効にされるログインモジュールの名前として使用されます。この実行方法についての詳細は、「Hot Rod 認証の設定 (GSSAPI/Kerberos)」 を参照してください。
例26.3 Kerberos ログインモードの使用
<sasl <!-- Additional configuration information here --> >
<property name="login_module_name">
<!-- Additional configuration information here -->
</property>
</sasl>
<sasl <!-- Additional configuration information here --> >
<property name="login_module_name">
<!-- Additional configuration information here -->
</property>
</sasl>
authentication セクションは無視されます。authorization 設定は、ノードのプリンシパルが必要なクラスターロールに属するため、依然として必要になります。
jgroups/$NODE_NAME/$CACHE_CONTAINER_NAME@REALM
jgroups/$NODE_NAME/$CACHE_CONTAINER_NAME@REALM
26.2. ノードセキュリティーの設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
SASL プロトコルを JGroups XML 設定に追加して有効にされます。
CallbackHandlers などの JAAS の概念に基づいています。ユーザーはクライアントとサーバーの両サイドに独自の CallbackHandlers を指定する必要があります。
重要
JAAS API はユーザー認証および承認の設定時にのみ利用でき、ノードのセキュリティー用には利用できません。
注記
CallbackHandler クラスは例示する目的でのみ使用されており、Red Hat JBoss Data Grid リリースには含まれていません。ユーザーは特定の LDAP 実装に適した CallbackHandler クラスを提供する必要があります。
例26.4 JGroups での SASL 認証のセットアップ
DIGEST-MD5 メカニズムを使用します。各ノードは、クラスターへの参加時に使用するユーザーとパスワードを宣言する必要があります。
重要
26.2.1. 単純な承認コールバックハンドラー リンクのコピーリンクがクリップボードにコピーされました!
SimpleAuthorizingCallbackHandler クラスを使用できます。これを有効にするには、以下の例にあるように server_callback_handler と client_callback_handler の両方を org.jgroups.auth.sasl.SimpleAuthorizingCallbackHandler に設定します。
SimpleAuthorizingCallbackHandler は、java.util.Properties のインスタンスにコンストラクターを渡すプログラムを用いた方法によるか、または -DpropertyName=propertyValue 表記を使用してコマンドラインに設定される標準的な Java システムプロパティーを使用して設定できます。以下のプロパティーを使用できます。
sasl.credentials.properties- principal=password として表されるプリンシパル/クレデンシャルのマッピングが含まれるプロパティーファイルへのパス。sasl.local.principal- ローカルノードを識別するために使用されるプリンシパルの名前。これは sasl.credentials.properties ファイルに存在している必要があります。sasl.roles.properties- (オプション) principal=role1,role2,role3 として表されるプリンシパル/ロールのマッピングが含まれるプロパティーファイルへのパス。sasl.role- (オプション) プリンシパルがある場合にのみノードの参加を承認します (ある場合)。sasl.realm- (オプション) SASL メカニズムが要求し、使用するレルムの名前。
26.2.2. ライブラリーモードのノード認証の設定 (DIGEST-MD5) リンクのコピーリンクがクリップボードにコピーされました!
CallbackHandler が必要になります。
server_callback_handler_classはコーディネーターによって使用されます。client_callback_handler_classは他のノードによって使用されます。
CallbackHandler を示しています。
例26.5 コールバックハンドラー
26.2.3. ライブラリーノードのノード認証の設定 (GSSAPI) リンクのコピーリンクがクリップボードにコピーされました!
login_module_name を callback の代わりに指定する必要があります。
jgroups/$server_name@REALM として構成されるため、server_name を指定する必要もあります。
例26.6 コーディネーターノードでのログインモジュールおよびサーバーの指定
<SASL mech="GSSAPI"
server_name="node0/clustered"
login_module_name="krb-node0"
server_callback_handler_class="org.infinispan.test.integration.security.utils.SaslPropCallbackHandler" />
<SASL mech="GSSAPI"
server_name="node0/clustered"
login_module_name="krb-node0"
server_callback_handler_class="org.infinispan.test.integration.security.utils.SaslPropCallbackHandler" />
server_callback_handler_class をノードの承認用に指定する必要があります。これにより、認証された参加ノードがクラスターに参加するパーミッションを持つかどうかが決まります。
注記
jgroups/server_name として構成されるため、Kerberos のサーバープリンシパルも jgroups/server_name である必要があります。たとえば、Kerberos のサーバー名が jgroups/node1/mycache の場合、サーバー名は node1/mycache である必要があります。
26.3. JGroups の暗号化 リンクのコピーリンクがクリップボードにコピーされました!
SYM_ENCRYPT および ASYM_ENCRYPT プロトコルが含まれます。
重要
ENCRYPT プロトコルが非推奨になったため、本番環境で使用することはできません。SYM_ENCRYPT または ASYM_ENCRYPT のいずれかを使用することをお勧めします。
encrypt_entire_message が true でなければなりません。これらのプロトコルを定義する際、NAKACK2 の下に直接配置する必要があります。
SYM_ENCRYPT:JCEKSストアタイプを使用してキーストアのシークレットキーで設定されます。ASYM_ENCRYPT: アルゴリズムおよびキーサイズで設定されます。このシナリオでは、シークレットキーはキーストアから取得されませんが、コーディネーターによって生成され、新規メンバーに配信されます。メンバーがクラスターに参加すると、それらがシークレットキーの要求をコーディネーターに送信し、コーディネーターはメンバーの公開鍵で暗号化された新規メンバーにシークレットキーと共に応答します。
26.3.1. JGroups 暗号化プロトコルの設定 リンクのコピーリンクがクリップボードにコピーされました!
- 標準 Java プロパティーを設定で使用することもでき、起動時に JGroups 設定へのパスを
-Dオプションを使用して渡すことができます。 - デフォルトの事前に設定された JGroups ファイルは
infinispan-embedded.jarにパッケージ化されます。または、独自の設定ファイルを作成できます。ライブラリーモードでカスタム JGroup 設定を使用するために JBoss Data Grid をセットアップする方法については、「JGroups の設定 (ライブラリーモード) 」 を参照してください。 - リモートクライアントサーバーモードでは、JGroups 設定はメインサーバーの設置ファイルの一部になります。
SYM_ENCRYPT と ASYM_ENCRYPT の両方のプロトコルを定義する際に、それらを設定ファイルの NAKACK2 の下に直接配置します。
26.3.2. SYM_ENCRYPT: キーストアの使用 リンクのコピーリンクがクリップボードにコピーされました!
SYM_ENCRYPT はストアタイプ JCEKS を使用します。JCEKS と互換性のあるキーストアを生成するには、以下の keytool のコマンドラインオプションを使用します。
keytool -genseckey -alias myKey -keypass changeit -storepass changeit -keyalg Blowfish -keysize 56 -keystore defaultStore.keystore -storetype JCEKS
$ keytool -genseckey -alias myKey -keypass changeit -storepass changeit -keyalg Blowfish -keysize 56 -keystore defaultStore.keystore -storetype JCEKS
SYM_ENCRYPT は、以下の情報をアプリケーションで使用される JGroups ファイルに追加して設定できます。
<SYM_ENCRYPT sym_algorithm="AES"
encrypt_entire_message="true"
keystore_name="defaultStore.keystore"
store_password="changeit"
alias="myKey"/>
<SYM_ENCRYPT sym_algorithm="AES"
encrypt_entire_message="true"
keystore_name="defaultStore.keystore"
store_password="changeit"
alias="myKey"/>
注記
defaultStore.keystore はクラスパスに置かれる必要があります。
26.3.3. ASYM_ENCRYPT: アルゴリズムとキーサイズによる設定 リンクのコピーリンクがクリップボードにコピーされました!
- シークレットキーがコーディネーターにより生成され、配信される。
- ビューが変更されると、ピアは独自の公開鍵でキーの要求を送信し、シークレットキーを要求する。
- コーディネーターは公開鍵を使ってシークレットキーを暗号化し、これをピアに送信し戻す。
- ピアが独自のシークレットキーとしてキーの暗号を解除し、これをインストールする。
- 追加の通信はシークレットキーを使用して暗号化および暗号化が解除される。
例26.7 ASYM_ENCRYPT の例
ASYM_ENCRYPT は NAKACK2 の直下に置かれ、encrypt_entire_message が有効にされています。これはメッセージヘッダーがメッセージ本体と共に暗号化されることを示します。つまり、NAKACK2 および UNICAST3 プロトコルも暗号化されます。さらに、AUTH は設定の一部として組み込まれるので、認証されたノードのみがコーディネーターからシークレットキーを要求できます。
change_key_on_leave を true に設定することによりクラスターメンバーの退出時に生成することもできます。
26.3.4. JGroups 暗号化設定パラメーター リンクのコピーリンクがクリップボードにコピーされました!
SYM_ENCRYPT および ASYM_ENCRYPT が共に拡張する ENCRYPT JGroups プロトコルの設定パラメーターを示しています。
| 名前 | 説明 |
|---|---|
| asym_algorithm | 非対称アルゴリズムの暗号化エンジンの変換。デフォルトは RSA です。 |
| asym_keylength | 初期の公開/秘密鍵の長さ。デフォルトは 512 です。 |
| asym_provider | 暗号化サービスプロバイダー。デフォルトは Bouncy Castle Provider です。 |
| encrypt_entire_message | デフォルトでは、メッセージ本体のみが暗号化されます。encrypt_entire_message を有効にすると、すべてのヘッダー、宛先および送信元アドレス、およびメッセージ本体が暗号化されます。 |
| sym_algorithm | 対称アルゴリズムの暗号化エンジンの変換。デフォルトは AES です。 |
| sym_keylength | 一致する対称アルゴリズムの初期のキーの長さ。デフォルトは 128 です。 |
| sym_provider | 暗号化サービスプロバイダー。デフォルトは Bouncy Castle Provider です。 |
SYM_ENCRYPT プロトコルパラメーターの一覧を示しています。
| 名前 | 説明 |
|---|---|
| alias | キーの回復に使用されるエイリアス。デフォルトを変更します。 |
| key_password | キーを回復するためのパスワード。デフォルトを変更します。 |
| keystore_name | キーストアリポジトリーが含まれるクラスパス上のファイル。 |
| store_password | 整合性のチェックまたはキーストアのロック解除に使用されるパスワード。デフォルトを変更します。 |
ASYM_ENCRYPT プロトコルパラメーターの一覧を示しています。
| 名前 | 説明 |
|---|---|
| change_key_on_leave | メンバーがビューから出る際にシークレットキーが変更されるため、古いメンバーによる傍受 (eavesdrop)を防ぐことができます。 |
パート XIII. コマンドラインツール リンクのコピーリンクがクリップボードにコピーされました!
- JBoss Data Grid Library CLI。詳細については、「Red Hat JBoss Data Grid ライブラリーモード CLI」を参照してください。
- JBoss Data Grid Server CLI。詳細については、「Red Hat Data Grid Server CLI」を参照してください。
第27章 Red Hat JBoss Data Grid CLI リンクのコピーリンクがクリップボードにコピーされました!
27.1. Red Hat JBoss Data Grid ライブラリーモード CLI リンクのコピーリンクがクリップボードにコピーされました!
27.1.1. ライブラリーモード CLI (サーバー) の起動 リンクのコピーリンクがクリップボードにコピーされました!
standalone および domain ファイルを使って起動します。Linux の場合、standlaone.sh または domain.sh スクリプトを使用し、Windows の場合、standalone.bat または domain.bat ファイルを使用します。
27.1.2. ライブラリーモード CLI (クライアント) の起動 リンクのコピーリンクがクリップボードにコピーされました!
bin ディレクトリーにある cli ファイルを使用して JBoss Data Grid CLI クライアントを起動します。Linux の場合は、bin/cli.sh を実行し、Windows の場合は、bin\cli.bat を実行します。
27.1.3. CLI クライアントのコマンドラインスイッチ リンクのコピーリンクがクリップボードにコピーされました!
| 短縮表記 | 全表記 | 説明 |
|---|---|---|
| -c | --connect=${URL} | 実行中の Red Hat JBoss Data Grid インスタンスに接続します。たとえば、JMX over RMI の場合、jmx://[username[:password]]@host:port[/container[/cache]] を使用し、JMX over JBoss Remoting の場合は remoting://[username[:password]]@host:port[/container[/cache]] を使用します。 |
| -f | --file=${FILE} | インタラクティブモードではなく、指定されたファイルからの入力を読み込みます。値が - に設定されると、stdin が入力として使用されます。 |
| -h | --help | ヘルプ情報を表示します。 |
| -v | --version | CLI のバージョン情報を表示します。 |
27.1.4. アプリケーションへの接続 リンクのコピーリンクがクリップボードにコピーされました!
[disconnected//]> connect jmx://localhost:12000 [jmx://localhost:12000/MyCacheManager/>
[disconnected//]> connect jmx://localhost:12000
[jmx://localhost:12000/MyCacheManager/>
注記
12000 は、JVM が開始される際の値によって変わります。たとえば、JVM を -Dcom.sun.management.jmxremote.port=12000 コマンドラインパラメーターを使用して開始する場合はこのポートが使用されますが、それ以外の場合はランダムポートが選択されます。リモートプロトコル (remoting://localhost:9999) が使用される場合、Red Hat JBoss Data Grid サーバー管理ポートが使用されます (デフォルトはポート 9999)。
CacheManager を含む、アクティブな接続情報を表示します。
cache コマンドを使用してキャッシュを選択します。CLI はタブ補完をサポートしているため、cache を使用してタブボタンを押すと、アクティブなキャッシュのリストが表示されます。
[[jmx://localhost:12000/MyCacheManager/> cache ___defaultcache namedCache [jmx://localhost:12000/MyCacheManager/]> cache ___defaultcache [jmx://localhost:12000/MyCacheManager/___defaultcache]>
[[jmx://localhost:12000/MyCacheManager/> cache
___defaultcache namedCache
[jmx://localhost:12000/MyCacheManager/]> cache ___defaultcache
[jmx://localhost:12000/MyCacheManager/___defaultcache]>
27.2. Red Hat Data Grid Server CLI リンクのコピーリンクがクリップボードにコピーされました!
- 設定
- 管理
- メトリックスの取得
27.2.1. サーバーモード CLI の起動 リンクのコピーリンクがクリップボードにコピーされました!
JDG_HOME/bin/cli.sh
$ JDG_HOME/bin/cli.sh
C:\>JDG_HOME\bin\cli.bat
C:\>JDG_HOME\bin\cli.bat
27.3. CLI コマンド リンクのコピーリンクがクリップボードにコピーされました!
deny (「deny コマンド」を参照)、grant (「grant コマンド」を参照)、およびroles (「roles コマンド」を参照) コマンドは、サーバーモード CLI でのみ利用可能です。
27.3.1. abort コマンド リンクのコピーリンクがクリップボードにコピーされました!
abort コマンドは、start コマンドを使用して開始された実行中のバッチを中止します。バッチ処理は指定したキャッシュに対して有効にされている必要があります。以下は使用例です。
[jmx://localhost:12000/MyCacheManager/namedCache]> start [jmx://localhost:12000/MyCacheManager/namedCache]> put a a [jmx://localhost:12000/MyCacheManager/namedCache]> abort [jmx://localhost:12000/MyCacheManager/namedCache]> get a null
[jmx://localhost:12000/MyCacheManager/namedCache]> start
[jmx://localhost:12000/MyCacheManager/namedCache]> put a a
[jmx://localhost:12000/MyCacheManager/namedCache]> abort
[jmx://localhost:12000/MyCacheManager/namedCache]> get a
null
27.3.2. begin コマンド リンクのコピーリンクがクリップボードにコピーされました!
begin コマンドはトランザクションを開始します。このコマンドでは、対象とするキャッシュに対してトランザクションを有効にする必要があります。このコマンドの使用例は次のとおりです。
[jmx://localhost:12000/MyCacheManager/namedCache]> begin [jmx://localhost:12000/MyCacheManager/namedCache]> put a a [jmx://localhost:12000/MyCacheManager/namedCache]> put b b [jmx://localhost:12000/MyCacheManager/namedCache]> commit
[jmx://localhost:12000/MyCacheManager/namedCache]> begin
[jmx://localhost:12000/MyCacheManager/namedCache]> put a a
[jmx://localhost:12000/MyCacheManager/namedCache]> put b b
[jmx://localhost:12000/MyCacheManager/namedCache]> commit
27.3.3. cache コマンド リンクのコピーリンクがクリップボードにコピーされました!
cache コマンドは、すべての後続の操作に使用されるデフォルトキャッシュを指定します。パラメーターを指定せずに呼び出されると、現在選択されているキャッシュを表示します。この使用例は次のとおりです。
[jmx://localhost:12000/MyCacheManager/namedCache]> cache ___defaultcache [jmx://localhost:12000/MyCacheManager/___defaultcache]> cache ___defaultcache [jmx://localhost:12000/MyCacheManager/___defaultcache]>
[jmx://localhost:12000/MyCacheManager/namedCache]> cache ___defaultcache
[jmx://localhost:12000/MyCacheManager/___defaultcache]> cache
___defaultcache
[jmx://localhost:12000/MyCacheManager/___defaultcache]>
27.3.4. clearcache コマンド リンクのコピーリンクがクリップボードにコピーされました!
clearcache コマンドは、キャッシュからすべてのコンテンツをクリアします。この使用例は次のとおりです。
[jmx://localhost:12000/MyCacheManager/namedCache]> put a a [jmx://localhost:12000/MyCacheManager/namedCache]> clearcache [jmx://localhost:12000/MyCacheManager/namedCache]> get a null
[jmx://localhost:12000/MyCacheManager/namedCache]> put a a
[jmx://localhost:12000/MyCacheManager/namedCache]> clearcache
[jmx://localhost:12000/MyCacheManager/namedCache]> get a
null
27.3.5. commit コマンド リンクのコピーリンクがクリップボードにコピーされました!
commit コマンドは、進行中のトランザクションへの変更をコミットします。この使用例は次のとおりです。
[jmx://localhost:12000/MyCacheManager/namedCache]> begin [jmx://localhost:12000/MyCacheManager/namedCache]> put a a [jmx://localhost:12000/MyCacheManager/namedCache]> put b b [jmx://localhost:12000/MyCacheManager/namedCache]> commit
[jmx://localhost:12000/MyCacheManager/namedCache]> begin
[jmx://localhost:12000/MyCacheManager/namedCache]> put a a
[jmx://localhost:12000/MyCacheManager/namedCache]> put b b
[jmx://localhost:12000/MyCacheManager/namedCache]> commit
27.3.6. container コマンド リンクのコピーリンクがクリップボードにコピーされました!
container コマンドはデフォルトのキャッシュコンテナー (キャッシュマネージャー) を選択します。パラメーターを指定せずに呼び出されると、利用可能なすべてのコンテナーをリストします。この使用例は次のとおりです。
[jmx://localhost:12000/MyCacheManager/namedCache]> container MyCacheManager OtherCacheManager [jmx://localhost:12000/MyCacheManager/namedCache]> container OtherCacheManager [jmx://localhost:12000/OtherCacheManager/]>
[jmx://localhost:12000/MyCacheManager/namedCache]> container
MyCacheManager OtherCacheManager
[jmx://localhost:12000/MyCacheManager/namedCache]> container OtherCacheManager
[jmx://localhost:12000/OtherCacheManager/]>
27.3.7. create コマンド リンクのコピーリンクがクリップボードにコピーされました!
create コマンドは、既存のキャッシュ定義に基づいて新規のキャッシュを作成します。この使用例は次のとおりです。
[jmx://localhost:12000/MyCacheManager/namedCache]> create newCache like namedCache [jmx://localhost:12000/MyCacheManager/namedCache]> cache newCache [jmx://localhost:12000/MyCacheManager/newCache]>
[jmx://localhost:12000/MyCacheManager/namedCache]> create newCache like namedCache
[jmx://localhost:12000/MyCacheManager/namedCache]> cache newCache
[jmx://localhost:12000/MyCacheManager/newCache]>
27.3.8. deny コマンド リンクのコピーリンクがクリップボードにコピーされました!
deny コマンドは、以前にプリンシパルに割り当てられたロールを拒否するために使用できます。
[remoting://localhost:9999]> deny supervisor to user1
[remoting://localhost:9999]> deny supervisor to user1
注記
deny コマンドは JBoss Data Grid サーバーモード CLI でのみ利用できます。
27.3.9. disconnect コマンド リンクのコピーリンクがクリップボードにコピーされました!
disconnect コマンドは、現在アクティブな接続を解除します。これにより、CLI は別のインスタンスに接続できます。この使用例は次のとおりです。
[jmx://localhost:12000/MyCacheManager/namedCache]> disconnect [disconnected//]
[jmx://localhost:12000/MyCacheManager/namedCache]> disconnect
[disconnected//]
27.3.10. encoding コマンド リンクのコピーリンクがクリップボードにコピーされました!
encoding コマンドは、キャッシュから/へのエントリーの読み書きを行う際に使用するデフォルトのコーデックを設定します。引数なしで呼び出される場合、現在選択されているコーデックが表示されます。この使用例は次のとおりです。
27.3.11. end コマンド リンクのコピーリンクがクリップボードにコピーされました!
end コマンドは、 start コマンドを使用して開始された実行中のバッチを終了します。この使用例は次のとおりです。
[jmx://localhost:12000/MyCacheManager/namedCache]> start [jmx://localhost:12000/MyCacheManager/namedCache]> put a a [jmx://localhost:12000/MyCacheManager/namedCache]> end [jmx://localhost:12000/MyCacheManager/namedCache]> get a a
[jmx://localhost:12000/MyCacheManager/namedCache]> start
[jmx://localhost:12000/MyCacheManager/namedCache]> put a a
[jmx://localhost:12000/MyCacheManager/namedCache]> end
[jmx://localhost:12000/MyCacheManager/namedCache]> get a
a
27.3.12. evict コマンド リンクのコピーリンクがクリップボードにコピーされました!
evict コマンドは、キャッシュから特定のキーに関連付けられたエントリーをエビクトします。この使用例は次のとおりです。
[jmx://localhost:12000/MyCacheManager/namedCache]> put a a [jmx://localhost:12000/MyCacheManager/namedCache]> evict a
[jmx://localhost:12000/MyCacheManager/namedCache]> put a a
[jmx://localhost:12000/MyCacheManager/namedCache]> evict a
27.3.13. get コマンド リンクのコピーリンクがクリップボードにコピーされました!
get コマンドは、指定されたキーと関連付けられている値を表示します。プリミティブ型および 文字列の場合に、get コマンドはデフォルト表現のみを表示します。他のオブジェクトの場合、オブジェクトの JSON 表現が表示されます。この使用例は次のとおりです。
[jmx://localhost:12000/MyCacheManager/namedCache]> put a a [jmx://localhost:12000/MyCacheManager/namedCache]> get a a
[jmx://localhost:12000/MyCacheManager/namedCache]> put a a
[jmx://localhost:12000/MyCacheManager/namedCache]> get a
a
27.3.14. grant コマンド リンクのコピーリンクがクリップボードにコピーされました!
ClusterRoleMapper と設定された場合は、ロールマッピングに対するプリンシパルはクラスターレジストリー (すべてのノードで利用可能なレプリケートされたキャッシュ) 内に格納されます。grant コマンドは、以下のようにプリンシパルに新しいロールを与えるために使用できます。
[remoting://localhost:9999]> grant supervisor to user1
[remoting://localhost:9999]> grant supervisor to user1
注記
grant コマンドは JBoss Data Grid サーバーモード CLI でのみ利用できます。
27.3.15. info コマンド リンクのコピーリンクがクリップボードにコピーされました!
info コマンドは選択されたキャッシュまたはコンテナーの設定を表示します。この使用例は次のとおりです。
[jmx://localhost:12000/MyCacheManager/namedCache]> info
GlobalConfiguration{asyncListenerExecutor=ExecutorFactoryConfiguration{factory=org.infinispan.executors.DefaultExecutorFactory@98add58}, asyncTransportExecutor=ExecutorFactoryConfiguration{factory=org.infinispan.executors.DefaultExecutorFactory@7bc9c14c}, evictionScheduledExecutor=ScheduledExecutorFactoryConfiguration{factory=org.infinispan.executors.DefaultScheduledExecutorFactory@7ab1a411}, replicationQueueScheduledExecutor=ScheduledExecutorFactoryConfiguration{factory=org.infinispan.executors.DefaultScheduledExecutorFactory@248a9705}, globalJmxStatistics=GlobalJmxStatisticsConfiguration{allowDuplicateDomains=true, enabled=true, jmxDomain='jboss.infinispan', mBeanServerLookup=org.jboss.as.clustering.infinispan.MBeanServerProvider@6c0dc01, cacheManagerName='local', properties={}}, transport=TransportConfiguration{clusterName='ISPN', machineId='null', rackId='null', siteId='null', strictPeerToPeer=false, distributedSyncTimeout=240000, transport=null, nodeName='null', properties={}}, serialization=SerializationConfiguration{advancedExternalizers={1100=org.infinispan.server.core.CacheValue$Externalizer@5fabc91d, 1101=org.infinispan.server.memcached.MemcachedValue$Externalizer@720bffd, 1104=org.infinispan.server.hotrod.ServerAddress$Externalizer@771c7eb2}, marshaller=org.infinispan.marshall.VersionAwareMarshaller@6fc21535, version=52, classResolver=org.jboss.marshalling.ModularClassResolver@2efe83e5}, shutdown=ShutdownConfiguration{hookBehavior=DONT_REGISTER}, modules={}, site=SiteConfiguration{localSite='null'}}
[jmx://localhost:12000/MyCacheManager/namedCache]> info
GlobalConfiguration{asyncListenerExecutor=ExecutorFactoryConfiguration{factory=org.infinispan.executors.DefaultExecutorFactory@98add58}, asyncTransportExecutor=ExecutorFactoryConfiguration{factory=org.infinispan.executors.DefaultExecutorFactory@7bc9c14c}, evictionScheduledExecutor=ScheduledExecutorFactoryConfiguration{factory=org.infinispan.executors.DefaultScheduledExecutorFactory@7ab1a411}, replicationQueueScheduledExecutor=ScheduledExecutorFactoryConfiguration{factory=org.infinispan.executors.DefaultScheduledExecutorFactory@248a9705}, globalJmxStatistics=GlobalJmxStatisticsConfiguration{allowDuplicateDomains=true, enabled=true, jmxDomain='jboss.infinispan', mBeanServerLookup=org.jboss.as.clustering.infinispan.MBeanServerProvider@6c0dc01, cacheManagerName='local', properties={}}, transport=TransportConfiguration{clusterName='ISPN', machineId='null', rackId='null', siteId='null', strictPeerToPeer=false, distributedSyncTimeout=240000, transport=null, nodeName='null', properties={}}, serialization=SerializationConfiguration{advancedExternalizers={1100=org.infinispan.server.core.CacheValue$Externalizer@5fabc91d, 1101=org.infinispan.server.memcached.MemcachedValue$Externalizer@720bffd, 1104=org.infinispan.server.hotrod.ServerAddress$Externalizer@771c7eb2}, marshaller=org.infinispan.marshall.VersionAwareMarshaller@6fc21535, version=52, classResolver=org.jboss.marshalling.ModularClassResolver@2efe83e5}, shutdown=ShutdownConfiguration{hookBehavior=DONT_REGISTER}, modules={}, site=SiteConfiguration{localSite='null'}}
27.3.16. locate コマンド リンクのコピーリンクがクリップボードにコピーされました!
locate コマンドは、分散クラスター内の指定されたエントリーの物理的な場所を表示します。この使用例は次のとおりです。
[jmx://localhost:12000/MyCacheManager/namedCache]> locate a [host/node1,host/node2]
[jmx://localhost:12000/MyCacheManager/namedCache]> locate a
[host/node1,host/node2]
27.3.17. put コマンド リンクのコピーリンクがクリップボードにコピーされました!
put コマンドはエントリーをキャッシュに挿入します。キーに対するマッピングが存在する場合、put コマンドは古い値を上書きします。CLI により、キーと値を保存するために使用されるデータのタイプに対して制御が可能になります。この使用例は次のとおりです。
[jmx://localhost:12000/MyCacheManager/namedCache]> put a a
[jmx://localhost:12000/MyCacheManager/namedCache]> put b 100
[jmx://localhost:12000/MyCacheManager/namedCache]> put c 4139l
[jmx://localhost:12000/MyCacheManager/namedCache]> put d true
[jmx://localhost:12000/MyCacheManager/namedCache]> put e { "package.MyClass": {"i": 5, "x": null, "b": true } }
[jmx://localhost:12000/MyCacheManager/namedCache]> put a a
[jmx://localhost:12000/MyCacheManager/namedCache]> put b 100
[jmx://localhost:12000/MyCacheManager/namedCache]> put c 4139l
[jmx://localhost:12000/MyCacheManager/namedCache]> put d true
[jmx://localhost:12000/MyCacheManager/namedCache]> put e { "package.MyClass": {"i": 5, "x": null, "b": true } }
put は次のようにライフスパンと最大アイドル時間の値を指定することができます。
[jmx://localhost:12000/MyCacheManager/namedCache]> put a a expires 10s [jmx://localhost:12000/MyCacheManager/namedCache]> put a a expires 10m maxidle 1m
[jmx://localhost:12000/MyCacheManager/namedCache]> put a a expires 10s
[jmx://localhost:12000/MyCacheManager/namedCache]> put a a expires 10m maxidle 1m
27.3.18. replace コマンド リンクのコピーリンクがクリップボードにコピーされました!
replace コマンドはキャッシュ内の既存のエントリーを指定した新しい値に置き換えます。この使用例は次のとおりです。
27.3.19. roles コマンド リンクのコピーリンクがクリップボードにコピーされました!
ClusterRoleMapper と設定された場合は、ロールマッピングに対するプリンシパルはクラスターレジストリー (すべてのノードで利用可能なレプリケートされたキャッシュ) 内に格納されます。roles コマンドは、特定のユーザーまたはすべてのユーザー (ユーザーが指定されていない場合) に関連付けられたロールをリストするために使用できます。
[remoting://localhost:9999]> roles user1 [supervisor, reader]
[remoting://localhost:9999]> roles user1
[supervisor, reader]
注記
roles コマンドは JBoss Data Grid サーバーモード CLI でのみ利用できます。
27.3.20. rollback コマンド リンクのコピーリンクがクリップボードにコピーされました!
rollback コマンドは、進行中のトランザクションによる変更をロールバックします。この使用例は次のとおりです。
[jmx://localhost:12000/MyCacheManager/namedCache]> begin [jmx://localhost:12000/MyCacheManager/namedCache]> put a a [jmx://localhost:12000/MyCacheManager/namedCache]> put b b [jmx://localhost:12000/MyCacheManager/namedCache]> rollback
[jmx://localhost:12000/MyCacheManager/namedCache]> begin
[jmx://localhost:12000/MyCacheManager/namedCache]> put a a
[jmx://localhost:12000/MyCacheManager/namedCache]> put b b
[jmx://localhost:12000/MyCacheManager/namedCache]> rollback
27.3.21. site コマンド リンクのコピーリンクがクリップボードにコピーされました!
site コマンドは、データセンター間レプリケーションに関連する管理タスクを実行します。また、このコマンドはサイトの状態についての情報を取得し、サイトの状態を切り替えます。この使用例は次のとおりです。
27.3.22. start コマンド リンクのコピーリンクがクリップボードにコピーされました!
start コマンドは、操作のバッチを開始します。この使用例は次のとおりです。
[jmx://localhost:12000/MyCacheManager/namedCache]> start [jmx://localhost:12000/MyCacheManager/namedCache]> put a a [jmx://localhost:12000/MyCacheManager/namedCache]> put b b [jmx://localhost:12000/MyCacheManager/namedCache]> end
[jmx://localhost:12000/MyCacheManager/namedCache]> start
[jmx://localhost:12000/MyCacheManager/namedCache]> put a a
[jmx://localhost:12000/MyCacheManager/namedCache]> put b b
[jmx://localhost:12000/MyCacheManager/namedCache]> end
27.3.23. stats コマンド リンクのコピーリンクがクリップボードにコピーされました!
stats コマンドはキャッシュの統計を表示します。この使用例は次のとおりです。
27.3.24. upgrade コマンド リンクのコピーリンクがクリップボードにコピーされました!
upgrade コマンドは、ローリングアップグレードの手順を実装します。ローリングアップグレードの詳細については、36章ローリングアップグレード を参照してください。
upgrade コマンドの使用例は次のとおりです。
[jmx://localhost:12000/MyCacheManager/namedCache]> upgrade --synchronize=hotrod --all [jmx://localhost:12000/MyCacheManager/namedCache]> upgrade --disconnectsource=hotrod --all
[jmx://localhost:12000/MyCacheManager/namedCache]> upgrade --synchronize=hotrod --all
[jmx://localhost:12000/MyCacheManager/namedCache]> upgrade --disconnectsource=hotrod --all
27.3.25. version コマンド リンクのコピーリンクがクリップボードにコピーされました!
version コマンドは、CLI クライアントおよびサーバーのバージョン情報を表示します。この使用例は次のとおりです。
[jmx://localhost:12000/MyCacheManager/namedCache]> version Client Version 5.2.1.Final Server Version 5.2.1.Final
[jmx://localhost:12000/MyCacheManager/namedCache]> version
Client Version 5.2.1.Final
Server Version 5.2.1.Final
パート XIV. 他の Red Hat JBoss Data Grid 機能 リンクのコピーリンクがクリップボードにコピーされました!
第28章 1 次キャッシュのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
28.1. 1 次キャッシュについて リンクのコピーリンクがクリップボードにコピーされました!
28.2. 1 次キャッシュの設定 リンクのコピーリンクがクリップボードにコピーされました!
28.2.1. 1 次キャッシュの設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
例28.1 ライブラリーモードの 1 次キャッシュ設定
<distributed-cache name="distributed_cache"
owners="2"
l1-lifespan="0"
l1-cleanup-interval="60000"/>
<distributed-cache name="distributed_cache"
owners="2"
l1-lifespan="0"
l1-cleanup-interval="60000"/>
l1-lifespan属性は、1 次キャッシュに配置されるエントリーの最大ライフスパンをミリ秒単位で示します。これは非分散キャッシュでは許可されません。L1 のデフォルトでは、この値は 1 次キャッシュが無効にされていることを示す 0 になり、正の値が定義される場合にのみ有効にされます。li-cleanup-intervalパラメーターは、1 次トラッキングデータを除去するクリーンアップタスクが実行される頻度をミリ秒単位で制御します。これはデフォルトで 10 分に定義されます。
28.2.2. 1 次キャッシュの設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
0 を示しています。この値は、このキャッシュが Red Hat JBoss Data Grid のリモートクライアントサーバーモードで無効にされていることを示しています。
例28.2 リモートクライアントサーバーモード用 1 次キャッシュの設定
<distributed-cache l1-lifespan="0"> <!-- Additional configuration information here --> </distributed-cache>
<distributed-cache l1-lifespan="0">
<!-- Additional configuration information here -->
</distributed-cache>
l1-lifespan 要素は、1 次キャッシュを有効にし、キャッシュの 1 次キャッシュエントリーについてのライフスパンを設定するために distributed-cache 要素に追加されます。この要素は、分散キャッシュにのみ有効です。
l1-lifespan が 0 または負の数値 (-1) に設定される場合、1 次キャッシュは無効になります。1 次キャッシュは、l1-lifespan の値が 0 より大きくなる場合に有効になります。
重要
注記
l1-lifespan 属性が設定されていない場合であっても分散キャッシュが使用されたときにデフォルトで有効になります。デフォルトのライフスパン値は 10 分です。JBoss Data Grid 6.3 以降、デフォルトのライフスパンは 0 であり 1 次キャッシュが無効になります。l1-lifespan パラメーターにゼロ以外の値を設定して 1 次キャッシュを有効にします。
第29章 トランザクションのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
29.1. トランザクション リンクのコピーリンクがクリップボードにコピーされました!
29.1.1. トランザクションマネージャーについて リンクのコピーリンクがクリップボードにコピーされました!
- トランザクションの開始および終了
- 各トランザクションについての情報の管理
- トランザクションが複数リソースにまたがって動作する際のトランザクションの調整
- 変更のロールバックによる、失敗したトランザクションからのリカバリー
29.1.2. XA リソースおよび同期 リンクのコピーリンクがクリップボードにコピーされました!
OK または ABORT のいずれかの投票を返します。トランザクションマネージャーがすべての XA リソースから OK 投票を受信する場合、トランザクションはコミットされ、それ以外の場合にはロールバックされます。
29.1.3. 楽観的トランザクションと悲観的トランザクション リンクのコピーリンクがクリップボードにコピーされました!
- トランザクションの実行時に送信されるメッセージが少なくなる
- ロックの保持期間が短くなる
- スループットが改善する
注記
FORCE_WRITE_LOCK フラグを使用した場合の悲観的トランザクションでのみ可能になります。
29.1.4. 書き込みスキューのチェック リンクのコピーリンクがクリップボードにコピーされました!
REPEATABLE_READ の分離レベルが必要です。さらに、クラスターモード (ディストリビューションモードまたはレプリケーションモード) で、エントリーのバージョン管理をセットアップします。ローカルモードの場合、エントリーのバージョン管理は不要です。
重要
29.1.5. 複数のキャッシュインスタンス間でのトランザクション リンクのコピーリンクがクリップボードにコピーされました!
29.2. トランザクションの設定 リンクのコピーリンクがクリップボードにコピーされました!
29.2.1. トランザクションの設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
TransactionManagerLookup インターフェースの実装に属するクラス名を用いて、キャッシュを設定します。キャッシュが初期化されると、指定クラスのインスタンスが作成され、getTransactionManager() メソッドを呼び出してトランザクションマネージャーへの参照を見つけ、これを返します。
手順29.1 ライブラリーモードでのトランザクションの設定 (XML 設定)
modeを定義してtransactionsを有効にします。デフォルトでモードはNONEであるため、トランザクションは無効になります。有効なトランザクションのモードはBATCH、NON_XA、NON_DURABLE_XA、FULL_XAです。stop-timeoutを定義し、キャッシュの停止時に継続しているトランザクションがある場合にインスタンスはその継続しているトランザクションが終了するのを待機できるようにします。デフォルトは30000ミリ秒に設定されます。auto-commitを有効にし、単一操作のトランザクションを手動で開始しなくても済むようにします。デフォルトはtrueに設定されます。- 使用されているコミットの
protocolを定義します。有効なコミットプロトコルはDEFAULTおよびTOTAL_ORDERです。 - リカバリー関連情報が保持される
recovery-cacheの名前を定義します。デフォルトは__recoveryInfoCacheName__に設定されます。 versioningScheme属性をSIMPLEとして定義してエントリーのversioningを有効にします。デフォルトはNONEに設定され、これはバージョン管理が無効にされていることを示します。
29.2.2. トランザクションの設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
例29.1 リモートクライアントサーバーモードでのトランザクション設定
<cache> <!-- Additional configuration elements here --> <transaction mode="NONE" /> <!-- Additional configuration elements here --> </cache>
<cache>
<!-- Additional configuration elements here -->
<transaction mode="NONE" />
<!-- Additional configuration elements here -->
</cache>
重要
NONE に設定されます。このときにトランザクションがライブラリーモードインスタンスで設定される場合は、サーバーインスタンスでもトランザクションを設定する必要があります。
29.3. トランザクションリカバリー リンクのコピーリンクがクリップボードにコピーされました!
29.3.1. トランザクションリカバリーのプロセス リンクのコピーリンクがクリップボードにコピーされました!
手順29.2 トランザクションリカバリーのプロセス
- トランザクションマネージャーは介入が必要なトランザクションの一覧を作成します。
- 電子メールまたはログを使用して、JMX を使用して JBoss Data Grid に接続するシステム管理者へトランザクション (トランザクション ID を含む) の一覧を提供します。各トランザクションの状態は
COMMITTEDかPREPAREDになります。COMMITTEDとPREPAREDの両方の状態であるトランザクションがある場合、トランザクションがあるノード上でコミットされている一方、他のノードで準備状態のトランザクションがあることを示しています。 - システム管理者は、トランザクションマネージャーより受信した XID を JBoss Data Grid の内部 ID へ視覚的にマッピングします。XID (バイトアレイ) を JMX ツールに渡し、このマッピングがない状態で JBoss Data Grid によって再アセンブルすることはできないため、この手順が必要となります。
- マッピングされた内部 ID を基に、システム管理者はトランザクションに対してコミットまたはロールバックプロセスを強制します。
29.3.2. トランザクションリカバリーの例 リンクのコピーリンクがクリップボードにコピーされました!
例29.2 データベースに格納された口座から JBoss Data Grid 内の口座への送金
- 送信元 (データベース) と送信先 (JBoss Data Grid) リソース間の 2 フェーズコミットプロトコルを実行するために、
TransactionManager.commit()メソッドが呼び出されます。 TransactionManagerが、準備フェーズ (2 フェーズコミットの最初のフェーズ) を開始するようデータベースと JBoss Data Grid に指示します。
注記
29.4. デッドロックの検出 リンクのコピーリンクがクリップボードにコピーされました!
29.4.1. デッドロック検出を有効にする リンクのコピーリンクがクリップボードにコピーされました!
cache 設定要素の deadlock-detection-spin 属性を調整して設定できます。
<local-cache [...] deadlock-detection-spin="1000"/>
<local-cache [...] deadlock-detection-spin="1000"/>
deadlock-detection-spin 属性は、特定ロックの取得が許可される最大時間 (ミリ秒単位) 内にロックの取得を試行する頻度を定義します。この値はデフォルトで 100 ミリ秒になり、負の値はデッドロック検出を無効にします。
第30章 JGroups の設定 リンクのコピーリンクがクリップボードにコピーされました!
30.1. Red Hat JBoss Data Grid インターフェースバインディングの設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
30.1.1. インターフェース リンクのコピーリンクがクリップボードにコピーされました!
link-local:169.x.x.xまたは254.x.x.xアドレスを使用します。これは、1 つのボックス内のトラフィックに適しています。Copy to Clipboard Copied! Toggle word wrap Toggle overflow site-local: たとえば192.168.x.xなどのプライベート IP アドレスを使用します。これにより、GoGrid や同様のプロバイダーから追加の帯域幅についてチャージされることを避けられます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow global: パブリック IP アドレスを選択します。これは、レプリケーショントラフィックの場合は避ける必要があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow non-loopback:127.x.x.xアドレスではないアクティブなインターフェースにある最初のアドレスを使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
30.1.2. ソケットのバインディグ リンクのコピーリンクがクリップボードにコピーされました!
30.1.2.1. 単一のソケットをバインドする例 リンクのコピーリンクがクリップボードにコピーされました!
socket-binding 要素を用いて個別のソケットをバインドする例を表しています。
例30.1 ソケットバインディング (Socket Binding)
<socket-binding name="jgroups-udp" <!-- Additional configuration elements here --> interface="site-local"/>
<socket-binding name="jgroups-udp" <!-- Additional configuration elements here --> interface="site-local"/>
30.1.2.2. ソケットのグループをバインドする例 リンクのコピーリンクがクリップボードにコピーされました!
socket-binding-group 要素を用いてグループをバインドする例を表しています。
例30.2 グループのバインド
default-interface (global) にバインドされます。そのため、インターフェース属性を指定する必要はありません。
30.1.3. JGroups ソケットバインディングの設定 リンクのコピーリンクがクリップボードにコピーされました!
例30.3 JGroups UDP ソケットバインディング設定
jgroups-udp ソケットバインディングがトランスポートに定義されます。
例30.4 JGroups TCP ソケットバインディング設定
socket-binding セクションの jgroups-tcp プロパティーで定義されます。
重要
30.2. JGroups の設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
例30.5 JGroups XML 設定
jgroups.xml を検索します。インスタンスがクラスパスに見つからない場合、絶対パス名を探します。
30.2.1. JGroups トランスポートプロトコル リンクのコピーリンクがクリップボードにコピーされました!
30.2.1.1. UDP トランスポートプロトコル リンクのコピーリンクがクリップボードにコピーされました!
- クラスターのすべてのメンバーにメッセージを送信する IP マルチキャスト。
- 単一メンバーに送信されるユニキャストメッセージの UDP データグラム。
30.2.1.2. TCP トランスポートプロトコル リンクのコピーリンクがクリップボードにコピーされました!
- マルチキャストメッセージを送信する場合に、TCP は複数のユニキャストメッセージを送信します。
30.2.1.3. TCPPing プロトコルの使用 リンクのコピーリンクがクリップボードにコピーされました!
default-configs/default-jgroups-tcp.xml には MPING プロトコルが含まれ、検出に UDP マルチキャストが使用されます。UDP マルチキャストが利用できない場合は、MPING プロトコルを別のメカニズムで置き換える必要があります。推奨される別の方法は、TCPPING プロトコルを使用することです。TCPPING 設定には、ノード検出のために接続される IP アドレスの静的なリストが含まれます。
例30.6 JGroups サブシステムでの TCPPING の使用の設定
<TCP bind_port="7800" />
<TCPPING initial_hosts="${jgroups.tcpping.initial_hosts:HostA[7800],HostB[7801]}"
port_range="1" />
<TCP bind_port="7800" />
<TCPPING initial_hosts="${jgroups.tcpping.initial_hosts:HostA[7800],HostB[7801]}"
port_range="1" />
30.2.2. 事前設定された JGroups ファイル リンクのコピーリンクがクリップボードにコピーされました!
infinispan-embedded.jar にパッケージ化され、デフォルトでクラスパス上にて使用可能です。これらのファイルの 1 つを使用するには、jgroups.xml を使用する代わりにこれらのいずれかのファイルの名前を指定します。
default-configs/default-jgroups-udp.xmldefault-configs/default-jgroups-tcp.xmldefault-configs/default-jgroups-ec2.xml
30.2.2.1. default-jgroups-udp.xml リンクのコピーリンクがクリップボードにコピーされました!
default-configs/default-jgroups-udp.xml ファイルは、Red Hat JBoss Data Grid の事前設定済み JGroups 設定です。default-jgroups-udp.xml 設定には、以下のことが該当します。
- UDP をトランスポートとして使用し、UDP マルチキャストをディスカバリーに使用します。
- 大型のクラスター (9 以上のノード) に適しています。
- インバリデーションまたはレプリケーションモードを使用する場合に適しています。
| システムプロパティー | 説明 | デフォルト | 必要性 |
|---|---|---|---|
| jgroups.udp.mcast_addr | マルチキャスト (通信とディスカバリーの両方) に使用する IP アドレス。IP マルチキャストに適した有効なクラス D IPアドレスでなければなりません。 | 228.6.7.8 | いいえ |
| jgroups.udp.mcast_port | マルチキャストに使用するポート。 | 46655 | いいえ |
| jgroups.udp.ip_ttl | IP マルチキャストパケットの TTL (有効期間) を指定します。この値は、パケットがドロップされる前に許可されるネットワークホップの数になります。 | 2 | いいえ |
30.2.2.2. default-jgroups-tcp.xml リンクのコピーリンクがクリップボードにコピーされました!
default-configs/default-jgroups-tcp.xml ファイルは、Red Hat JBoss Data Grid の事前設定済み JGroups 設定です。default-jgroups-tcp.xml 設定には、以下のことが該当します。
- TCP をトランスポートとして使用し、UDP マルチキャストをディスカバリーに使用します。
- 通常は、マルチキャスト UDP がオプションではない場合にのみ使用されます。
- 8 つ以上のノードから構成されるクラスターの場合、TCP は UDP ほどパフォーマンスがよくありません。4 つ以下のノードで構成されるクラスターの場合、UDP と TCP のパフォーマンスはほとんど同じレベルになります。
| システムプロパティー | 説明 | デフォルト | 必要性 |
|---|---|---|---|
| jgroups.tcp.address | TCP トランスポートに使用する IP アドレス | 127.0.0.1 | いいえ |
| jgroups.tcp.port | TCP ソケットに使用するポート。 | 7800 | いいえ |
| jgroups.mping.mcast_addr | マルチキャスト (ディスカバリー) に使用する IP アドレス。IP マルチキャストに適した有効なクラス D IP アドレスでなければなりません。 | 228.6.7.8 | いいえ |
| jgroups.mping.mcast_port | マルチキャストに使用するポート。 | 46655 | いいえ |
| jgroups.udp.ip_ttl | IP マルチキャストパケットの TTL (有効期間) を指定します。この値は、パケットがドロップされる前に許可されるネットワークホップの数になります。 | 2 | いいえ |
30.2.2.3. default-jgroups-ec2.xml リンクのコピーリンクがクリップボードにコピーされました!
default-configs/default-jgroups-ec2.xml ファイルは、Red Hat JBoss Data Grid の事前設定済み JGroups 設定です。default-jgroups-ec2.xml 設定には、以下のことが該当します。
- TCP をトランスポートとして使用し、ディスカバリーに S3_PING を使用します。
- UDP マルチキャストが使用できない Amazon EC2 ノードに適しています。
| システムプロパティー | 説明 | デフォルト | 必要性 |
|---|---|---|---|
| jgroups.tcp.address | TCP トランスポートに使用する IP アドレス。 | 127.0.0.1 | いいえ |
| jgroups.tcp.port | TCP ソケットに使用するポート。 | 7800 | いいえ |
| jgroups.s3.access_key | S3 バケットのアクセスに使用される Amazon S3 アクセスキー。 | はい | |
| jgroups.s3.secret_access_key | S3 バケットのアクセスに使用される Amazon S3 の秘密キー。 | はい | |
| jgroups.s3.bucket | 使用する Amazon S3 バケットの名前。一意の名前で、すでに存在している必要があります。 | はい | |
| jgroups.s3.pre_signed_delete_url | DELETE 操作に使用する事前署名付き URL。 | はい | |
| jgroups.s3.pre_signed_put_url | PUT 操作に使用する事前署名付き URL。 | はい | |
| jgroups.s3.prefix | 設定された場合、S3_PING はそのプレフィックス値で始まる名前のバケットを検索します。 | いいえ |
30.2.2.4. default-jgroups-google.xml リンクのコピーリンクがクリップボードにコピーされました!
default-configs/default-jgroups-google.xml ファイルは Red Hat JBoss Data Grid の事前に定義された JGroups 設定です。default-jgroups-google.xml 設定には以下のことが該当します。
- TCP をトランスポートとして使用し、GOOGLE_PING をディスカバリーに使用します。
- UDP マルチキャストが使用できない Google Compute Engine ノードに適しています。
| システムプロパティー | 説明 | デフォルト | 必要性 |
|---|---|---|---|
| jgroups.tcp.address | TCP トランスポートに使用する IP アドレス | 127.0.0.1 | いいえ |
| jgroups.tcp.port | TCP ソケットに使用するポート。 | 7800 | いいえ |
| jgroups.google.access_key | バケットのアクセスに使用される Google Compute Engine ユーザーのアクセスキー。 | はい | |
| jgroups.google.secret_access_key | バケットのアクセスに使用される Google Compute Engine ユーザーのシークレットアクセスキー。 | はい | |
| jgroups.google.bucket | 使用する Google Compute Engine バケットの名前。一意の名前で、すでに存在している必要があります。 | はい |
30.3. JGroups を使用したマルチキャストのテスト リンクのコピーリンクがクリップボードにコピーされました!
30.3.1. 異なる Red Hat JBoss Data Grid バージョンを使用したテスト リンクのコピーリンクがクリップボードにコピーされました!
注記
| バージョン | テストケース | 詳細 |
|---|---|---|
| JBoss Data Grid 7.0.0 | 利用可能 |
テストクラスの場所はディストーションによって異なります。
|
| JBoss Data Grid 6.6.0 | 利用可能 |
テストクラスの場所はディストーションによって異なります。
|
| JBoss Data Grid 6.5.1 | 利用可能 |
テストクラスの場所はディストーションによって異なります。
|
| JBoss Data Grid 6.5.0 | 利用可能 |
テストクラスの場所はディストーションによって異なります。
|
| JBoss Data Grid 6.4.0 | 利用可能 |
テストクラスの場所はディストーションによって異なります。
|
| JBoss Data Grid 6.3.0 | 利用可能 |
テストクラスの場所はディストーションによって異なります。
|
| JBoss Data Grid 6.2.1 | 利用可能 |
テストクラスの場所はディストーションによって異なります。
|
| JBoss Data Grid 6.2.0 | 利用可能 |
テストクラスの場所はディストーションによって異なります。
|
| JBoss Data Grid 6.1.0 | 利用可能 |
テストクラスの場所はディストーションによって異なります。
|
| JBoss Data Grid 6.0.1 | 使用不可 | JBoss Data Grid のこのバージョンには、このテストで使用されるテストクラスが含まれない JBoss Enterprise Application 6.0 をベースにしています。 |
| JBoss Data Grid 6.0.0 | 使用不可 | JBoss Data Grid のこのバージョンには、このテストで使用されるテストクラスが含まれない JBoss Enterprise Application Server 6.0 をベースにしています。 |
30.3.2. JGroups を使用したマルチキャストのテスト リンクのコピーリンクがクリップボードにコピーされました!
テストの手順を開始する前に以下の要件を満たしていることを確認してください。
bind_addr値をインスタンスの適切な IP アドレスに設定します。- 精度を高めるために、クラスター通信の値と同じ
mcast_addrとportの値を設定します。 - 2 つのコマンドラインターミナルウィンドウを起動します。最初のターミナルで 2 つのノードの内の 1 つの JGroups JAR ファイルのロケーションと、2 番目のターミナルで 2 つ目のノードの同じロケーションにナビゲートします。
手順30.1 JGroups を使用したマルチキャストのテスト
1 つ目のノードでマルチキャストサーバーを実行します。
最初のノードについて、コマンドラインターミナルで以下のコマンドを実行します (ライブラリーモードの場合はjgroups.jarをinfinispan-embedded.jarに置き換えます)。java -cp jgroups.jar org.jgroups.tests.McastReceiverTest -mcast_addr 230.1.2.3 -port 5555 -bind_addr $YOUR_BIND_ADDRESS
java -cp jgroups.jar org.jgroups.tests.McastReceiverTest -mcast_addr 230.1.2.3 -port 5555 -bind_addr $YOUR_BIND_ADDRESSCopy to Clipboard Copied! Toggle word wrap Toggle overflow 2 つ目のノードでマルチキャストサーバーを実行します。
2 番目のノードについて、コマンドラインターミナルで以下のコマンドを実行します (ライブラリーモードの場合はjgroups.jarをinfinispan-embedded.jarに置き換えます)。java -cp jgroups.jar org.jgroups.tests.McastSenderTest -mcast_addr 230.1.2.3 -port 5555 -bind_addr $YOUR_BIND_ADDRESS
java -cp jgroups.jar org.jgroups.tests.McastSenderTest -mcast_addr 230.1.2.3 -port 5555 -bind_addr $YOUR_BIND_ADDRESSCopy to Clipboard Copied! Toggle word wrap Toggle overflow 情報パケットを送信します。
2 つ目のノード (パケットを送信するノード) のインスタンスに情報を入力し、Enter を押して情報を送信します。受信情報パケットを表示します。
1 番目のノードのインスタンスで受信された情報を表示します。直前の手順で入力した情報がここに表示されます。情報転送を確認します。
パケットがドロップされずに、送信情報がすべて受信されていることを確認するために、手順 3 と 4 を繰り返します。他のインスタンスのテストを繰り返します。
送信者と受信者のそれぞれを確認するために、手順 1 から 4 を繰り返します。テストを繰り返すことにより、誤って設定された他のインスタンスが特定されます。
送信者ノードから送信されるすべての情報パケットは、受信者ノードに表示される必要があります。送信された情報が予想どおりに表示されない場合、マルチキャストがオペレーティングシステムまたはネットワークで誤って設定されていることになります。
第31章 Red Hat Data Grid の Amazon Web サービスとの使用 リンクのコピーリンクがクリップボードにコピーされました!
31.1. S3_PING JGroups ディスカバリープロトコル リンクのコピーリンクがクリップボードにコピーされました!
MPING が許可されないため、S3_PING は EC2 と一緒に使用するのに最適なディスカバリープロトコルです。
31.2. S3_PING 設定オプション リンクのコピーリンクがクリップボードにコピーされました!
- ライブラリーモードでは、JGroups の
default-configs/default-jgroups-ec2.xmlファイル (詳細については、「default-jgroups-ec2.xml」を参照) またはS3_PINGプロトコルを使用します。 - リモートクライアントサーバーモードでは、JGroups の
S3_PINGプロトコルを使用します。
S3_PING プロトコルを設定する方法として 3 つの方法があります。
- プライベート S3 バケットを使用します。これらのバケットは Amazon AWS のクレデンシャルを使用します。
- 事前署名付き URL を使用します。これらの事前に割り当てられる URL は、プライベートの書き込みアクセスとパブリックの読み取りアクセスを持つバケットに割り当てられます。
- パブリック S3 バケットを使用します。これらのバケットにはクレデンシャルがありません。
31.2.1. プライベート S3 バケットの使用 リンクのコピーリンクがクリップボードにコピーされました!
- List
- Upload/Delete
- View Permissions
- Edit Permissions
S3_PING 設定には以下のプロパティーが含まれることを確認してください。
- バケットのある
location。 - AWS ユーザーには
access_keyとsecret_access_keyプロパティー。
注記
403 エラーが表示される場合、プロパティーに正しい値があることを検証してください。問題が存続する場合、EC2 ノードのシステム時間が正しいことを確認してください。Amazon S3 は、セキュリティー上の理由により、サーバーの時間よりも 15 分を超える遅れがあるタイムスタンプを持つ要求を拒否します。
例31.1 プライベートバケットの使用による Red Hat JBoss Data Grid Server の起動
- {node_name} をサーバーの必要なノード名に置き換えます。
- {port_offset} をポートオフセットに置き換えます。デフォルトのポートを使用するには、これを
0に指定します。 - {s3_bucket_name} を適切なバケット名に置き換えます。
- {access_key} をユーザーのアクセスキーに置き換えます。
- {secret_access_key} をユーザーの秘密アクセスキーに置き換えます。
31.2.2. 事前署名付き URL の使用 リンクのコピーリンクがクリップボードにコピーされました!
S3_PING プロトコルで要求される場合に、put および delete 操作用に事前署名付き URL を生成します。この URL は固有のファイルを参照し、バケット内のフォルダーパスを組み込むことができます。
注記
S3_PING にエラーが発生します。たとえば、my_bucket/DemoCluster/node1 のようなパスは機能しますが、my_bucket/Demo/Cluster/node1 のようにパスが長くなると機能しません。
31.2.2.1. 事前署名付き URL の生成 リンクのコピーリンクがクリップボードにコピーされました!
S3_PING クラスには、事前署名付き URL を生成するためのユーティリティーメソッドが含まれます。このメソッドの最後の引数は、Unix epoch (1970 年 1 月 1 日) からの秒数で表される URL の有効期間です。
String Url = S3_PING.generatePreSignedUrl("{access_key}", "{secret_access_key}", "{operation}", "{bucket_name}", "{path}", {seconds});
String Url = S3_PING.generatePreSignedUrl("{access_key}", "{secret_access_key}", "{operation}", "{bucket_name}", "{path}", {seconds});
- {operation} を
PUTまたはDELETEのいずれかに置き換えます。 - {access_key} をユーザーのアクセスキーに置き換えます。
- {secret_access_key} をユーザーの秘密アクセスキーに置き換えます。
- {bucket_name} をバケットの名前に置き換えます。
- {path} をバケット内のファイルへの必要なパスに置き換えます。
- {seconds} を、Unix epoch (1970 年 1 月 1 日) からのパスの有効期間を表す秒数に置き換えます。
例31.2 事前署名付き URL の生成
String putUrl = S3_PING.generatePreSignedUrl("access_key", "secret_access_key", "put", "my_bucket", "DemoCluster/jgroups.list", 1234567890);
String putUrl = S3_PING.generatePreSignedUrl("access_key", "secret_access_key", "put", "my_bucket", "DemoCluster/jgroups.list", 1234567890);
S3_PING 設定に、S3_PING.generatePreSignedUrl() の呼び出しで生成された pre_signed_put_url および pre_signed_delete_url プロパティーが含まれていることを確認してください。この設定の場合、AWS クレデンシャルがクラスター内の各ノードに保存されないため、プライベート S3 バケットを使用する設定よりも安全度が高くなります。
注記
& 文字をその XML エンティティー (&) に置き換える必要があります。
31.2.2.2. コマンドラインを使用した事前署名付き URL の設定 リンクのコピーリンクがクリップボードにコピーされました!
- URL を二重引用符 (
"") で囲みます。 - URL では、アンパーサンド (
&) 文字の各出現箇所はバックスラッシュ (\) でエスケープする必要があります。
例31.3 事前署名付き URL による JBoss Data Grid Server の起動
- {node_name} をサーバーの必要なノード名に置き換えます。
- {port_offset} をポートオフセットに置き換えます。デフォルトのポートを使用するには、これを
0に指定します。 - {s3_bucket_name} を適切なバケット名に置き換えます。
- {access_key} をユーザーのアクセスキーに置き換えます。
- {expiration_time} を、
S3_PING.generatePreSignedUrl()メソッドに渡された URL の値に置き換えます。 - {signature} を、
S3_PING.generatePreSignedUrl()メソッドで生成される値に置き換えます。
31.2.3. パブリック S3 バケットの使用 リンクのコピーリンクがクリップボードにコピーされました!
location プロパティーは、この設定のバケット名で指定する必要があります。この設定メソッドは、バケットの名前を知っているいずれのユーザーもバケットにデータをアップロードしたり、保存したりでき、バケット作成者のアカウントはこのデータについてチャージされるため、安全度は最も低くなります。
- {node_name} をサーバーの必要なノード名に置き換えます。
- {port_offset} をポートオフセットに置き換えます。デフォルトのポートを使用するには、これを
0に指定します。 - {s3_bucket_name} を適切なバケット名に置き換えます。
31.3. Elastic IP アドレスの使用 リンクのコピーリンクがクリップボードにコピーされました!
第32章 Google Compute Engine での Red Hat JBoss Data Grid の使用 リンクのコピーリンクがクリップボードにコピーされました!
32.1. GOOGLE_PING プロトコル リンクのコピーリンクがクリップボードにコピーされました!
GOOGLE_PING は、クラスターの作成時に JGroups によって使用されるディスカバリープロトコルです。Google Compute Engine (GCE) で使用し、個別のクラスターメンバーについての情報を格納するために Google Cloud Storage を使用できることが望ましいでしょう。
32.2. GOOGLE_PING 設定 リンクのコピーリンクがクリップボードにコピーされました!
- ライブラリーモードでは、JGroups の設定ファイル
default-configs/default-jgroups-google.xmlを使用するか、または既存の設定ファイルのGOOGLE_PINGプロトコルを使用します。 - リモートクライアントサーバーモードでは、サーバーを起動して JGroups Google スタックを使用する際にコマンドラインでプロパティーを定義します (「Google Compute Engine でのサーバーの起動」 の例を参照してください)。
GOOGLE_PING プロトコルがライブラリーモードおよびリモートクライアントサーバーモードの Google Compute Engine で機能するように設定するには、以下を実行します。
- JGroups バケットを使用します。これらのバケットは Google Compute Engine クレデンシャルを使用します。
- アクセスキーを使用します。
- シークレットアクセスキーを使用します。
注記
TCP プロトコルのみが Google Compute Engine でサポートされます。
32.2.1. Google Compute Engine でのサーバーの起動 リンクのコピーリンクがクリップボードにコピーされました!
GOOGLE_PING 設定には以下のプロパティーが含まれることを確認してください。
- Google Compute Engine ユーザーの
access_keyとsecret_access_keyプロパティー。
例32.1 バケットを使用した Red Hat JBoss Data Grid サーバーの起動
- {node_name} をサーバーの必要なノード名に置き換えます。
- {port_offset} をポートオフセットに置き換えます。デフォルトのポートを使用するには、これを
0に指定します。 - {google_bucket_name} を適切なバケット名に置き換えます。
- {access_key} をユーザーのアクセスキーに置き換えます。
- {secret_access_key} をユーザーのシークレットアクセスキーに置き換えます。
32.3. 静的 IP アドレスの使用 リンクのコピーリンクがクリップボードにコピーされました!
第33章 Spring Framework との統合 リンクのコピーリンクがクリップボードにコピーされました!
33.1. Spring キャッシュサポートの宣言的な有効化 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
<cache:annotation-driven/>を xml ファイルに追加します。この行は、標準的な spring の注釈をアプリケーションで使用できるようにします。<infinispan:embedded-cache-manager ... />を使用してキャッシュマネージャーを定義します。
例33.1 宣言的な設定例
33.2. Spring キャッシュサポートの宣言的な有効化 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
<cache:annotation-driven/>を xml ファイルに追加します。この行は、標準的な spring の注釈をアプリケーションで使用できるようにします。<infinispan:remote-cache-manager ... />を使用して HotRod クライアントのプロパティーを定義します。
例33.2 宣言的な設定例
第34章 サーバーヒンティングを用いた高可用性 リンクのコピーリンクがクリップボードにコピーされました!
ConsistentHashFactories のセクションを参照してください。
machineId、rackId、または siteId を transport 設定に設定することにより、TopologyAwareConsistentHashFactory の使用がトリガーされます。これは、サーバーヒンティングが有効にされた状態の DefaultConsistentHashFactory に相当します。
34.1. JGroups によるサーバーヒンティングの設定 リンクのコピーリンクがクリップボードにコピーされました!
関連トピック:
34.2. サーバーヒンティングの設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
transport 要素の JGroups サブシステムで設定されます。
手順34.1 リモートクライアントサーバーモードでのサーバーヒンティングの設定
- JGroups サブシステム設定を見つけます。
transport要素でサーバーヒンティングを有効にします。siteパラメーターを使用してサイト ID を設定します。rackパラメーターを使用してラック ID を設定します。machineパラメーターを使用してマシン ID を設定します。
34.3. サーバーヒンティングの設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
手順34.2 ライブラリーモードでのサーバーヒンティングの設定
<transport cluster = "MyCluster"
machine = "LinuxServer01"
rack = "Rack01"
site = "US-WestCoast" />
<transport cluster = "MyCluster"
machine = "LinuxServer01"
rack = "Rack01"
site = "US-WestCoast" />
cluster属性はクラスターに割り当てられた名前を指定します。machine属性は、元データを格納する JVM インスタンスを指定します。これは、複数の JVM があるノードや複数の仮想ホストを持つ物理ホストに対してとくに有用な属性です。rack属性は、元データが含まれるラックを指定します。これにより、別のラックがバックアップに使用されるようにします。siteId属性は、相互にレプリケーションを行っている異なるデータセンターのノードを区別します。
machine、rack、または site が設定に含まれている場合、TopologyAwareConsistentHashFactory が自動的に選択され、サーバーヒンティングを有効にします。ただし、サーバーヒンティングが設定されていない場合、JBoss Data Grid の分散アルゴリズムにより元データと同じ物理マシン/ラック/データセンターにレプリケーションを保存することができます。
第35章 データセンター間のレプリケーションのセットアップ リンクのコピーリンクがクリップボードにコピーされました!
RELAY2 プロトコルをベースとします。
35.1. データセンター間レプリケーションの操作 リンクのコピーリンクがクリップボードにコピーされました!
例35.1 データセンター間レプリケーションの例
図35.1 データセンター間レプリケーションの例
LON、NYC および SFO の 3 つのサイトが設定されます。それぞれのサイトは、3 つから 4 つの物理ノードから構成される実行中の JBoss Data Grid クラスターをホストします。
Users キャッシュは、LON、NYC および SFO の 3 つのすべてのサイトでアクティブです。これらのサイトのいずれかの Users キャッシュへの変更は、キャッシュが設定で他の 2 つのサイトをバックアップとして定義している限り、それらの他の 2 つのサイトにレプリケートされます。ただし、Orders キャッシュは、他のサイトにレプリケートされないため LON サイトでのみ利用できます。
Users キャッシュは各サイトで異なるレプリケーションメカニズムを使用できます。たとえば、データのバックアップを SFO に同期的に、NYC と LON に非同期的に行います。
Users キャッシュにはあるサイトから別のサイトへとそれぞれ異なる設定を持たせることもできます。たとえば、これを LON サイトで owners を 2 に設定した分散キャッシュとして、NYC サイトではレプリケートされたキャッシュとして、さらに SFO サイトでは owners を 1 に設定した分散キャッシュとして設定することができます。
RELAY2 という JGroups プロトコルは、サイト間の通信を容易にします。さらに詳しくは、「RELAY2 について」を参照してください。
35.2. データセンター間レプリケーションの設定 リンクのコピーリンクがクリップボードにコピーされました!
35.2.1. データセンター間レプリケーションの設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
手順35.1 データセンター間のレプリケーションのセットアップ
RELAY のセットアップ
RELAYをセットアップするには、以下の設定をstandalone.xmlファイルに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow RELAYプロトコルは、リモートサイトと通信するために追加のスタック (既存のUDPスタックと並行して実行される) を作成します。TCPベースのスタックがローカルクラスターに使用される場合、2 つのTCPベースのスタック設定が必要になります。1 つはローカル通信用で、もう 1 つはリモートサイトへの接続用になります。さらに詳しい説明は、「データセンター間レプリケーションの操作」を参照してください。サイトのセットアップ
クラスター内のそれぞれの分散キャッシュに対してサイトをセットアップするには、standalone.xmlファイルで以下の設定を使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ローカルサイトトランスポートの設定
トランスポートを設定するには、transport要素にローカルサイトの名前を追加します。<transport executor="infinispan-transport" lock-timeout="60000" cluster="LON" stack="udp"/><transport executor="infinispan-transport" lock-timeout="60000" cluster="LON" stack="udp"/>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
$JDG_SERVER/docs/examples/configs/clustered-xsite.xml で確認できます。
35.2.2. データセンター間レプリケーションの設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
35.2.2.1. データセンター間レプリケーションを宣言的に設定する リンクのコピーリンクがクリップボードにコピーされました!
relay.RELAY2 プロトコルは、リモートサイトと通信するために追加のスタック (既存の TCP スタックと並行して実行される) を作成します。TCP ベースのスタックがローカルクラスターに使用される場合、2 つの TCP ベースのスタック設定が必要になります。1 つはローカル通信用で、もう 1 つはリモートサイトへの接続用です。
手順35.2 データセンター間のレプリケーションのセットアップ
ローカルサイトを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow site属性をtransport要素に追加してローカルサイト (この例では、ローカルサイトの名前はLON) を定義します。- サイト間のレプリケーションには、デフォルト以外の JGroups 設定が必要です。
jgroups要素を定義し、カスタムstack-fileを定義して参照するファイルの名前と場所をこのカスタム設定に渡します。この例では、JGroups 設定ファイルの名前はjgroups-with-relay.xmlです。 NYCおよびSFOサイトにバックアップするには、LONサイトでキャッシュを設定します。- バックアップキャッシュを設定します。
LONからバックアップデータを受信するには、NYCサイトでキャッシュを設定します。<local-cache name="backupNYC"> <backups/> <backup-for remote-cache="default" remote-site="LON"/> </local-cache><local-cache name="backupNYC"> <backups/> <backup-for remote-cache="default" remote-site="LON"/> </local-cache>Copy to Clipboard Copied! Toggle word wrap Toggle overflow LONからバックアップデータを受信するには、SFOサイトでキャッシュを設定します。<local-cache name="backupSFO"> <backups/> <backup-for remote-cache="default" remote-site="LON"/> </local-cache><local-cache name="backupSFO"> <backups/> <backup-for remote-cache="default" remote-site="LON"/> </local-cache>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
設定ファイルの内容を追加します。
デフォルトで、Red Hat JBoss Data Grid には、infinispan-embedded-{VERSION}.jarパッケージ内のdefault-configs/default-jgroups-tcp.xmlおよびdefault-configs/default-jgroups-udp.xmlなどの JGroups 設定ファイルが含まれます。JGroups 設定を新規ファイル (この例では、ファイル名はjgroups-with-relay.xml) にコピーし、指定される設定情報をこのファイルに追加します。relay.RELAY2プロトコル設定は、設定スタックの最新のプロトコルである必要があります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow relay.xml ファイルを設定します。
relay.xmlファイルでrelay.RELAY2設定をセットアップします。このファイルは、グローバルクラスター設定について説明するものです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow グローバルクラスターを設定します。
relay.xmlで参照されるファイルjgroups-global.xmlには、グローバルクラスター、つまりサイト間の通信で使用される別の JGroups 設定が含まれます。グローバルクラスター設定は、通常はTCPベースであり、TCPPINGプロトコル (PINGまたはMPINGではない) を使用してメンバーを検出します。default-configs/default-jgroups-tcp.xmlの内容をjgroups-global.xmlにコピーし、TCPPINGを設定するために以下の設定を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow TCPPING.initial_hostsのホスト名 (または IP アドレス) をサイトマスターに使用されるものに置き換えます。ポート (この場合は7800) はTCP.bind_portに一致している必要があります。TCPPINGプロトコルの詳細は、「TCPPing プロトコルの使用」 を参照してください。
35.3. サイトをオフラインにする リンクのコピーリンクがクリップボードにコピーされました!
- サイトの自動的なオフライン設定:
- リモートクライアントサーバーモードで宣言的に実行。
- ライブラリーモードで宣言的に実行。
- プログラムを用いたメソッドの使用。
- サイトの手動によるオフライン設定:
- JBoss Operations Network (JON) の使用。
- JBoss Data Grid コマンドラインインターフェース (CLI) の使用。
35.3.1. サイトをオフラインにする リンクのコピーリンクがクリップボードにコピーされました!
take-offline 要素を backup 要素に追加します。これにより、サイトが自動的にオフラインにするように設定されます。
例35.2 サイトをオフラインに設定する (リモートクライアントサーバーモード)
<backup>
<take-offline after-failures="${NUMBER}"
min-wait="${PERIOD}" />
</backup>
<backup>
<take-offline after-failures="${NUMBER}"
min-wait="${PERIOD}" />
</backup>
take-offline 要素は、いつサイトをオフラインにするかを設定するために以下のパラメーターを使用します。
after-failuresパラメーターは、サイトがオフラインになる前にサイトへの接続の試行を失敗できる回数を指定します。min-waitパラメーターは、応答しないサイトをオフラインとしてマークするために待機する時間 (秒数単位) を指定します。このサイトは、min-wait期間が最初の試行後に経過した時やafter-failuresパラメーターで指定される試行の失敗回数に達した時にオフラインになります。
35.3.2. JBoss Operations Network (JON) 経由でサイトをオフラインにする リンクのコピーリンクがクリップボードにコピーされました!
35.3.3. CLI でサイトをオフラインにする リンクのコピーリンクがクリップボードにコピーされました!
site コマンドを使用して、データセンター間のレプリケーション設定からサイトを手動でシャットダウンします。
site コマンドを使用して、以下のようにサイトの状態を確認することができます。
[jmx://localhost:12000/MyCacheManager/namedCache]> site --status ${SITENAME}
[jmx://localhost:12000/MyCacheManager/namedCache]> site --status ${SITENAME}
online または offline のいずれかになります。
[jmx://localhost:12000/MyCacheManager/namedCache]> site --offline ${SITENAME}
[jmx://localhost:12000/MyCacheManager/namedCache]> site --offline ${SITENAME}
[jmx://localhost:12000/MyCacheManager/namedCache]> site --online ${SITENAME}
[jmx://localhost:12000/MyCacheManager/namedCache]> site --online ${SITENAME}
ok が表示されます。また、JMX を使用してサイトをオンラインに復帰させることもできます (詳細については「サイトをオンラインに戻す」を参照)。
35.3.4. サイトをオンラインに戻す リンクのコピーリンクがクリップボードにコピーされました!
XSiteAdmin MBean 上で bringSiteOnline(siteName) 操作を呼び出すか (詳細については「XSiteAdmin」を参照)、CLI を使用する (詳細については「CLI でサイトをオフラインにする」を参照) ことによりオンラインに復帰させることができます。
35.4. サイト間の状態転送 リンクのコピーリンクがクリップボードにコピーされました!
XSiteAdminOperations MBean で利用可能な pushState(SiteName String) 操作を呼び出します。
pushState(SiteName String) 操作を示します。
図35.2 PushState 操作
site push sitename コマンドによって呼び出されます。たとえば、マスターサイトがオンラインに復帰すると、システム管理者は状態を受け取るマスターサイトの名前を指定してバックアップサイトで状態転送操作を呼び出します。
注記
35.4.1. Active-Passive 状態転送 リンクのコピーリンクがクリップボードにコピーされました!
- マスターサイトで Red Hat JBoss Data Grid クラスターを起動します。
- バックアップサイトがマスターサイトに状態をプッシュするようにします。
- 状態転送が完了するまで待機します。
- マスターサイトが要求を処理できることをクライアントに通知します。
35.4.2. Active-Active 状態転送 リンクのコピーリンクがクリップボードにコピーされました!
警告
注記
- 新しいサイトで Red Hat JBoss Data Grid クラスターを起動します。
- 稼働しているサイトが新しいサイトに状態をプッシュするようにします。
- 新しいサイトが要求を処理できることをクライアントに通知します。
35.4.3. 状態転送の設定 リンクのコピーリンクがクリップボードにコピーされました!
35.5. 複数サイトマスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
35.5.1. 複数サイトマスターの操作 リンクのコピーリンクがクリップボードにコピーされました!
35.5.2. 複数サイトマスターの設定 (リモートクライアントサーバーモード) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat JBoss Data Grid のリモートクライアントサーバーモード用にデータセンター間レプリケーションを設定します。
手順35.3 リモートクライアントサーバーモードで複数のサイトマスターを設定します。
ターゲット設定の特定
clustered-xsite.xmlのサンプル設定ファイルでターゲットサイトの設定を見つけます。この設定例は、上記の例のようになります。最大サイトの設定
サイト内のマスターノードの最大数を決定するにはmax_site_mastersプロパティーを使用します。すべてのノードをマスターにするために、この値をサイト内のノード数に設定します。サイトマスターの設定
ノードをサイトマスターにすることを許可するには、can_become_site_masterプロパティーを使用します。このフラグはデフォルトでtrueに設定されます。このフラグをfalseに設定することにより、ノードがサイトマスターになることを防ぐことができます。これは、ノードに外部ネットワークに接続されたネットワークインターフェースがない場合に必要になります。
35.5.3. 複数サイトマスターの設定 (ライブラリーモード) リンクのコピーリンクがクリップボードにコピーされました!
手順35.4 複数サイトマスターの設定 (ライブラリーモード)
データセンター間レプリケーションの設定
JBoss Data Grid でデータセンター間レプリケーションを設定します。XML 設定については「データセンター間レプリケーションを宣言的に設定する」の手順を使用し、プログラミングによる設定の場合は、JBoss Data Grid 『Developer Guide』 を参照します。設定ファイルの内容を追加します。
以下のようにcan_become_site_masterおよびmax_site_mastersパラメーターを設定に追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow すべてのノードをマスターにするために、max_site_masters値をクラスター内のノード数に設定します。
第36章 ローリングアップグレード リンクのコピーリンクがクリップボードにコピーされました!
重要
36.1. Hot Rod を使用したローリングアップグレード リンクのコピーリンクがクリップボードにコピーされました!
重要
- JBoss Data Grid 7.0 の場合、Hot Rod プロトコルバージョン 2.5 を使用
- JBoss Data Grid 6.6 の場合、Hot Rod プロトコルバージョン 2.3 を使用
- JBoss Data Grid 6.5 の場合、Hot Rod プロトコルバージョン 2.0 を使用
- JBoss Data Grid 6.4 の場合、Hot Rod プロトコルバージョン 2.0 を使用
- JBoss Data Grid 6.3 の場合、Hot Rod プロトコルバージョン 2.0 を使用
- JBoss Data Grid 6.2 の場合、Hot Rod プロトコルバージョン 1.3 を使用
- JBoss Data Grid 6.1 の場合、Hot Rod プロトコルバージョン 1.2 を使用
この手順では、クラスターがすでに設定されており、実行中であること、およびクラスターが JBoss Data Grid の古いバージョンを使用していることを想定しています。このクラスターは以下ではソースクラスターとして言及されており、ターゲットクラスターはデータの移行先となる新規クラスターを指します。
ターゲットクラスターの設定
ソースクラスターとは別にターゲットクラスター (新規 JBoss Data Grid のあるノードで構成) を設定するには、別のネットワーク設定または別の JGroups クラスター名のいずれかを使用します。それぞれのキャッシュについては、以下の設定でRemoteCacheStoreを設定します。remote-serverがソースクラスターを参照するようにします。- キャッシュ名がソースクラスターのキャッシュの名前と一致するようにします。
hotrod-wrappingを有効に (trueに設定) します。purgeを無効に (falseに設定) します。passivationを無効に (falseに設定) します。
図36.1 RemoteCacheStore によるターゲットクラスターの設定
注記
ローリングアップグレードを実行する際のターゲットクラスター設定の詳細の例については、$JDG_HOME/docs/examples/configs/standalone-hotrod-rolling-upgrade.xmlファイルを参照してください。ターゲットクラスターの起動
ターゲットクラスターのノードを起動します。ソースクラスターではなく、ターゲットクラスターを指すように各クライアントを設定します。最終的に、ターゲットクラスターはソースクラスターの代わりにすべての要求を処理します。その後ターゲットクラスターはRemoteCacheStoreを使用してソースクラスターのデータをオンデマンドでロードします。図36.2 ソースクラスターをターゲットクラスターの
RemoteCacheStoreとしてターゲットクラスターを指すクラスター。ソースクラスターのキーセットのダンプ
すべての接続がターゲットクラスターを使用している場合、ソースクラスターのキーセットをダンプする必要があります。これは JMX または CLI のいずれかを使用して実行できます。JMX
移行する必要のあるすべてのキャッシュについて、ソースクラスターのRollingUpgradeManagerMBean でrecordKnownGlobalKeyset操作を起動します。CLI
移行する必要のあるすべてのキャッシュについて、ソースクラスターでupgrade --dumpkeysコマンドを起動するか、または--allスイッチを使用してクラスターのすべてのキャッシュをダンプします。
ソースクラスターからの残りのデータの取り込み
ターゲットクラスターはソースクラスターから残りのすべてのデータを取り込みます。これも JMX または CLI のいずれかを使用して実行できます。JMX
synchronizeData操作を起動し、移行する必要のあるすべてのキャッシュについて、ターゲットクラスターのRollingUpgradeManagerMBean でrecordKnownGlobalKeysetを指定します。CLI
移行する必要のあるすべてのキャッシュについて、ターゲットクラスターでupgrade --synchronize=hotrodコマンドを起動するか、または--allスイッチを使用してクラスター内のすべてのキャッシュを同期します。
RemoteCacheStoreの無効化ターゲットクラスターがソースクラスターからすべてのデータを取得した後に、ターゲットクラスターのRemoteCacheStoreを無効にする必要があります。これは以下のように実行できます。JMX
ターゲットクラスターのRollingUpgradeManagerMBean にhotrodパラメーターを指定してdisconnectSource操作を起動します。CLI
ターゲットクラスターでupgrade --disconnectsource=hotrodコマンドを起動します。
ソースクラスターの使用の停止
最終手順としてソースクラスターの使用を停止します。
36.2. REST を使用したローリングアップグレード リンクのコピーリンクがクリップボードにコピーされました!
手順36.1 REST を使用したローリングアップグレードの実施
ターゲットクラスターの設定
ソースクラスターとは別にターゲットクラスター (新規 JBoss Data Grid のノードで構成) を設定するには、別のネットワーク設定または別の JGroups クラスター名のいずれかを使用します。それぞれのキャッシュについては、以下の設定を考慮に入れてRestCacheStoreを設定します。- ホストおよびポートの値がソースクラスターを参照するようにする。
- パスの値がソースクラスターの REST エンドポイントを参照するようにする。
ターゲットクラスターの開始
ターゲットクラスターのノードを起動します。ソースクラスターではなく、ターゲットクラスターを参照するように各クライアントを設定します。最終的に、ターゲットクラスターはソースクラスターの代わりにすべての要求を処理します。次にターゲットクラスターはRestCacheStoreを使用してソースクラスターのデータをオンデマンドでレイジーにロードします。REST ローリングアップグレード時にはキーセットをダンプしない
REST ローリングアップグレードのユースケースは、recordKnownGlobalKeyset操作を使用せずにすべてのデータをソースクラスターから取得することが意図されています。警告
REST ローリングアップグレードのrecordKnownGlobalKeyset操作は起動しないでください。この操作を起動すると、データの破損が生じ、REST ローリングアップグレードは正常に完了しません。残りのデータの取得
ターゲットクラスターはソースクラスターから残りのデータすべてを取得する必要があります。これは、以下のように JMX または CLI を使用して実行されます。JMX の使用
すべてのキャッシュが移行されるように、restパラメーターをターゲットクラスターのRollingUpgradeManagerMBean に指定してsynchronizeData操作を起動します。CLI の使用
すべてのキャッシュが移行されるようにupgrade --synchronize=restをターゲットクラスターで実行します。オプションで、--allスイッチを使用して、クラスター内のすべてのキャッシュを同期します。
RestCacheStore の無効化
JMX または CLI のいずれかを使用して、以下のようにターゲットクラスターでRestCacheStoreを無効にします。JMX の使用
restパラメーターをターゲットクラスターのRollingUpgradeManagerMBean に指定してdisconnectSource操作を起動します。CLI の使用
ターゲットクラスターでupgrade --disconnectsource=restコマンドを実行します。オプションで、--allスイッチを使用して、クラスター内のすべてのキャッシュの接続を解除します。
ターゲットクラスターへの移行は完了しました。ソースクラスターの使用を停止できます。
36.3. RollingUpgradeManager 操作 リンクのコピーリンクがクリップボードにコピーされました!
RollingUpgradeManager Mbean は、ローリングアップグレードの実施時に Red Hat JBoss Data Grid の 1 つのバージョンから別のバージョンへのデータ移行を可能にする操作を処理します。RollingUpgradeManager 操作には以下が含まれます。
recordKnownGlobalKeysetは、JBoss Data Grid の古いバージョンで実行されるクラスターからキーセット全体を取得します。synchronizeDataは、ソースクラスターから JBoss Data Grid の新しいバージョンを実行しているターゲットクラスターへのデータ移行を実行します。disconnectSourceは、ターゲットクラスターへのデータ移行が完了すると、JBoss Data Grid の古いバージョンであるソースクラスターを無効にします。
36.4. ローリングアップグレードの RemoteCacheStore パラメーター リンクのコピーリンクがクリップボードにコピーされました!
36.4.1. rawValues および RemoteCacheStore リンクのコピーリンクがクリップボードにコピーされました!
rawValues パラメーターを有効にすると、RemoteCacheManager による直接のアクセスとの相互運用性を図るために生の値を代わりに格納することができます。
rawValues は、RemoteCacheStore および RemoteCacheManager の両方で Hot Rod キャッシュとの対話を可能にするために有効にされる必要があります。
36.4.2. hotRodWrapping リンクのコピーリンクがクリップボードにコピーされました!
hotRodWrapping パラメーターは、ローリングアップグレードを実行するために rawValues を有効にし、適切なマーシャラーおよびエントリーラッパーを設定するショートカットです。
第37章 カスタムインターセプター リンクのコピーリンクがクリップボードにコピーされました!
警告
37.1. カスタムインターセプター設計 リンクのコピーリンクがクリップボードにコピーされました!
- カスタムインターセプターは
CommandInterceptorを拡張しなければなりません。 - カスタムインターセプターはインスタンス化を可能にするために、パブリックの空のコンストラクターを宣言しなければなりません。
- カスタムインターセプターでは、
property要素を介して定義されたプロパティーに対して JavaBean スタイルセッターを定義する必要があります。
37.2. カスタムインターセプターを宣言して追加 リンクのコピーリンクがクリップボードにコピーされました!
手順37.1 カスタムインターセプターの追加
カスタムインターセプターの定義
すべてのカスタムインターセプターはorg.infinispan.interceptors.base.BaseCustomInterceptorを拡張する必要があります。新規カスタムインターセプターの位置の定義
インターセプターの位置を定義しておく必要があります。オプションは相互に排他的であり、インターセプターは position 属性と index 属性を両方持つことができません。有効なオプションは以下の通りです。Position 属性の使用
FIRST: 新規インターセプターがチェーンの最初に置かれるように指定します。LAST: 新規インターセプターがチェーンの最後に置かれるように指定します。OTHER_THAN_FIRST_OR_LAST: 新規インターセプターをチェーンの最初と最後以外の任意の場所に配置できるように指定します。
Index 属性の使用
indexは、このインターセプターのチェーン内の位置を特定します。この index は、チェーン内の最初の位置として 0 から始まり、所定の設定内のインターセプターの数まで続きます。
Before または After 属性の使用
after属性は、完全修飾クラス名で指定された、名前付きインターセプターのインスタンスの後に新規インターセプターを直接配置します。before属性は、完全修飾クラス名で指定された、名前付きインターセプターのインスタンスの前に新規インターセプターを直接配置します。
インターセプタープロパティーの定義
特定のインターセプタープロパティーを定義します。
他のカスタムインターセプターの適用
この例では、次のカスタムインターセプターは CustomInterceptor2 と呼ばれます。
注記
OTHER_THAN_FIRST_OR_LAST が指定されると、CacheManager が失敗する可能性があります。
注記
第38章 セッションの外部化 リンクのコピーリンクがクリップボードにコピーされました!
38.1. JBoss EAP から JBoss Data Grid への HTTP セッションの外部化 リンクのコピーリンクがクリップボードにコピーされました!
注記
注記
手順38.1 HTTP セッションの外部化
- リモートキャッシュコンテナーが EAP の
infinispanサブシステムで定義されるようにします。以下の例では、remote-store要素のcache属性によって、リモート JBoss Data Grid サーバーのキャッシュ名を定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ネットワーク情報を
socket-binding-groupに追加することにより、リモート Red Hat JBoss Data Grid サーバーの場所を定義します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 各キャッシュコンテナーと各 Red Hat JBoss Data Grid サーバーに対して上記の手順を繰り返します。定義された各サーバーでは、個別の
<outbound-socket-binding>要素が定義されている必要があります。 - パッシベーションとキャッシュ情報をアプリケーションの
jboss-web.xmlに追加します。以下の例では、cacheContainerはキャッシュコンテナーの名前であり、default-cacheはこのコンテナーにあるデフォルトのキャッシュの名前です。サンプルファイルを以下に示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記
上記のパッシベーションタイムアウトは、通常のセッションが 15 分以内に破棄され、JBoss EAP のデフォルトの HTTP セッションタイムアウトが 30 分であることを前提として提供されています。これらの値は、各アプリケーションのワークロードに 基づいて調整する必要がある場合があります。
第39章 データの相互運用性 リンクのコピーリンクがクリップボードにコピーされました!
39.1. ライブラリーとリモートクライアントサーバーエンドポイント間の相互運用性 リンクのコピーリンクがクリップボードにコピーされました!
- ローカル (組み込み型) の方法でデータを保存し、取得する。
- 各種のエンドポイントを使用してデータを保存し、取得する。
39.2. 互換性モードの使用 リンクのコピーリンクがクリップボードにコピーされました!
- すべてのエンドポイント設定が同じキャッシュマネージャーを指定する
- すべてのエンドポイントが同じターゲットキャッシュと対話する
39.3. プロトコルの相互運用性 リンクのコピーリンクがクリップボードにコピーされました!
compatibility 要素の marshaller パラメーターをカスタムマーシャラーに設定して互換性の変換を有効にします。この例は以下のようになります。
例39.1 互換性モードの有効化
<cache-container name="local" default-cache="default" statistics="true">
<local-cache name="default" start="EAGER" statistics="true">
<compatibility marshaller="com.example.CustomMarshaller"/>
</local-cache>
</cache-container>
<cache-container name="local" default-cache="default" statistics="true">
<local-cache name="default" start="EAGER" statistics="true">
<compatibility marshaller="com.example.CustomMarshaller"/>
</local-cache>
</cache-container>
第40章 ネットワークパーティションの処理 (スプリットブレイン) リンクのコピーリンクがクリップボードにコピーされました!
owners 設定属性を使用して設定され、キャッシュ内の各キャッシュエントリーのレプリカの数が指定されます。結果として、障害が発生したノードの数が owners の値よりも小さい限り、JBoss Data Grid は損失データのコピーを保持し、復元できます。
注記
owners は常にキャッシュ内のノードの数と同じになります。
owners の値よりも大きいノードの数がキャッシュからなくなることがあります。この一般的な理由は、以下の 2 つのです。
- スプリットブレイン: 通常は、ルーターのクラッシュの結果、キャッシュが 2 つ以上のパーティションに分割されます。各パーティションは他のパーティションに関係なく動作し、各パーティションには同じデータの別のバージョンが含まれることがあります。
- 連続クラッシュノード:
ownersの値よりも大きいノードの数が何らかの理由で連続してクラッシュします。JBoss Data Grid は、クラッシュの間に状態を適切に分散できず、結果として部分的なデータ損失が発生します。
40.1. スプリットブレインの検出および回復 リンクのコピーリンクがクリップボードにコピーされました!
- 少なくとも 1 つのセグメントがすべての所有者を失います。つまり、
ownersの値以上の数のノードが JGroups ビューから脱退します。 - パーティションには、最新の安定したトポロジーの過半数のノード (半分超) が含まれます。安定したトポロジーは、再調整操作が正常に行われ、コーディネーターが追加の再調整が必要ないことを確認するたびに更新されます。
AvailabilityException で拒否されます。
注記
警告
- 物理的な分割が行われたとき (t1) に処理中だったトランザクション書き込みが一部の所有者でロールバックされることがあります。また、これにより、このような書き込みで影響を受けたエントリーのコピー (パーティションの再参加後) 間で不整合が発生することがあります。ただし、t1 後に開始されたトランザクション書き込みは予想どおりに失敗します。
- 書き込みが非トランザクションである場合は、この時間枠の間に、(物理的に分割され、パーティションがまだ劣化状態ではないため) マイナーパーティションにのみ書き込まれた値がパーティションの再参加時に失われることがあります (このマイナーパーティションは再参加時にプライマリー (利用可能な) パーティションから状態を受け取ります)。パーティションが再参加時に状態を受け取らない場合 (つまり、すべてのパーティションが劣化状態)、値は失われませんが、不整合が維持されることがあります。
- マイナーパーティションが劣化状態になるまでエントリーが引き続き利用可能になるため、この移行期間中にマイナーパーティションで無効な読み取りが発生することもあります。
- ネットワークパーティション中にいずれかのパーティションが利用可能な場合は、参加パーティションが消去され、利用可能な (パーティション) パーティションから参加ノードへの状態転送が実行されます。
- すべての参加パーティションがスプリットブレインの間に劣化状態にある場合は、マージ中に状態転送が実行されません。結合されたキャッシュは、メージパーティションに最新の安定したトポロジー (トポロジー ID が最大のトポロジー) の過半数のメンバーが含まれ、各セグメントに対して少なくとも 1 の所有者がいる (つまり、キーは失われません) 場合にのみ利用可能になります。
警告
40.2. スプリットブレインのタイミング: スプリットの検出 リンクのコピーリンクがクリップボードにコピーされました!
FD_ALL プロトコルを使用すると、以下のミリ秒の経過後に特定のノードが疑われます。
FD_ALL.timeout + FD_ALL.interval + VERIFY_SUSPECT.timeout + GMS.view_ack_collection_timeout
FD_ALL.timeout + FD_ALL.interval + VERIFY_SUSPECT.timeout + GMS.view_ack_collection_timeout
重要
40.3. スプリットブレインのタイミング: スプリットからの回復 リンクのコピーリンクがクリップボードにコピーされました!
3.1 * MERGE3.max_interval
3.1 * MERGE3.max_interval
10 * MERGE3.max_interval
10 * MERGE3.max_interval
重要
40.4. 連続してクラッシュしたノードの検出および回復 リンクのコピーリンクがクリップボードにコピーされました!
owners の値が 1 よりも大きい場合は、クラスターが引き続き利用可能になり、JBoss Data Grid が損失データの新しいレプリカを作成しようとします。ただし、この再調整プロセス中に追加のノードがクラッシュした場合は、いくつかのエントリーに対して、データのすべてのコピーがノードに存在しないため、回復できないことがあります。
owners の適切な値を設定することです。
40.5. ネットワークパーティションリカバリーの例 リンクのコピーリンクがクリップボードにコピーされました!
ownersが 3 に設定された分散 4 ノードのクラスター ( 「Owners が 3 の分散 4 ノードキャッシュの例」 を参照)ownersが 2 に設定された分散 4 ノードクラスター (「Owners が 2 の分散 4 ノードキャッシュの例」 を参照)ownersが 3 に設定された分散 5 ノードクラスター (「Owners が 3 の分散 5 ノードキャッシュの例」 を参照)ownersが 4 に設定されたレプリケート 4 ノードクラスター (「Owners が 4 のレプリケーション 4 ノードキャッシュの例」 を参照)ownersが 5 に設定されたレプリケート 5 ノードクラスター (「Owners が 5 のレプリケーション 5 ノードキャッシュの例」 を参照)ownersが 8 に設定されたレプリケート 8 ノードクラスター (「Owners が 8 のレプリケーション 8 ノードキャッシュの例」 を参照)
40.5.1. Owners が 3 の分散 4 ノードキャッシュの例 リンクのコピーリンクがクリップボードにコピーされました!
k1、k2、k3、および k4) を含む 4 ノード分散キャッシュが含まれます。このキャッシュでは、owners が 3 と等しくなります。つまり、各データエントリーごとに、キャッシュ内のさまざまなノードの 3 つのコピーが必要です。
図40.1 ネットワークパーティション実行前とネットワークパーティション実行後のキャッシュ
owners の値) 以上のノードが残っていないためです。結果として、4 つのエントリー (k1、k2、k3、および k4) は読み書きできません。新しいエントリーはいずれかの劣化パーティションで書き込みできます (どちらのパーティションでもエントリーの 3 つのコピーを格納できません)。
図40.2 パーティションのマージ後のキャッシュ
k1、k2、k3、および k4) から構成されます)。
40.5.2. Owners が 2 の分散 4 ノードキャッシュの例 リンクのコピーリンクがクリップボードにコピーされました!
owners が 2 となり、4 つのデータエントリー (k1、k2、k3、および k4) それぞれがキャッシュ内に 2 つのコピーを持ちます。
図40.3 ネットワークパーティション実行前とネットワークパーティション実行後のキャッシュ
k1 は読み書きできます (owners が 2 であり、エントリーの両方のコピーがパーティション 1 に保持されるため)。パーティション 2 では、同じ理由により k4 は読み書きできます。エントリー k2 および k3 は両方のパーティションで利用できません (いずれのパーティションにもこれらのエントリーのすべてのコピーが含まれないため)。新しいエントリー k5 は、k5 の両方のコピーを所有するパーティションにのみ書き込むことができます。
図40.4 パーティションのマージ後のキャッシュ
k1、k2、k3、および k4) から構成されます)。
40.5.3. Owners が 3 の分散 5 ノードキャッシュの例 リンクのコピーリンクがクリップボードにコピーされました!
owners が 3 に等しい分散キャッシュが含まれます。
図40.5 ネットワークパーティション実行前とネットワークパーティション実行後のキャッシュ
owners ノードよりも少ない数を失ったため、利用可能モードのままになります。
図40.6 パーティション 1 の再調整と別のエントリーの追加
numOwners は 3)。結果として、3 つのそれぞれのノードにはキャッシュ内の各エントリーのコピーが含まれます。次に、新しいエントリー (k6) をキャッシュに追加します。owners 値は引き続き 3 であり、パーティション 1 には 3 つのノードがあるため、各ノードには k6 のコピーが含まれます。
図40.7 パーティションのマージ後のキャッシュ
owners=3)、JBoss Data Grid はノードを再調整し、データエントリーがキャッシュ内の 4 つのノード間で分散されるようにします。マージされた新しいキャッシュは完全に利用可能になります。
40.5.4. Owners が 4 のレプリケーション 4 ノードキャッシュの例 リンクのコピーリンクがクリップボードにコピーされました!
owners が 4 に等しいレプリケートキャッシュが含まれます。
図40.8 ネットワークパーティション実行前とネットワークパーティション実行後のキャッシュ
k1、k2、k3、および k4) は読み書きできません。これは、2 つのパーティションのどちらも 4 つのキーのすべてのコピーを所有しないためです。
図40.9 パーティションのマージ後のキャッシュ
k1、k2、k3、および k4) から構成されます)。
40.5.5. Owners が 5 のレプリケーション 5 ノードキャッシュの例 リンクのコピーリンクがクリップボードにコピーされました!
owners が 5 に等しいレプリケーションキャッシュが含まれます。
図40.10 ネットワークパーティション実行前とネットワークパーティション実行後のキャッシュ
図40.11 両方のパーティションが 1 つのキャッシュにマージされる
40.5.6. Owners が 8 のレプリケーション 8 ノードキャッシュの例 リンクのコピーリンクがクリップボードにコピーされました!
owners が 8 に等しいレプリケートキャッシュを対象としています。
図40.12 ネットワークパーティション実行前とネットワークパーティション実行後のキャッシュ
図40.13 パーティション 2 はさらにパーティション 2A と 2B に分割される
このシナリオでは 4 つのキャッシュの解決法があります。
- ケース 1: パーティション 2A と 2B のマージ
- ケース 2: パーティション 1 と 2A のマージ
- ケース 3: パーティション 1 と 2B のマージ
- ケース 4: パーティション 1、パーティション 2A、およびパーティション 2B のマージ
図40.14 ケース 1: パーティション 2A と 2B のマージ
図40.15 ケース 2: パーティション 1 と 2A のマージ
図40.16 ケース 3: パーティション 1 と 2B のマージ
図40.17 ケース 4: パーティション 1、パーティション 2A、およびパーティション 2B のマージ
40.6. パーティション処理の設定 リンクのコピーリンクがクリップボードにコピーされました!
パーティション処理を以下のように宣言します。
<distributed-cache name="distributed_cache"
owners="2"
l1-lifespan="20000">
<partition-handling enabled="true"/>
</distributed-cache>
<distributed-cache name="distributed_cache"
owners="2"
l1-lifespan="20000">
<partition-handling enabled="true"/>
</distributed-cache>
以下の設定を使用して、パーティション処理をリモートクライアントサーバーモードで宣言的に有効にします。
付録A JBoss Data Grid 向けの推奨 JGroups 値 リンクのコピーリンクがクリップボードにコピーされました!
A.1. サポート対象 JGroups プロトコル リンクのコピーリンクがクリップボードにコピーされました!
| プロトコル | 詳細 |
|---|---|
| TCP |
TCP/IP は、IP マルチキャストが使用できなくなる状況で使用できる UDP の代替トランスポートです。このような状況には、ルーターが IP マルチキャストパケットを破棄する可能性のある WAN 上の操作が実行される場合などが含まれます。
TCP は、ユニキャストおよびマルチキャストメッセージを送信するために使用されるトランスポートプロトコルです。
IP マルチキャストは初期メンバーを検出するために使用することができないため、初期メンバーを見つけるには別のメカニズムを使用する必要があります。
Red Hat JBoss Data Grid の Hot Rod はカスタム TCP クライアント/サーバープロトコルです。
|
| UDP |
UDP は、以下を使用するトランスポートプロトコルです。
UDP トランスポートが開始すると、トランスポートはユニキャストソケットとマルチキャストソケットを開きます。ユニキャストソケットは、ユニキャストメッセージの送受信に使用され、マルチキャストソケットは、マルチキャストソケットの送受信を行います。チャネルの物理アドレスは、ユニキャストソケットのアドレスおよびポート番号と同じです。
|
| PING |
PING プロトコルは、メンバーの内部検出に使用されます。PING 要求を IP マルチキャストアドレスにマルチキャストすることにより、最も古いメンバーであるコーディネーターを検出するために使用されます。
各メンバーはコーディネーターのアドレスと自身のアドレスを含むパケットで ping に応答します。指定されたミリ秒数 (N) または応答数 (M) のあとに、参加者が応答からコーディネーターを決定し、コーディネーターに JOIN 要求 (GMS により処理されます) を送信します。応答がない場合、参加者はグループの最初のメンバーと見なされます。
PING は、動的検出を使用するため、TCPPING とは異なります。つまり、メンバーは他のクラスターメンバーの場所を事前に知る必要がありません。PING はトランスポートの IP マルチキャスト機能を使用して検出要求をクラスターに送信します。結果として PING はトランスポートとして UDP を必要とします。
|
| TCPPING | TCCPING プロトコルは、既知の一連のメンバーを使用して、検出のために ping を送信します。このプロトコルは静的設定です。 |
| MPING | MPING (マルチキャスト PING) プロトコルは IP マルチキャストを使用して初期メンバーシップを検出します。すべてのトランスポートで使用できますが、通常は TCP と共に使用されます。 |
| S3_PING |
S3_PING は、Amazon の Elastic Compute Cloud (EC2) で使用するのに理想的なディスカバリープロトコルです。これは、EC2 ではマルチキャストが許可されず、MPING も許可されないためです。
それぞれの EC2 インスタンスは小さいファイルをバケットとして知られる S3 データコンテナーに追加します。その後、各インスタンスはバケット内のファイルを読み込み、クラスターの他のメンバーを検出します。
|
| JDBC_PING |
JDBC_PING はクラスター内のノードに関する情報を保存するために共有データベースを使用するディスカバリープロトコルです。
|
| TCPGOSSIP |
TCPGOSSIP は 1 つ以上の設定された GossipRouter プロセスを使用してクラスター内のノードについての情報を保存するディスカバリープロトコルです。
|
| MERGE3 | MERGE3 プロトコルは JGroups 3.1 以降で利用可能です。MERGE2 とは異なり、MERGE3 では、すべてのメンバーがアドレス (UUID)、論理名、物理アドレス、およびビュー ID を使用して周期的に INFO メッセージを送信します。周期的に、各コーディネーターは不整合が発生しないように INFO 詳細情報を確認します。 |
| FD_ALL | 障害検出に使用される FD_ALL は単純なハートビートプロトコルを使用します。各メンバーは他のすべてのメンバー (メンバー自身を除く) のテーブルを維持し定期的にハートビートをマルチキャストします。たとえば、P からデータまたはハートビートを受け取ると、P のタイムスタンプが現在の時刻に設定されます。周期的に、失効したメンバーはタイムスタンプ値を使用して識別されます。 |
| FD_SOCK | FD_SOCK は、クラスターメンバー間で作成された TCP ソケットのリングに基づいた障害検出プロトコルです。各クラスターメンバーは近接メンバーに接続し (最後のメンバーは最初のメンバーに接続します)、リングが形成されます。メンバー B は、近接メンバー A が TCP ソケットの異常な終了 (通常はノード B のクラッシュのため) を検出したときに疑われます。ただし、メンバー B が正常に脱退した場合、メンバー B はメンバー A に通知し、脱退しても疑われません。 |
| FD_HOST |
FD_HOST は、すべてのホストのクラッシュまたはハングを検出し、ICMP ping メッセージまたはカスタムコマンドを介して該当するホストのすべてのクラスターメンバーを疑う障害検出プロトコルです。FD_HOST は、ローカルホストの 1 つのメンバーのクラッシュまたはハングを検出しませんが、クラスター内の他のすべてのホストがライブ状態であり利用可能であるかどうかのみチェックします。したがって、FD_HOST は、FD_ALL や FD_SOCK などの他の障害検出プロトコルと共に使用されます。このプロトコルは通常、複数のクラスターメンバーが同じ物理的なボックス上で実行されている場合に使用されます。
FD_HOST プロトコルは、JBoss Data Grid 向けの Windows でサポートされます。
cmd パラメーターを ping.exe に設定し、ping 数を指定する必要があります。
|
| VERIFY_SUSPECT | VERIFY_SUSPECT プロトコルは、メンバーを除外する前にメンバーに ping を送信することにより、疑われたメンバーがダウンしているかどうかを確認します。メンバーが応答した場合は、疑いに関するメッセージが破棄されます。 |
| NAKACK2 |
NAKACK2 プロトコルは、NAKACK プロトコルの後継プロトコルであり、JGroups 3.1 で導入されました。
NACKACK2 プロトコルはマルチキャストメッセージに使用され、NAK を使用します。各メッセージは、シーケンス番号でタグ付けされます。受信側はシーケンス番号を追跡し、メッセージを順番に配信します。シーケンス番号のギャップが検出されると、受信側は不明なメッセージを再送信するよう送信側に要求します。
|
| UNICAST3 |
UNICAST3 プロトコルは、安定した配信を提供し (送信側が送信したメッセージは番号付けされたシーケンスで送信されるため、失われません)、送信側と受信側間のポイントツーポイントメッセージに FIFO (First In First Out) プロパティーを使用します。
UNICAST3 は、再送信にポジティブ ack を使用します。たとえば、送信側 A は、受信側 B がメッセージ M を受診するまでメッセージ M を送信し続け、正常な送信を示すために ack を返します。送信側 A は、B から ack を受信するまで、B がクラスターを脱退するまで、または A がクラッシュするまでメッセージ M を再送信し続けます。
|
| STABLE | STABLE プロトコルは、クラスター内のすべてのメンバーによって参照されたメッセージのガーベッジコレクターです。再送信が必要なことがあるため、各メンバーはすべてのメッセージを格納します。メッセージは、すべてのメンバーがメッセージを参照したときにのみ再送信バッファーから削除できます。STABLE プロトコルは、参照された最大値のメッセージと最小値のメッセージを定期的に拡散します。最小値は、min (すべてのメンバーに対して最小のシーケンス番号すべて) を計算するために使用され、min 値よりも小さいシーケンス番号のメッセージは破棄できます。 |
| GMS | GMS プロトコルは、グループメンバーシッププロトコルです。このプロトコルは、参加/脱退/クラッシュ (疑い) を処理し、新しいビューを適切に生成します。 |
| MFC | MFC は、フロー制御プロトコルのマルチキャストバージョンです。 |
| UFC | UFC は、フロー制御プロトコルのユニキャストバージョンです。 |
| FRAG2 | FRAG2 プロトコルは、大きいメッセージを小さいメッセージに断片化し、小さいメッセージを送信します。受信側では、小さい断片が、大きく完全なメッセージに再び組み立てられ、アプリケーションに配信されます。FRAG2 はマルチキャストメッセージとユニキャストメッセージの両方に使用されます。 |
| SYM_ENCRYPT |
JGroups には、クラスターのトラフィック向けの暗号化を提供する SYM_ENCRYPT プロトコルが含まれます。デフォルトでは、暗号化によりメッセージ本文のみが暗号化され、メッセージヘッダーは暗号化されません。すべてのヘッダーを含むメッセージ全体と宛先アドレスおよびソースアドレスを暗号化するには、プロパティー
encrypt_entire_message が true である必要があります。このプロトコルを定義する際、これは NAKACK2 の下に直接配置する必要があります。
SYM_ENCRYPT レイヤーは、キーストアでシークレットを定義することで JGroups で通信を暗号化および復号化するために使用されます。
各メッセージは、暗号化ヘッダーを示す特定の暗号化ヘッダーとメッセージを暗号化および復号化するために使用するキーのバージョンを示す MD5 ダイジェストで暗号化済みとして識別されます。
|
| ASYM_ENCRYPT |
JGroups には、クラスターのトラフィック向けの暗号化を提供する ASYM_ENCRYPT プロトコルが含まれます。デフォルトでは、暗号化によりメッセージ本文のみが暗号化され、メッセージヘッダーは暗号化されません。すべてのヘッダーを含むメッセージ全体と宛先アドレスおよびソースアドレスを暗号化するには、プロパティー
encrypt_entire_message が true である必要があります。このプロトコルを定義する際、これは NAKACK2 の下に直接配置する必要があります。
ASYM_ENCRYPT レイヤーは、定義済みのアルゴリズムとキーサイズを使用してコーディネーターにシークレットキーを生成させることにより、JGroups の通信の暗号化および復号化するために使用されます。
各メッセージは、暗号化ヘッダーを示す特定の暗号化ヘッダーとメッセージを暗号化および復号化するために使用するキーのバージョンを示す MD5 ダイジェストで暗号化済みとして識別されます。
|
| SASL | SASL (Simple Authentication and Security Layer) プロトコルは、置き換え可能なメカニズムを使用した接続指向プロトコルで認証およびデータセキュリティーサービスを提供するフレームワークです。また、SASL はプロトコルとメカニズム間で構造化インターフェースを提供します。 |
| RELAY2 |
RELAY プロトコルは、各サイトの 1 つのノード間の接続を作成することによって 2 つのリモートクラスターをブリッジします。これにより、1 つのサイトに送信されたマルチキャストメッセージを他のサイトにリレーし、他のサイトからそのサイトにもリレーすることができます。
JGroups には、Red Hat JBoss Data Grid のサイト間レプリケーションにおけるサイト間の通信に使用される RELAY2 プロトコルが含まれます。
RELAY2 プロトコルは RELAY のように動作しますが、若干の違いがあります。RELAY とは異なり、RELAY2 プロトコルは以下のことを行います。
|
A.2. TCP のデフォルト値と推奨値 リンクのコピーリンクがクリップボードにコピーされました!
注記
JGroups Default Valueの値は、JGroups に対して内部的に設定される値を示しますが、カスタム設定ファイルや JBoss Data Grid に同梱される JGroups 設定ファイルで上書きできます。JBoss Data Grid Configured Valuesの値は、JBoss Data Grid に同梱される JGroups の設定ファイルのいずれかを使用する場合にデフォルトで使用される値を示します。JGroups のカスタム設定ファイルが JBoss Data Grid と併用される場合にこれらの値を使用することが推奨されます。
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| bind_addr | 任意の非ループバック | 特定のインターフェースにアドレスを設定 |
| bind_port | 任意の空きポート | 特定のポートを設定 |
| loopback | true | デフォルト値と同じ |
| port_range | 50 | 必要なポート範囲に 基づいて設定 |
| recv_buf_size | 150,000 | デフォルト値と同じ |
| send_buf_size | 150,000 | 640,000 |
| use_send_queues | true | デフォルト値と同じ |
| sock_conn_timeout | 2,000 | 300 |
| max_bundle_size | 64,000 | 64,000 |
| enable_diagnostics | true | false |
| thread_pool.enabled | true | デフォルト値と同じ |
| thread_pool.min_threads | 2 | これは、ノードの数と同じである必要があります。 |
| thread_pool.max_threads | 30 | これは、thread_pool.min_threads よりも大きい必要があります。たとえば、小さいグリッド (2〜10 ノード) の場合は、この値をノードの数の 2 倍に設定しますが、大きいグリッド (20 以上のノード) は、比率を小さくする必要があります。たとえば、グリッドに 20 ノードが含まれる場合はこの値を 25 に設定し、グリッドに 100 ノードが含まれる場合はこの値を 110 に設定します。 |
| thread_pool.keep_alive_time | 30,000 | 60,000 |
| thread_pool.queue_enabled | true | false |
| thread_pool.queue_max_size | 500 | なし。キューを無効にする必要があります。 |
| thread_pool.rejection_policy | Discard | デフォルト値と同じ |
| internal_thread_pool.enabled | true | デフォルト値と同じ |
| internal_thread_pool.min_threads | 2 | 5 |
| internal_thread_pool.max_threads | 4 | 20 |
| internal_thread_pool.keep_alive_time | 30,000 | 60,000 |
| internal_thread_pool.queue_enabled | true | false |
| internal_thread_pool.rejection_policy | Discard | 停止 |
| oob_thread_pool.enabled | true | デフォルト値と同じ |
| oob_thread_pool.min_threads | 2 | 20 以上 |
| oob_thread_pool.max_threads | 10 | 200 以上 (負荷に基づく) |
| oob_thread_pool.keep_alive_time | 30,000 | 60,000 |
| oob_thread_pool.queue_enabled | true | false |
| oob_thread_pool.queue_max_size | 500 | なし。キューを無効にする必要があります。 |
| oob_thread_pool.rejection_policy | Discard | デフォルト値と同じ |
注記
pbcast.GMS join_timeout 値が代わりにタイムアウト期間を示します。
JBoss Data Grid 向けの S3_PING の設定の詳細については、「S3_PING 設定オプション」を参照してください。
JBoss Data Grid 向けの TCPGOSSIP の設定の詳細については、「TCPGOSSIP 設定オプション」 を参照してください。
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| bind_addr | 任意の非ループバック | 特定のインターフェースにアドレスを設定 |
| break_on_coord_rsp | true | デフォルト値と同じ |
| mcast_addr | 230.5.6.7 | デフォルト値と同じ |
| mcast_port | 7555 | デフォルト値と同じ |
| ip_ttl | 8 | 2 |
注記
pbcast.GMS join_timeout 値が代わりにタイムアウト期間を示します。
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| min_interval | 1,000 | 10,000 |
| max_interval | 10,000 | 30,000 |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| client_bind_por | 0 (ポートがランダムに選択され、使用されます) | デフォルト値と同じ |
| get_cache_timeout | 1000 ミリ秒 | デフォルト値と同じ |
| keep_alive | true | デフォルト値と同じ |
| num_tries | 3 | デフォルト値と同じ |
| start_port | 0 (ポートがランダムに選択され、使用されます) | デフォルト値と同じ |
| suspect_msg_interval | 5000 ミリ秒 | デフォルト値と同じ |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| timeout | 40,000 | 60,000。FD_ALL タイムアウト値は、CMS ガーベッジコレクターでの stop the world ガーベッジコレクション一時停止の最大時間の 2 倍に設定されます。適切にチューニングされた JVM では、一時停止の最大時間はヒープサイズに応じて決まり、ヒープの 1 GB あたり 1 秒を超えないようにする必要があります。たとえば、8GB のヒープでは、一時停止時間が 8 秒を超えないようにし、FD_ALL タイムアウト値を 16 秒に設定する必要があります。長いガーベッジコレクション一時停止が使用された場合は、ノードで false 障害検出を回避するためにこのタイムアウト値を増やす必要があります。 |
| 間隔 | 8,000 | 15,000。FD_ALL interval 値は、FD_ALL の timeout 値に設定された値よりも 4 分 1 以下である必要があります。 |
| timeout_check_interval | 2,000 | 5,000 |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| check_timeout | 3,000 | 5,000 |
| cmd | InetAddress.isReachable() (ICMP ping) | - |
| 間隔 | 20,000 | 15,000。FD_HOST の interval 値は、FD_HOST の timeout 値の 4 分 1 である必要があります。 |
| timeout | 60,000 | 60,000 |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| timeout | 2,000 | 5,000 |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| use_mcast_xmit | true | false |
| xmit_interval | 1,000 | デフォルト値と同じ |
| xmit_table_num_rows | 50 | 50 |
| xmit_table_msgs_per_row | 10,000 | 1,024 |
| xmit_table_max_compaction_time | 10,000 | 30,000 |
| max_msg_batch_size | 100 | デフォルト値と同じ |
| resend_last_seqno | false | true |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| xmit_interval | 500 | デフォルト値と同じ |
| xmit_table_num_rows | 100 | 50 |
| xmit_table_msgs_per_row | 1,0000 | 1,024 |
| xmit_table_max_compaction_time | 600,000 | 30,000 |
| max_msg_batch_size | 500 | 100 |
| conn_close_timeout | 60,000 | 推奨値なし。 |
| conn_expiry_timeout | 120,000 | 0 |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| stability_delay | 6,000 | 500 |
| desired_avg_gossip | 20,000 | 5,000 |
| max_bytes | 2,000,000 | 1,000,000 |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| print_local_addr | true | false |
| join_timeout | 5,000 | 15,000 |
| view_bundling | true | デフォルト値と同じ |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| max_credits | 500,000 | 2,000,000 |
| min_threshold | 0.40 | デフォルト値と同じ |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| frag_size | 60,000 | デフォルト値と同じ |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| sym_algorithm | AES | - |
| sym_keylength | 128 | - |
| sym_provider | Bouncy Castle Provider | - |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| asym_algorithm | RSA | - |
| asym_keylength | 512 | - |
| asym_provider | Bouncy Castle Provider | - |
| change_keys_on_leave | false | - |
詳細については、『Red Hat JBoss Data Grid Developer Guide』の「User Authentication over Hot Rod Using SASL」セクションを参照してください。
詳細については、35章データセンター間のレプリケーションのセットアップを参照してください。
A.3. UDP のデフォルト値と推奨値 リンクのコピーリンクがクリップボードにコピーされました!
注記
JGroups Default Valueの値は、JGroups に対して内部的に設定される値を示しますが、カスタム設定ファイルや JBoss Data Grid に同梱される JGroups 設定ファイルで上書きできます。JBoss Data Grid Configured Valuesの値は、JBoss Data Grid に同梱される JGroups の設定ファイルのいずれかを使用する場合にデフォルトで使用される値を示します。JGroups のカスタム設定ファイルが JBoss Data Grid と併用される場合にこれらの値を使用することが推奨されます。
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| bind_addr | 任意の非ループバック | 特定のインターフェースにアドレスを設定 |
| bind_port | 任意の空きポート | 特定のポートを設定 |
| loopback | true | true |
| port_range | 50 | 必要なポート範囲に 基づいて設定 |
| mcast_addr | 228.8.8.8 | デフォルト値と同じ |
| mcast_port | 7600 | デフォルト値と同じ |
| tos | 8 | デフォルト値と同じ |
| ucast_recv_buf_size | 64,000 | 20,000,000 |
| ucast_send_buf_size | 100,000 | 1,000,000 |
| mcast_recv_buf_size | 500,000 | 25,000,000 |
| mcast_send_buf_size | 100,000 | 1,000,000 |
| ip_ttl | 8 | 2 |
| thread_naming_pattern | cl | pl |
| max_bundle_size | 64,000 | デフォルト値と同じ |
| enable_diagnostics | true | false |
| thread_pool.enabled | true | デフォルト値と同じ |
| thread_pool.min_threads | 2 | これは、ノードの数と同じである必要があります。 |
| thread_pool.max_threads | 30 | これは、thread_pool.min_threads よりも大きい必要があります。たとえば、小さいグリッド (2〜10 ノード) の場合は、この値をノードの数の 2 倍に設定しますが、大きいグリッド (20 以上のノード) は、比率を小さくする必要があります。たとえば、グリッドに 20 ノードが含まれる場合はこの値を 25 に設定し、グリッドに 100 ノードが含まれる場合はこの値を 110 に設定します。 |
| thread_pool.keep_alive_time | 30,000 | 60,000 |
| thread_pool.queue_enabled | true | false |
| thread_pool.queue_max_size | 500 | なし。キューを無効にする必要がある |
| thread_pool.rejection_policy | Discard | デフォルト値と同じ |
| internal_thread_pool.enabled | true | デフォルト値と同じ |
| internal_thread_pool.min_threads | 2 | 5 |
| internal_thread_pool.max_threads | 4 | 20 |
| internal_thread_pool.keep_alive_time | 30,000 | 60,000 |
| internal_thread_pool.queue_enabled | true | false |
| internal_thread_pool.rejection_policy | Discard | 停止 |
| oob_thread_pool.enabled | true | デフォルト値と同じ |
| oob_thread_pool.min_threads | 2 | 20 以上 |
| oob_thread_pool.max_threads | 10 | 200 以上 (負荷に基づく) |
| oob_thread_pool.keep_alive_time | 30,000 | 60,000 |
| oob_thread_pool.queue_enabled | true | false |
| oob_thread_pool.queue_max_size | 500 | なし。キューを無効にする必要があります。 |
| oob_thread_pool.rejection_policy | Discard | デフォルト値と同じ |
注記
join_timeout 値が代わりにタイムアウト期間を示します。
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| min_interval | 1,000 | 10,000 |
| max_interval | 10,000 | 30,000 |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| client_bind_por | 0 (ポートがランダムに選択され、使用されます) | デフォルト値と同じ |
| get_cache_timeout | 1000 ミリ秒 | デフォルト値と同じ |
| keep_alive | true | デフォルト値と同じ |
| num_tries | 3 | デフォルト値と同じ |
| start_port | 0 (ポートがランダムに選択され、使用されます) | デフォルト値と同じ |
| suspect_msg_interval | 5000 ミリ秒 | デフォルト値と同じ |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| timeout | 40,000 | 60,000。FD_ALL タイムアウト値は、CMS ガーベッジコレクターでの stop the world ガーベッジコレクション一時停止の最大時間の 2 倍に設定されます。適切にチューニングされた JVM では、一時停止の最大時間はヒープサイズに応じて決まり、ヒープの 1 GB あたり 1 秒を超えないようにする必要があります。たとえば、8GB のヒープでは、一時停止時間が 8 秒を超えないようにし、FD_ALL タイムアウト値を 16 秒に設定する必要があります。長いガーベッジコレクション一時停止が使用された場合は、ノードで false 障害検出を回避するためにこのタイムアウト値を増やす必要があります。 |
| 間隔 | 8,000 | 15,000。FD_ALL interval 値は、FD_ALL の timeout 値に設定された値よりも 4 分 1 以下である必要があります。 |
| timeout_check_interval | 2,000 | 5,000 |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| check_timeout | 3,000 | 5,000 |
| cmd | InetAddress.isReachable() (ICMP ping) | - |
| 間隔 | 20,000 | 15,000。FD_HOST の interval 値は、FD_HOST の timeout 値の 4 分 1 である必要があります。 |
| timeout | - | 60,000 |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| timeout | 2,000 | 5,000 |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| use_mcast_xmit | true | false |
| xmit_interval | 1,000 | デフォルト値と同じ |
| xmit_table_num_rows | 50 | 50 |
| xmit_table_msgs_per_row | 10,000 | 1,024 |
| xmit_table_max_compaction_time | 10,000 | 30,000 |
| max_msg_batch_size | 100 | デフォルト値と同じ |
| resend_last_seqno | false | true |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| xmit_interval | 500 | デフォルト値と同じ |
| xmit_table_num_rows | 100 | 50 |
| xmit_table_msgs_per_row | 1,0000 | 1,024 |
| xmit_table_max_compaction_time | 600,000 | 30,000 |
| max_msg_batch_size | 500 | 100 |
| conn_close_timeout | 60,000 | 推奨値なし |
| conn_expiry_timeout | 120,000 | 0 |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| stability_delay | 6,000 | 500 |
| desired_avg_gossip | 20,000 | 5,000 |
| max_bytes | 2,000,000 | 1,000,000 |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| print_local_addr | true | false |
| join_timeout | 5,000 | 15,000 |
| view_bundling | true | デフォルト値と同じ |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| max_credits | 500,000 | 2,000,000 |
| min_threshold | 0.40 | デフォルト値と同じ |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| max_credits | 500,000 | 2,000,000 |
| min_threshold | 0.40 | デフォルト値と同じ |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| frag_size | 60,000 | デフォルト値と同じ |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| sym_algorithm | AES | - |
| sym_keylength | 128 | - |
| sym_provider | Bouncy Castle Provider | - |
| パラメーター | JGroups のデフォルト値 | JBoss Data Grid の設定値 |
|---|---|---|
| asym_algorithm | RSA | - |
| asym_keylength | 512 | - |
| asym_provider | Bouncy Castle Provider | - |
| change_keys_on_leave | false | - |
詳細については、『Red Hat JBoss Data Grid Developer Guide』 の「User Authentication over Hot Rod Using SASL」セクションを参照してください。
詳細については、35章データセンター間のレプリケーションのセットアップを参照してください。
A.4. TCPGOSSIP JGroups プロトコル リンクのコピーリンクがクリップボードにコピーされました!
TCPGOSSIP ディスカバリープロトコルは 1 つ以上の設定された GossipRouter プロセスを使用してクラスターのノードについての情報を保存します。
重要
GossipRouter は JGroups jar ファイルに含まれており、ノードが起動する前に実行中である必要があります。このプロセスは、JBoss Data Grid に含まれている JGroups jar ファイルの GossipRouter クラスを参照して開始できます。
java -classpath jgroups-${jgroups.version}.jar org.jgroups.stack.GossipRouter -bindaddress IP_ADDRESS -port PORT
java -classpath jgroups-${jgroups.version}.jar org.jgroups.stack.GossipRouter -bindaddress IP_ADDRESS -port PORT
ライブラリーモードでは、JGroups xml ファイルを使用して TCPGOSSIP を設定する必要がありますが、デフォルトでは TCPGOSSIP 設定は含まれていません。「事前設定された JGroups ファイル」 で指定されている既存ファイルのいずれかを使用し、TCPGOSSIP を組み込むように設定を調整することをお勧めします。たとえば、default-configs/default-jgroups-ec2.xml を選択してから S3_PING プロトコルを削除し、以下のブロックを代わりに追加することができます。
<TCPGOSSIP initial_hosts="IP_ADDRESS_0[PORT_0],IP_ADDRESS_1[PORT_1]" />
<TCPGOSSIP initial_hosts="IP_ADDRESS_0[PORT_0],IP_ADDRESS_1[PORT_1]" />
リモートクライアントサーバーモードでは、stack をサーバーの設定ファイルの jgroups サブシステムで TCPGOSSIP について定義できます。以下の設定スニペットにこの例が含まれます。
A.5. TCPGOSSIP 設定オプション リンクのコピーリンクがクリップボードにコピーされました!
TCPGOSSIP 固有のプロパティーを設定できます。
initial_hosts- 初期のメンバーシップについて接続されるホストのカンマ区切りのリストです。reconnect_interval- 接続が切断されたノードが Gossip Router への再接続を試行する間隔 (ミリ秒単位)。sock_conn_timeout- ソケット作成に許可される最大時間 (ミリ秒単位)。デフォルトは1000に設定されます。sock_read_timeout- 読み取りがブロックされる最大時間 (ミリ秒単位)。0を値として指定すると無制限にブロックされます。
A.6. JBoss Data Grid JGroups 設定ファイル リンクのコピーリンクがクリップボードにコピーされました!
infinispan-embedded-${infinispan.version}.jar にあります。
default-configs/default-jgroups-ec2.xmldefault-configs/default-jgroups-google.xmldefault-configs/default-jgroups-tcp.xmldefault-configs/default-jgroups-udp.xml
付録B JConsole による接続 リンクのコピーリンクがクリップボードにコピーされました!
B.1. JConsole 経由での JDG への接続 リンクのコピーリンクがクリップボードにコピーされました!
手順B.1 管理ユーザーの JBoss Data Grid への追加
binディレクトリーに移動します。cd $JDG_HOME/bin
cd $JDG_HOME/binCopy to Clipboard Copied! Toggle word wrap Toggle overflow add-user.shスクリプトを実行します。./add-user.sh
./add-user.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow - Return を押して
ManagementUserのデフォルトオプションを受け入れます。 - Return を押して
ManagementRealmのデフォルトオプションを受け入れます。 - 必要なユーザー名を入力します。この例では
jmxadminが使用されます。 - パスワードを入力し、確認します。
- Return を押して no groups のデフォルトオプションを受け入れます。
yesを入力して、必要なユーザーがManagementRealmに追加されることを確認します。- このユーザーはプロセス間の接続で使用されないため、
noを入力します。 - 以下の画像は、実行例を示しています。
図B.1 add-user.sh の実行
デフォルトでは、JBoss Data Grid は 127.0.0.1 への管理インターフェースのバインディングから開始します。リモート接続を実行するために、このインターフェースはネットワークで表示できる IP アドレスにバインドされている必要があります。以下のいずれかのオプションでこれを実行できます。
- オプション 1: ランタイム - 起動時に
jboss.bind.address.managementプロパティーを調整することにより、新規の IP アドレスを指定できます。以下の例では、JBoss Data Grid は起動時に 192.168.122.5 にバインドされています。./standalone.sh ... -Djboss.bind.address.management=192.168.122.5
./standalone.sh ... -Djboss.bind.address.management=192.168.122.5Copy to Clipboard Copied! Toggle word wrap Toggle overflow - オプション 2: 設定 - 設定ファイルで
jboss.bind.address.managementを調整します。これはinterfacesサブシステムにあります。IP が 192.168.122.5 に調整された設定ファイルのスニペットは以下のようになります。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
jconsole.sh スクリプトは $JDG_HOME/bin ディレクトリーで提供されます。このスクリプトを実行すると、JConsole が起動します。
手順B.2 JConsole を使用したリモート JBoss Data Grid インスタンスへの接続
$JDG_HOME/bin/jconsole.shスクリプトを実行します。これにより、以下を表示するウィンドウが表示されます。図B.2 JConsole
Remote Processを選択します。- テキスト領域に
service:jmx:remoting-jmx://$IP:9999と入力します。 add-user.shスクリプトで作成されるユーザー名およびパスワードを入力します。Connectをクリックして接続を開始します。- いったん接続されたら、キャッシュ関連のノードが表示されることを確認します。以下のスクリーンショットはこのノード例を示しています。
図B.3 JConsole: キャッシュの表示
付録C Red Hat JBoss Data Grid における JMX MBeans リンクのコピーリンクがクリップボードにコピーされました!
C.1. Activation リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.eviction.ActivationManagerImpl
| 名前 | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| activations | アクティベーションイベントの数です。 | 文字列 | いいえ |
| statisticsEnabled | このコンポーネントにより、統計の収集を有効または無効にします。 | ブール値 | はい |
| 名前 | 説明 | 署名 |
|---|---|---|
| resetStatistics | このコンポーネントによって収集される統計をリセットします。 | void resetStatistics() |
C.2. Cache リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.CacheImpl
| 名前 | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| cacheName | キャッシュ名を返します。 | 文字列 | いいえ |
| cacheStatus | キャッシュの状態を返します。 | 文字列 | いいえ |
| configurationAsProperties | プロパティーの形式でキャッシュの設定を返します。 | プロパティー | いいえ |
| version | Infinispan のバージョンを返します。 | 文字列 | いいえ |
| cacheAvailability | キャッシュの利用可能性を返す | 文字列 | はい |
| 名前 | 説明 | 署名 |
|---|---|---|
| start | キャッシュを起動します。 | void start() |
| stop | キャッシュを停止します。 | void stop() |
| clear | キャッシュをクリアにします。 | void clear() |
C.3. CacheContainerStats リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.stats.impl.CacheContainerStatsImpl
| 名前 | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| averageReadTime | このキャッシュコンテナー内のすべての読み取り操作に対するキャッシュコンテナー合計平均時間 (ミリ秒単位)。 | long | いいえ |
| averageRemoveTime | このキャッシュコンテナー内のすべての削除操作に対するキャッシュコンテナー合計平均時間 (ミリ秒単位)。 | long | いいえ |
| averageWriteTime | このキャッシュコンテナー内のすべての書き込み操作に対するキャッシュコンテナー合計平均時間 (ミリ秒単位)。 | long | いいえ |
| evictions | キャッシュエビクション操作のキャッシュコンテナー合計数。 | long | いいえ |
| hitRatio | このキャッシュに対するキャッシュコンテナー総ヒット比率 (ヒット数/(ヒット数 + ミス数))。 | double | いいえ |
| hits | キャッシュ属性ヒットのキャッシュコンテナー合計数。 | long | いいえ |
| misses | キャッシュ属性ミスのキャッシュコンテナー合計数。 | long | いいえ |
| numberOfEntries | このキャッシュコンテナーのすべてのキャッシュに現在存在するエントリーのキャッシュコンテナー合計数。 | 整数 | いいえ |
| readWriteRatio | このキャッシュコンテナーのすべてのキャッシュのキャッシュコンテナー読み取り/書き込み比率。 | double | いいえ |
| removeHits | 削除ヒットのキャッシュコンテナー合計数。 | double | いいえ |
| removeMisses | キーが見つからなかった場合のキャッシュ削除のキャッシュコンテナー合計数。 | long | いいえ |
| statisticsEnabled | このコンポーネントにより、統計の収集を有効または無効にします。 | ブール値 | はい |
| stores | キャッシュ属性 put 操作のキャッシュコンテナー合計数。 | long | いいえ |
C.4. CacheLoader リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.interceptors.CacheLoaderInterceptor
| 名前 | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| cacheLoaderLoads | キャッシュストアからロードされるエントリーの数です。 | long | いいえ |
| cacheLoaderMisses | キャッシュストアに存在しなかったエントリーの数です。 | long | いいえ |
| stores | 設定済みの有効にされているキャッシュローダーのコレクションを返します。 | コレクション | いいえ |
| statisticsEnabled | このコンポーネントにより、統計の収集を有効または無効にします。 | ブール値 | はい |
| 名前 | 説明 | 署名 |
|---|---|---|
| disableStore | 指定されるタイプのすべてのキャッシュローダーを無効にします。このタイプは、無効にするキャッシュローダーの完全修飾クラス名です。 | void disableStore(String storeType) |
| resetStatistics | このコンポーネントによって収集される統計をリセットします。 | void resetStatistics() |
C.5. CacheManager リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.manager.DefaultCacheManager
| 名前 | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| cacheManagerStatus | キャッシュマネージャーのインスタンスの状態です。 | 文字列 | いいえ |
| clusterMembers | クラスターのメンバーを一覧表示します。 | 文字列 | いいえ |
| clusterName | クラスター名です。 | 文字列 | いいえ |
| clusterSize | ノードの数で表されるクラスターのサイズです。 | 整数 | いいえ |
| createdCacheCount | デフォルトキャッシュを含む、作成されたキャッシュの合計数です。 | 文字列 | いいえ |
| definedCacheCount | デフォルトキャッシュを除く、定義されたキャッシュの合計数です。 | 文字列 | いいえ |
| definedCacheNames | 定義されたキャッシュ名とそれらのキャッシュの状態です。デフォルトのキャッシュはこの表示には含まれません。 | 文字列 | いいえ |
| name | このキャッシュマネージャーの名前です。 | 文字列 | いいえ |
| nodeAddress | このインスタンスに関連付けられたネットワークアドレスです。 | 文字列 | いいえ |
| physicalAddresses | このインスタンスに関連付けられた物理ネットワークアドレスです。 | 文字列 | いいえ |
| runningCacheCount | デフォルトキャッシュを含む、実行中のキャッシュの合計数です。 | 文字列 | いいえ |
| version | Infinispan のバージョンです。 | 文字列 | いいえ |
| globalConfigurationAsProperties | グローバル設定プロパティーです。 | プロパティー | いいえ |
| 名前 | 説明 | 署名 |
|---|---|---|
| startCache | キャッシュマネージャーに関連付けられたデフォルトのキャッシュを起動します。 | void startCache() |
| startCache | このキャッシュマネージャーから名前付きキャッシュを起動します。 | void startCache (String p0) |
C.6. CacheStore リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.interceptors.CacheWriterInterceptor
| 名前 | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| writesToTheStores | ストアへの書き込み回数です。 | long | いいえ |
| statisticsEnabled | このコンポーネントにより、統計の収集を有効または無効にします。 | ブール値 | はい |
| 名前 | 説明 | 署名 |
|---|---|---|
| resetStatistics | このコンポーネントによって収集される統計をリセットします。 | void resetStatistics() |
C.7. ClusterCacheStats リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.stats.impl.ClusterCacheStatsImpl
| 名前 | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| activations | クラスター内のアクティベーションの合計数。 | long | いいえ |
| averageReadTime | キャッシュの読み取り操作にかかるクラスター全体での総平均時間 (ミリ秒単位)。 | long | いいえ |
| averageRemoveTime | キャッシュの削除操作にかかるクラスター全体での総平均時間 (ミリ秒単位)。 | long | いいえ |
| averageWriteTime | キャッシュの書き込み操作にかかるクラスター全体での平均時間 (ミリ秒単位)。 | long | いいえ |
| cacheLoaderLoads | クラスター内のキャッシュローダーロード操作の合計数。 | long | いいえ |
| cacheLoaderMisses | クラスター内のキャッシュローダーロードミスの合計数。 | long | いいえ |
| evictions | キャッシュエビクション操作のクラスター全体での合計数。 | long | いいえ |
| hitRatio | このキャッシュに対するクラスター全体での総ヒット比率 (ヒット数/(ヒット数 + ミス数))。 | double | いいえ |
| hits | クラスター全体でのキャッシュヒット合計数。 | long | いいえ |
| invalidations | クラスター内のインバリデーションの合計数。 | long | いいえ |
| misses | クラスター全体でのキャッシュ属性ミスの合計数。 | long | いいえ |
| numberOfEntries | 現在キャッシュにあるエントリーのクラスター全体での合計数。 | 整数 | いいえ |
| numberOfLocksAvailable | クラスターで利用可能な排他ロックの合計数。 | 整数 | いいえ |
| numberOfLocksHeld | クラスターで保持されたロックの合計数。 | 整数 | いいえ |
| passivations | クラスター内のパッシベーションの合計数。 | long | いいえ |
| readWriteRatio | キャッシュのクラスター全体での読み取り/書き込み比率。 | double | いいえ |
| removeHits | クラスター全体でのキャッシュ削除ヒットの合計数。 | double | いいえ |
| removeMisses | キーが見つからなかった場合のキャッシュ削除のクラスター全体での合計数。 | long | いいえ |
| statisticsEnabled | このコンポーネントにより、統計の収集を有効または無効にします。 | ブール値 | はい |
| storeWrites | クラスター内のキャッシュストア格納操作の合計数。 | long | いいえ |
| stores | キャッシュ属性 put 操作のクラスター全体での合計数。 | long | いいえ |
| timeSinceStart | 最初のキャッシュノードが開始された以降の時間 (秒単位)。 | long | いいえ |
| 名前 | 説明 | 署名 |
|---|---|---|
| setStaleStatsTreshold | クラスター全体での統計更新のしきい値 (ミリ秒単位) を設定します。 | void setStaleStatsTreshold(long staleStatsThreshold) |
| resetStatistics | このコンポーネントによって収集される統計をリセットします。 | void resetStatistics() |
C.8. DeadlockDetectingLockManager リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.util.concurrent.locks.DeadlockDetectingLockManager
| 名前 | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| detectedLocalDeadlocks | デッドロックによりロールバックされたローカルトランザクションの数です。 | long | いいえ |
| detectedRemoteDeadlocks | デッドロックによりロールバックされたリモートトランザクションの数です。 | long | いいえ |
| overlapWithNotDeadlockAwareLockOwners | デッドロックの判別を試行しているが、他のロックを所有するのがトランザクションでは「ない」状況の数です。このシナリオでは、デッドロック検出メカニズムを実行することはできません。 | long | いいえ |
| totalNumberOfDetectedDeadlocks | 検出されたローカルデッドロックの合計数です。 | long | いいえ |
| concurrencyLevel | MVCC ロックマネージャーについて設定された平行性レベルです。 | int | いいえ |
| numberOfLocksAvailable | 利用可能な排他ロックの数です。 | int | いいえ |
| numberOfLocksHeld | 保持されている排他ロックの数です。 | int | いいえ |
| 名前 | 説明 | 署名 |
|---|---|---|
| resetStatistics | このコンポーネントによって収集される統計をリセットします。 | void resetStatistics() |
C.9. DistributionManager リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.distribution.DistributionManagerImpl
注記
| 名前 | 説明 | 署名 |
|---|---|---|
| isAffectedByRehash | 指定されたキーが進行中のリハッシュによって影響を受けるかどうかを決定します。 | boolean isAffectedByRehash(Object p0) |
| isLocatedLocally | 指定されたキーがキャッシュのこのインスタンスに対してローカルであるかどうかを示します。文字列キーでのみ機能します。 | boolean isLocatedLocally(String p0) |
| locateKey | クラスター内のオブジェクトを見つけます。文字列キーでのみ機能します。 | List locateKey(String p0) |
C.10. Interpreter リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.cli.interpreter.Interpreter
| 名前 | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| cacheNames | キャッシュマネージャーのキャッシュのリストを取得します。 | String[] | いいえ |
| 名前 | 説明 | 署名 |
|---|---|---|
| createSessionId | 新規のインタープリターセッションを作成します。 | String createSessionId(String cacheName) |
| execute | IspnCliQL ステートメントを解析し、実行します。 | String execute(String p0, String p1) |
C.11. Invalidation リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.interceptors.InvalidationInterceptor
| 名前 | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| invalidations | インバリデーションの数です。 | long | いいえ |
| statisticsEnabled | このコンポーネントにより、統計の収集を有効または無効にします。 | ブール値 | はい |
| 名前 | 説明 | 署名 |
|---|---|---|
| resetStatistics | このコンポーネントによって収集される統計をリセットします。 | void resetStatistics() |
C.12. LockManager リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.util.concurrent.locks.LockManagerImpl
| 名前 | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| concurrencyLevel | MVCC ロックマネージャーが設定される平行性レベル。 | 整数 | いいえ |
| numberOfLocksAvailable | 利用可能な排他ロックの数。 | 整数 | いいえ |
| numberOfLocksHeld | 保留にされている排他ロックの数。 | 整数 | いいえ |
C.13. LocalTopologyManager リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.topology.LocalTopologyManagerImpl
注記
| Name | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| rebalancingEnabled | false の場合、新規に起動したノードは既存のクラスターに参加せず、状態もそれらに転送されません。現在のクラスターメンバーのいずれかが再調整が無効にされている状態で停止した場合、ノードがそのクラスターを離れ、状態の再調整は残りのノード間で行なわれません。これにより、再調整が再び有効にされるまで、コピーの数は owners 属性で指定される数よりも少なくなります。 | ブール値 | はい |
| clusterAvailability | AVAILABLE の場合は、ノードが現在正常に動作しています。DEGRADED の場合は、ネットワークの分割または連続したノードの脱退のため、データに安全にアクセスできません。 | 文字列 | いいえ |
C.14. MassIndexer リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.query.MassIndexer
| Name | 説明 | 署名 |
|---|---|---|
| start | インデックスの再構築を開始します。 | void start() |
注記
C.15. Passivation リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.eviction.PassivationManager
| 名前 | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| passivations | パッシベーションイベントの数です。 | 文字列 | いいえ |
| statisticsEnabled | このコンポーネントにより、統計の収集を有効または無効にします。 | ブール値 | はい |
| 名前 | 説明 | 署名 |
|---|---|---|
| resetStatistics | このコンポーネントによって収集される統計をリセットします。 | void resetStatistics() |
C.16. RecoveryAdmin リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.transaction.xa.recovery.RecoveryAdminOperations
| 名前 | 説明 | 署名 |
|---|---|---|
| forceCommit | 不明なトランザクションのコミットを強制します。 | String forceCommit(long p0) |
| forceCommit | 不明なトランザクションのコミットを強制します。 | String forceCommit(int p0, byte[] p1, byte[] p2) |
| forceRollback | 不明なトランザクションのロールバックを強制します。 | String forceRollback(long p0) |
| forceRollback | 不明なトランザクションのロールバックを強制します。 | String forceRollback(int p0, byte[] p1, byte[] p2) |
| forget | 指定されるトランザクションのリカバリー情報を削除します。 | String forget(long p0) |
| forget | 指定されるトランザクションのリカバリー情報を削除します。 | String forget(int p0, byte[] p1, byte[] p2) |
| showInDoubtTransactions | 元のノードがクラッシュする準備されたトランザクションをすべて表示します。 | String showInDoubtTransactions() |
C.17. RollingUpgradeManager リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.upgrade.RollingUpgradeManager
| 名前 | 説明 | 署名 |
|---|---|---|
| disconnectSource | 指定される移行プログラムに従って、ターゲットクラスターをソースクラスターから切り離します。 | void disconnectSource(String p0) |
| recordKnownGlobalKeyset | アップグレードプロセスで取得するために、グローバルな既知のキーセットを既知のキーにダンプします。 | void recordKnownGlobalKeyset() |
| synchronizeData | 指定された移行プログラムを使用して、古いクラスターのデータをこれに同期します。 | long synchronizeData(String p0) |
C.18. RpcManager リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.remoting.rpc.RpcManagerImpl
注記
| 名前 | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| averageReplicationTime | トランスポート層で費やされた平均時間 (ミリ秒単位) です。 | long | いいえ |
| committedViewAsString | コミット済みのビューを取得します。 | 文字列 | いいえ |
| pendingViewAsString | 保留中のビューを取得します。 | 文字列 | いいえ |
| replicationCount | 正常なレプリケーションの数です。 | long | いいえ |
| replicationFailures | 失敗したレプリケーションの数です。 | long | いいえ |
| successRatio | レプリケーションの合計数に対する正常なレプリケーションの比率です。 | 文字列 | いいえ |
| successRatioFloatingPoint | 数値 (double) 形式でのレプリケーションの合計数に対する正常なレプリケーションの比率です。 | double | いいえ |
| statisticsEnabled | このコンポーネントにより、統計の収集を有効または無効にします。 | ブール値 | はい |
| 名前 | 説明 | 署名 |
|---|---|---|
| resetStatistics | このコンポーネントによって収集される統計をリセットします。 | void resetStatistics() |
| setStatisticsEnabled | 統計を有効または無効にするかを設定します (true/false)。 | void setStatisticsEnabled(boolean enabled) |
C.19. StateTransferManager リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.statetransfer.StateTransferManager
注記
| 名前 | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| joinComplete | true の場合、ノードはグリッドに正常に加わっており、保留状態であると見なされます。false の場合、join プロセスは依然として進行中です。 | ブール値 | いいえ |
| stateTransferInProgress | このクラスターメンバーに保留中のインバウンドの状態転送があるかどうかをチェックします。 | ブール値 | いいえ |
C.20. Statistics リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.interceptors.CacheMgmtInterceptor
| 名前 | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| averageReadTime | キャッシュの読み取り操作にかかる平均のミリ秒数です。 | long | いいえ |
| averageWriteTime | キャッシュの書き込み操作にかかる平均のミリ秒数です。 | long | いいえ |
| elapsedTime | キャッシュの開始以降の秒数です。 | long | いいえ |
| evictions | キャッシュエビクション操作の数です。 | long | いいえ |
| hitRatio | キャッシュのヒット/(ヒット+ミス) 比率 (パーセンテージ) です。 | double | いいえ |
| hits | キャッシュ属性のヒット数です。 | long | いいえ |
| misses | キャッシュ属性の失敗回数です。 | long | いいえ |
| numberOfEntries | キャッシュ内の現在のエントリーの数です。 | 整数 | いいえ |
| readWriteRatio | キャッシュの読み取り/書き込み比率です。 | double | いいえ |
| removeHits | キャッシュ除去のヒット数です。 | long | いいえ |
| removeMisses | キーが見つからなかった場合のキャッシュ除去の回数です。 | long | いいえ |
| stores | キャッシュ属性 PUT 操作の数です。 | long | いいえ |
| timeSinceReset | キャッシュ統計が最後にリセットされてからの秒数です。 | long | いいえ |
| averageRemoveTime | キャッシュの削除操作にかかる平均のミリ秒数です。 | long | いいえ |
| 名前 | 説明 | 署名 |
|---|---|---|
| resetStatistics | このコンポーネントによって収集される統計をリセットします。 | void resetStatistics() |
C.21. Transactions リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.interceptors.TxInterceptor
| 名前 | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| commits | 最終リセット時から実行されるトランザクションのコミット数です。 | long | いいえ |
| prepares | 最終リセット時から実行されるトランザクションの準備回数です。 | long | いいえ |
| rollbacks | 最終リセット時から実行されるトランザクションのロールバック回数です。 | long | いいえ |
| statisticsEnabled | このコンポーネントにより、統計の収集を有効または無効にします。 | ブール値 | はい |
| 名前 | 説明 | 署名 |
|---|---|---|
| resetStatistics | このコンポーネントによって収集される統計をリセットします。 | void resetStatistics() |
C.22. Transport リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.server.core.transport.NettyTransport
| 名前 | 説明 | タイプ | 書き込み可能 |
|---|---|---|---|
| hostName | トランスポートがバインドされるホストを返します。 | 文字列 | いいえ |
| idleTimeout | アイドル状態のタイムアウトを返します。 | 文字列 | いいえ |
| numberOfGlobalConnections | クラスター内のアクティブな接続の数を返します。この操作は、結果を集約するためのリモート呼び出しを行うため、待ち時間がこの属性の計算スピードに影響を与える場合があります。 | 整数 | false |
| numberOfLocalConnections | このサーバーのアクティブな接続の数を返します。 | 整数 | いいえ |
| numberWorkerThreads | ワーカースレッドの数を返します。 | 文字列 | いいえ |
| port | トランスポートがバインドされるポートを返します。 | 文字列 | |
| receiveBufferSize | 受信バッファーサイズを返します。 | 文字列 | いいえ |
| sendBufferSize | 送信バッファーサイズを返します。 | 文字列 | いいえ |
| totalBytesRead | プロトコルおよびユーザー情報の両方を含む、サーバーがクライアントから読み取るバイト数の合計を返します。 | 文字列 | いいえ |
| totalBytesWritten | プロトコルおよびユーザー情報の両方を含む、サーバーがクライアントに書き戻すバイト数の合計を返します。 | 文字列 | いいえ |
| tcpNoDelay | TCP no delay (TCP 遅延なし) が設定されているかどうかの情報を返します。 | 文字列 | いいえ |
C.23. XSiteAdmin リンクのコピーリンクがクリップボードにコピーされました!
org.infinispan.xsite.XSiteAdminOperations
| 名前 | 説明 | 署名 |
|---|---|---|
| bringSiteOnline | すべてのクラスターで指定されたサイトをオンラインに戻します。 | String bringSiteOnline(String p0) |
| amendTakeOffline | クラスター内のすべてのノードで 'TakeOffline' 機能の値を修正します。 | String amendTakeOffline(String p0, int p1, long p2) |
| getTakeOfflineAfterFailures | 'TakeOffline' 機能に対して 'afterFailures' の値を返します。 | String getTakeOfflineAfterFailures(String p0) |
| getTakeOfflineMinTimeToWait | 'TakeOffline' 機能に対して 'minTimeToWait' の値を返します。 | String getTakeOfflineMinTimeToWait(String p0) |
| setTakeOfflineAfterFailures | クラスター内のすべてのノードで 'TakeOffline' 機能について 'afterFailures' の値を修正します。 | String setTakeOfflineAfterFailures(String p0, int p1) |
| setTakeOfflineMinTimeToWait | クラスター内のすべてのノードで 'TakeOffline' 機能について 'minTimeToWait' の値を修正します。 | String setTakeOfflineMinTimeToWait(String p0, long p1) |
| siteStatus | 指定されるバックアップサイトがオフラインかどうかをチェックします。 | String siteStatus(String p0) |
| status | 設定されたすべてのバックアップサイトについて、ステータス (オフライン/オンライン) を返します。 | String status() |
| takeSiteOffline | クラスター内のすべてのノードでこのノードをオフラインにします。 | String takeSiteOffline(String p0) |
| pushState | 指定されたサイト名へのサイト間ステータス転送を開始します。 | String pushState(String p0) |
| cancelPushState | 指定されたサイト名へのサイト間状態転送をキャンセルします。 | String cancelPushState(String p0) |
| getSendingSiteName | このサイトに状態をプッシュしているサイト名を返します。 | String getSendingSiteName() |
| cancelReceiveState | サイトを通常の状態に復元します。状態の転送中にサイト間のリンクが壊れた場合に使用されます。 | String cancelReceiveState(String p0) |
| getPushStateStatus | 完了したサイト間状態転送と実行中のサイト間状態転送のステータスを返します。 | String getPushStateStatus() |
| clearPushStateStatus | 完了したサイト間状態転送のステータスをクリアします。 | String clearPushStateStatus() |
付録D 推奨される設定 リンクのコピーリンクがクリップボードにコピーされました!
D.1. タイムアウト値 リンクのコピーリンクがクリップボードにコピーされました!
| タイムアウト値 | 親要素 | デフォルト値 | 推奨値 |
|---|---|---|---|
| distributedSyncTimeout | transport | 240,000 (4 分) | デフォルト値と同じ |
| lockAcquisitionTimeout | locking | 10,000 (10 秒) | デフォルト値と同じ |
| cacheStopTimeout | transaction | 30,000 (30 秒) | デフォルト値と同じ |
| completedTxTimeout | transaction | 60,000 (60 秒) | デフォルト値と同じ |
| replTimeout | sync | 15,000 (15 秒) | デフォルト値と同じ |
| timeout | stateTransfer | 240,000 (4 分) | デフォルト値と同じ |
| timeout | backup | 10,000 (10 秒) | デフォルト値と同じ |
| flushLockTimeout | async | 1 (1 ミリ秒) | デフォルト値と同じです。この値は非同期キャッシュストアに適用されますが、非同期キャッシュには適用されないことに注意してください。 |
| shutdownTimeout | async | 25,000 (25 秒) | デフォルト値と同じです。この値は非同期キャッシュストアに適用されますが、非同期キャッシュには適用されないことに注意してください。 |
| pushStateTimeout | singletonStore | 10,000 (10 秒) | デフォルト値と同じ。 |
| backup | replicationTimeout | 10,000 (10 秒) | |
| remoteCallTimeout | clusterLoader | 0 | ほとんどの要件については、デフォルト値と同じです。この値は、通常 sync.replTimeout 値と同じ値に設定されます。 |
付録E パフォーマンスに関する推奨事項 リンクのコピーリンクがクリップボードにコピーされました!
E.1. 大規模なクラスターの同時起動 リンクのコピーリンクがクリップボードにコピーされました!
- クラスターの最初のノードを起動します。
- 「LocalTopologyManager」に示されたように、JMX 属性
jboss.infinispan/CacheManager/"clustered"/LocalTopologyManager/rebalancingEnabledをfalseに設定します。 - クラスターの残りのノードを起動します。
- 「LocalTopologyManager」に示されたように、この値を
trueに設定し直すことにより、JMX 属性jboss.infinispan/CacheManager/"clustered"/LocalTopologyManager/rebalancingEnabledを再び有効にします。
付録F 参考資料 リンクのコピーリンクがクリップボードにコピーされました!
F.1. 一貫性について リンクのコピーリンクがクリップボードにコピーされました!
F.2. 一貫性保証について リンクのコピーリンクがクリップボードにコピーされました!
- キー
Kはノード{A,B}へハッシュ化されます。トランザクションTX1は、たとえばノードA上のKロックを取得します。 - 他のキャッシュへのアクセスが、ノード
Bまたは他のノードで発生すると、TX2がKをロックしようとしますが、トランザクションTX1がすでにKのロックを保持しているため、タイムアウトが発生してこのアクセスの試行は失敗します。
K のロックはトランザクションの発生元に関係なく、常にクラスターの同じノード上で取得されるため、このロックの取得は常に失敗します。
F.3. JBoss Cache について リンクのコピーリンクがクリップボードにコピーされました!
F.4. RELAY2 について リンクのコピーリンクがクリップボードにコピーされました!
RELAY プロトコルは、各サイトの 1 つのノード間の接続を作成することによって 2 つのリモートクラスターをブリッジします。これにより、1 つのサイトに送信されたマルチキャストメッセージが他のサイトにリレーされ、他のサイトからそのサイトにもリレーさせることができます。
RELAY2 プロトコルが含まれます。
RELAY2 プロトコルは RELAY と同様に機能しますが、若干の相違点があります。RELAY とは異なり、RELAY2 プロトコルは以下を実行します。
- 3 つ以上のサイトを接続します。
- 自律的に機能し、相互に認識しないサイトに接続します。
- サイト間のユニキャストとマルチキャストのルーティングの両方を提供します。
F.5. 戻り値について リンクのコピーリンクがクリップボードにコピーされました!
F.6. 実行可能インターフェースについて リンクのコピーリンクがクリップボードにコピーされました!
run() メソッドを宣言します。実行可能オブジェクトは、スレッドコンストラクターに渡された後、独自のスレッドでの実行が可能です。
F.7. 2 相コミット (2PC) について リンクのコピーリンクがクリップボードにコピーされました!
F.8. キーバリューペアについて リンクのコピーリンクがクリップボードにコピーされました!
- キーは特定のデータエントリーに一意です。関連するエントリーのエントリーデータ属性から構成されます。
- バリュー (値) は、キーによって割り当てられ、キーによって識別されるデータです。
F.9. 完全なバイトアレイの要求 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、必要のない巨大なバイトアレイを出力しないように、JBoss Data Grid はバイトアレイの一部のみをログに出力します。以下の場合にバイトアレイがログに出力されます。
- JBoss Data Grid のキャッシュにレイジーデシリアライゼーションが設定されている場合。レイジーデシリアライゼーションは JBoss Data Grid のリモートクライアントサーバーモードでは使用できません。
MemcachedまたはHot Rodサーバーが実行されている場合。
-Dinfinispan.arrays.debug=true システムプロパティーを渡します。
例F.1 部分的なバイトアレイのログ
付録G 改訂履歴 リンクのコピーリンクがクリップボードにコピーされました!
| 改訂履歴 | |||||
|---|---|---|---|---|---|
| 改訂 7.0.0-4.1 | Tue Mar 07 2017 | ||||
| |||||
| 改訂 7.0.0-4 | Mon 18 Jul 2016 | , | |||
| |||||
| 改訂 7.0.0-3 | Wed 27 Apr 2016 | ||||
| |||||
| 改訂 7.0.0-2 | Wed 27 Apr 2016 | ||||
| |||||
| 改訂 7.0.0-1 | Wed 27 Apr 2016 | ||||
| |||||
| 改訂 7.0.0-0 | Tue 19 Apr 2016 | ||||
| |||||