第2章 Data Grid のリリース情報
新機能および最新の Data Grid のリリース情報についてご確認ください。
2.1. Data Grid 8.2.0 の新機能 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid 8.2 は、使いやすさ、パフォーマンス、セキュリティーを向上します。新機能を確認してください。
2.1.1. Data Grid Server リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Server は、Java 仮想マシン (JVM) 向けの柔軟性、耐久性、拡張性の高いデータストアを提供します。
デフォルトの認可
Data Grid Server の設定で認可が有効になり、デフォルトのロールおよびパーミッションのセットに基づいてユーザーアクセスが制限できます。
たとえば、Data Grid クラスターで管理操作の実行を許可する admin ロールをユーザーに割り当てる必要があります。サーバーリソースの操作を行うのに十分なパーミッションがないユーザーには、以下のメッセージがログに記録されます。
The user is not allowed to access the server resource: ISPN000287: Unauthorized access: subject 'Subject with principal(s): [myusername]' lacks 'ADMIN' permission
The user is not allowed to access the server resource: ISPN000287: Unauthorized access: subject 'Subject with principal(s): [myusername]' lacks 'ADMIN' permission
以下は、認可が有効なデフォルトの Data Grid Server 設定を示しています。
- 1
- サーバー管理および運用に対する認可を有効にします。
authorization要素を削除して、アクセスを無制限に許可できます。
この設定はキャッシュ設定には影響がありません。キャッシュの認可を個別に有効にする必要があります。
セキュリティーを強化するためのクレデンシャルストア
パスワードなどの機密テキストの文字列を保護するには、Data Grid Server の設定を直接操作するのではなく、認証情報キーストアに追加できるようになりました。
Data Grid CLI で credentials コマンドを使用して、設定を行います。
監査ロギング
監査ログを使用すると、Data Grid クラスターへの変更を追跡できるため、変更のタイミングや変更を加えたユーザーを把握できます。
org.infinispan.AUDIT ロギングカテゴリーを使用して、監査ロギングを有効にし、設定イベントおよび管理操作の記録方法を設定します。
エンドポイント IP フィルタリング
以下の例のように、Data Grid Server エンドポイントの IP アドレスフィルタリングルールを設定して、接続を許可または拒否できるようになりました。
Data Grid CLI で server connector ipfilter コマンドを使用して、IP フィルタールールを検査して変更します。
クライアント証明書検証のトラストストア
Data Grid Server では、サーバーとクライアント間の相互 SSL/TLS 証明書を強制的に検証する必要がある場合に、クライアントトラストストアを server-identities 設定に追加できるようになりました。
セキュリティーレルムアイデンティティーキャッシング
Data Grid Server は、パフォーマンス向上のために、セキュリティーレルムのアイデンティティーをキャッシュするようになりました。
以下の例のように、cache-max-size 属性および cache-lifespan 属性でセキュリティーレルムのアイデンティティーキャッシュを設定できます。以下に例を示します。
<security-realm name=" cache-max-size="256"
cache-lifespan="-1">
...
</security-realm>
<security-realm name=" cache-max-size="256"
cache-lifespan="-1">
...
</security-realm>
シングルポートエンドポイントの暗黙的なコネクター
エンドポイントに単一のポートを使用する場合に、Data Grid Server 設定で Hot Rod および REST コネクターを定義する必要がなくなりました。
たとえば、Data Grid 8.2 の場合に、以下の エンドポイント 設定は暗黙的にデフォルトの Hot Rod および REST コネクターを使用します。
<endpoints socket-binding="default" security-realm="default"/>
<endpoints socket-binding="default" security-realm="default"/>
これとは対照的に、以下の エンドポイント 設定には、Hot Rod および REST コネクターを明示的に含めています。
<endpoints socket-binding="default" security-realm="default">
<hotrod-connector name="hotrod"/>
<rest-connector name="rest"/>
</endpoints>
<endpoints socket-binding="default" security-realm="default">
<hotrod-connector name="hotrod"/>
<rest-connector name="rest"/>
</endpoints>
以前のバージョンに合ったメトリクスエンドポイント
バージョン間の互換性を確保するために、Data Grid Server は Data Grid 7.3 以降からのすべてのメトリクスをエクスポートするようになりました。
2.1.2. Data Grid コンソール リンクのコピーリンクがクリップボードにコピーされました!
Data Grid コンソールには、グラフィカルユーザーインターフェイスが提供されており、リモート Data Grid クラスターを監視および維持できます。
ユーザーエクスペリエンスの向上
Data Grid 8.2 のコンソールでは、ユーザーエクスペリエンスおよびユーザービリティーが複数強化されています。
- ユーザーが存在しない場合には、ウェルカムページからユーザーを作成するように求めらる。
- PatternFly UX の記述ガイドライン に合わせて、すべてのテキスト文字列がレビューおよび編集されてた。
- フォームやラベルや説明内のコンテキストヘルプが明確になるように更新された。
ロールベースのアクセス制御
Data Grid コンソールは、セキュリティー認可の設定を適用し、割り当てられたロールおよびパーミッションに基づいてユーザーアクセスを制限します。
カウンター管理
本リリースで Data Grid コンソールのカウンターの管理が改善され、カウンターの削除およびフィルターができるようになりました。
2.1.3. Data Grid コマンドラインインターフェイス リンクのコピーリンクがクリップボードにコピーされました!
Data Grid コマンドラインインターフェイス (CLI) を使用すると、リモート Data Grid クラスターで管理操作を実行できます。
Data Grid クラスターのバックアップおよび復元
CLI には、backup コマンドが含まれており、キャッシュされたエントリー、キャッシュ設定、Protobuf スキーマ、およびサーバースクリプトを含む Data Grid リソースのアーカイブを作成できます。のちほど、再起動または移行後に、バックアップアーカイブから Data Grid クラスターを復元できます。
パフォーマンステストツール
benchmark コマンドを使用すると、CLI を使用してキャッシュに対してパフォーマンステストを実行できます。
ユーザーロールとパーミッションの割り当て
CLI の user コマンドで roles サブコマンドが拡張され、ユーザーロールを表示、付与、拒否できるようになりました。ユーザーのロール割り当てを動的に更新して、認可設定を制御し、Data Grid クラスターおよびキャッシュへのアクセスを制限できるようになりました。
クロスサイトレプリケーション操作
本リリースでは、CLI の site コマンドを使用して、追加のクロスサイトレプリケーション操作を実施できるようになりました。
site name: ローカルサイトの名前を返します。
site view: 相互にバックアップ可能な全サイトの名前一覧を返します。
site state-transfer-mode: クロスサイトの状態遷移を手動または自動的に行うように設定します。
クレデンシャルキーストアの管理
CLI には、credentials コマンドが含まれており、Data Grid Server の認証情報キーストアを管理できます。
ネイティブ CLI
Data Grid 8.2 は、Linux、macOS、または Windows で実行できるネイティブ CLI を追加し、oc クライアントプラグインとして使用できます。
- Red Hat カスタマーポータルの Data Grid Software Downloads からネイティブ CLI をダウンロードします。
-
インストール手順と使用例については、ディストリビューションに含まれている
READMEを開いてください。
ネイティブ CLI は現在、テクノロジープレビュー機能 として利用できます。
2.1.4. クロスサイトレプリケーション リンクのコピーリンクがクリップボードにコピーされました!
クロスサイトレプリケーションを使用すると、複数の地理的リージョンにまたがる Data Grid クラスターをバックアップできます。
状態遷移の自動操作
問題が発生し、バックアップの場所がオフラインになった場合に、CLI、JMX または REST 経由で、クロスサイトの状態遷移操作を手動で実行する必要があります。
ただし、非同期バックアップストラテジーを使用する場合には、Data Grid は競合の解決後に、クロスサイトの状態遷移操作を自動的に実行できるようになりました。バックアップの場所がオンラインになり、ネットワーク接続が安定していることを検知すると、Data Grid はバックアップの場所の間で双方向状態遷移を開始します。たとえば、Data Grid は、状態を LON から NYC に、NYC から LONに同時に遷移します。
自動状態遷移は、非同期バックアップストラテジーでのみ可能です。
カスタム競合解決の SPI
Data Grid には SPI が含まれており、非同期 Active/Active バックアップ設定の競合解決をカスタマイズできます。
XSiteMergePolicy 列挙は、以下の競合解決のオプションを提供します。
DEFAULT- 同時書き込みからの競合を処理するには、デフォルトのアルゴリズムを使用します。
PREFER_NON_NULL- 書き込み/削除の競合が発生した場合には、このアルゴリズムは書き込み操作を維持し、削除操作を破棄します。デフォルトのアルゴリズムは他のすべての競合に適用されます。
PREFER_NULL- 書き込み/削除の競合が発生した場合には、このアルゴリズムは削除操作を維持し、書き込み操作を破棄します。デフォルトのアルゴリズムは他のすべての競合に適用されます。
ALWAYS_REMOVE- 両方のサイトから競合するエントリーを削除します。
以下のような merge-policy 属性を使用して、カスタム実装を含む競合解決ポリシーを指定できます。
<distributed-cache name="eu-customers">
<backups merge-policy="org.mycompany.MyCustomXSiteEntryMergePolicy">
<backup site="LON" strategy="ASYNC"/>
</backups>
</distributed-cache>
<distributed-cache name="eu-customers">
<backups merge-policy="org.mycompany.MyCustomXSiteEntryMergePolicy">
<backup site="LON" strategy="ASYNC"/>
</backups>
</distributed-cache>
CLI および REST からクロスサイトビューを検証する機能
CLI または REST API でクロスサイトビューを検証できるようになりました。
CLI の場合は、site view コマンドを実行して、相互にバックアップするすべてのサイトの名前の一覧を取得します。
REST API から、以下の GET 要求を呼び出します。
GET /rest/v2/cache-managers/{cacheManagerName}
GET /rest/v2/cache-managers/{cacheManagerName}
以下のように、Data Grid は、JSON 形式のバックアップ場所のリストで応答します。
"sites_view": [
"LON",
"NYC"
]
"sites_view": [
"LON",
"NYC"
]
2.1.5. Hot Rod クライアント リンクのコピーリンクがクリップボードにコピーされました!
Hot Rod は、カスタムバイナリー TCP プロトコルで、異なるプログラミング言語で、クライアントアプリケーションに高パフォーマンスでデータアクセスできるようにします。
Hot Rod クライアントで Java 8 を使用している場合は、Data Grid 8.2 で致命的な SSLHandshakeException エラーを回避するために、少なくとも Java 8u252 にアップグレードする必要があります。詳細は、既知の問題 を参照してください。
ニアキャッシュパフォーマンスの改善
Data Grid Server には、bloom フィルターが追加され、インバリデーションメッセージの合計数を減らして、書き込み操作のパフォーマンスが最適化されるようになりました。
nearCacheUseBloomFilter()` メソッドでニアキャッシュの bloom フィルターを有効にします。
新規の Hot Rod クライアント設定プロパティー
Data Grid 8.2 以降、Hot Rod クライアント設定 API には、以下の設定プロパティーが含まれるようになりました。
-
infinispan.client.hotrod.transport_factoryは使用するトランスポートファクトリーを指定します。デフォルトはorg.infinispan.client.hotrod.impl.transport.netty.DefaultTransportFactoryです。 -
infinispan.client.hotrod.cache.<cache_name>.marshallerは、キャッシュごとに使用するマーシャラーを指定します。 -
infinispan.client.hotrod.ssl_ciphersは、優先順にスペース区切りの暗号化をリストし、SSL ハンドシェーク時に使用して、鍵暗号化の暗号アルゴリズムをネゴシエートします。 -
infinispan.client.hotrod.ssl_providerは、SSL エンジンの作成時に使用するセキュリティープロバイダーを指定し、OpenSSL にデフォルト設定します。 -
infinispan.client.hotrod.cache.<cache_name>.transaction.transaction_manager_lookupは、キャッシュごとに使用するTransactionManagerLookupを指定します。
infinispan.client.hotrod.trust_store_path などの一部のプロパティーが非推奨になりました。詳細は、Red Hat ナレッジベースの Deprecation and removals の記事を参照してください。
2.1.6. クエリー API リンクのコピーリンクがクリップボードにコピーされました!
Data Grid Query API を使用すると、リレーショナルまたは完全テキストクエリーを使用して、Ickle クエリー言語でキャッシュと検索値をインデックス化できます。
Data Grid 8.2 では、Hibernate Search 6 をベースにすることでクエリー実装が大幅に改善され、Apache Lucene 8 インデックス機能をサポートするようになりました。本リリースでは、以下のクエリー拡張機能を提供します。
- 高速なインデックス。
- インデックス付き、インデックスなし、およびハイブリッドクエリーの統計。
- 厳密に型指定されたインデックス設定。これは、文字列キー/値のプロパティーを置き換えます。
インデックス作成とクエリーに関する包括的なドキュメントについては、キャッシュ内の値のクエリー を参照してください。
移行の詳細を確認し、Data Grid 8.2 のクエリー設定をどのように適応させるかを確認します。
詳細は、データグリッド移行ガイド を参照してください。
2.1.7. REST API リンクのコピーリンクがクリップボードにコピーされました!
Data Grid REST API を使用すると、リモートクラスターと対話し、HTTP 経由でキャッシュできます。
鍵とエントリーのストリーミング
Data Grid REST API では、キャッシュ内のすべてのキーまたはエントリーを JSON 形式で取得できるようになりました。以下のように GET 要求を呼び出します。
キーのストリーミング
GET /rest/v2/caches/{cacheName}?action=keys
GET /rest/v2/caches/{cacheName}?action=keys
エントリーのストリーミング
GET /rest/v2/caches/{cacheName}?action=entries
GET /rest/v2/caches/{cacheName}?action=entries
アクセス制御リストキャッシュの使用
Data Grid 8.2 には、ユーザーのロールマッピングを格納するアクセス制御リスト (ACL) キャッシュが含まれます。ACL キャッシュは、REST API 経由で対話できます。
ユーザー ACL 情報の表示
GET /rest/v2/security/user/acl
GET /rest/v2/security/user/acl
ACL キャッシュのフラッシュ
POST /rest/v2/security/cache?action=flush
POST /rest/v2/security/cache?action=flush
クエリーとインデックスの統計取得
GET 要求を使用して、キャッシュでクエリーとインデックスに関する情報を取得します。
GET /v2/caches/{cacheName}/search/stats
GET /v2/caches/{cacheName}/search/stats
キャッシュ設定
Data Grid REST API では、キャッシュの設定取得時の応答が改善され、リモートクラスターのキャッシュ設定とローカルプロジェクトのキャッシュ設定の比較および検証が容易になりました。
キャッシュ設定に非推奨の属性が含まれる場合には、Data Grid により、現在のスキーマと互換性を確保するため、その属性は自動的に変換されます。
キャッシュ設定を簡単に比較できるように、アプリケーションで常に最新のスキーマを使用する必要があります。
2.1.8. Data Grid マーシャリング リンクのコピーリンクがクリップボードにコピーされました!
Data Grid には、他のマーシャラー実装に加えて、ProtoStream API が追加され、ネットワーク全体および永続ストレージにカスタム Java オブジェクトを送信できるようになりました。
ProtoStream
Data Grid 8.2 は、ProtoStream API を 4.4.1.Final にアップグレードします。
Data Grid 8.2 の ProtoStream API を変更すると、以前の Data Grid 8 バージョンからのアップグレードに影響します。
詳細は、Data Grid 8 のアップグレードに関する注意事項 を参照してください。
デシリアライズの許可リスト
Red Hat では、多様性を受け入れる用語の使用への取り組みに努めており、Java クラスのシリアル化を設定する際に使用するホワイトリストという用語を許可リストに変更しています。
Data Grid 8.1
Data Grid 8.2
SerializationContextInitializer 実装の作成
Data Grid には、@AutoProtoSchemaBuilder アノテーションが追加され、SerializationContextInitializer を拡張するクラスまたはインターフェイスの実装を生成できるようになりました。これにより、Data Grid キャッシュにカスタム Java オブジェクトを保存するときに Protobuf スキーマおよびマーシャラーを作成するメカニズムの効率性と信頼性が強化されます。
以前の Data Grid バージョンでは、MessageMarshaller API および ProtoSchemaBuilder アノテーションを使用して Protobuf スキーマを作成していました。@AutoProtoSchemaBuilder アノテーションに移行して、これの使用を開始する必要があります。
外部クラスのマーシャリング用の @ProtoAdaptor
Data Grid では @ProtoAdaptor アノテーションのサポートが追加され、外部のサードパーティー Java オブジェクトクラスのアダプタークラスに追加できます。
コレクションや配列の値としての直接使用
Data Grid 8.2 では、Array List、Linked List、Hash Set、Linked Hash Set、Tree Set、および String[] や int[] のような単純な型の配列の値を Proto Stream API で使用できます。
以前のバージョンの Data Grid では、マッパーを追加せずにコレクションや配列を直接、値として使用できませんでした。put (... <Array List>) を呼び出すと、次のような例外が発生します。
IllegalArgumentException: No marshaller registered for Java type java.util.ArrayList
IllegalArgumentException: No marshaller registered for Java type java.util.ArrayList
Kyro および Protostuff marshallers が非推奨に
Kyro および Protostuf マーシャラーが非推奨になりました。詳細は、 Red Hat ナレッジベースの非推奨と削除 の記事を参照してください。
2.1.9. Data Grid の設定 リンクのコピーリンクがクリップボードにコピーされました!
Data Grid では、キャッシュ用だけでなく、セキュリティーやクラスタートランスポートなどの基盤となるメカニズムをカスタマイズできるように、スキーマベースの設定オプションを提供します。
認可: ユーザーロールおよびパーミッション
Data Grid 8.2 では、Data Grid インストールへのアクセスとキャッシュへのアクセスのセキュリティーを確保するロールベースアクセス制御 (RBAC) 機能が改善されました。
Cache Manager アクセスの認可を有効にするには、以下の例のように authorization 要素を cache-container に追加します。
<cache-container name="default" statistics="true">
<security>
<authorization/>
</security>
</cache-container>
<cache-container name="default" statistics="true">
<security>
<authorization/>
</security>
</cache-container>
キャッシュの認可を有効にするには、以下のように authorization 要素を追加します。
<distributed-cache name="myCache" mode="SYNC">
<security>
<authorization/>
</security>
</distributed-cache>
<distributed-cache name="myCache" mode="SYNC">
<security>
<authorization/>
</security>
</distributed-cache>
クラスターのロールマッパー
Data Grid 8.2 では、ClusterRoleMapper が導入されました。これは、Data Grid がセキュリティープリンシパルを承認ロールに関連付けるために使用するデフォルトのメカニズムです。
このロールマッパーは永続レプリケートされたキャッシュを使用して、デフォルトのロールおよびパーミッションのプリンシパルからロールへのマッピングを動的に保存します。
| ロール | パーミッション | 説明 |
|---|---|---|
|
| ALL | Cache Manager ライフサイクルの制御など、すべてのパーミッションを持つスーパーユーザー。 |
|
| ALL_READ、ALL_WRITE、LISTEN、EXEC、MONITOR、CREATE |
|
|
| ALL_READ、ALL_WRITE、LISTEN、EXEC、MONITOR |
|
|
| ALL_READ、MONITOR |
|
|
| MONITOR |
JMX および |
新規パーミッション
CREATE パーミッションを使用すると、ユーザーはキャッシュ、カウンター、スキーマ、スクリプトなどのコンテナーリソースを作成および削除することができます。
CREATE パーミッションは、___schema_manager および ___script_manager ロールを置き換えます。このロールは、Data Grid Server に対してスキーマおよびスクリプトを追加および削除するのに必要です。
MONITOR パーミッションは、JMX 統計および metrics エンドポイントへのアクセスを許可します。
承認の詳細は、セキュリティーガイドの以下の内容を参照してください。
Data Grid キャッシュ設定のフラグメント
Data Grid 8.2 では、キャッシュ設定に infinispan および cache-container 要素を含める必要がなくなりました。
キャッシュの作成時に指定する必要があるのは、*-cache 要素のみです。
たとえば、同期モードを使用する分散キャッシュを作成するには、以下の設定を使用できます。
<distributed-cache name="myCache" mode="SYNC" />
<distributed-cache name="myCache" mode="SYNC" />
エントリーの Protobuf エンコーディングを使用するレプリケートキャッシュを作成するには、以下の設定を使用できます。
<replicated-cache name="books"> <encoding media-type="application/x-protostream"/> </replicated-cache>
<replicated-cache name="books">
<encoding media-type="application/x-protostream"/>
</replicated-cache>
JGroups INSERT_BEFORE 属性
INSERT_BEFORE 値を使用して、stack.combine 継承属性で JGroups クラスタートランスポートをカスタマイズできます。
- 1
- JGroups スタックの
pbcast.NAKACK2の前にASYM_ENCRYPTプロトコルを挿入します。
Data Grid 8.2 スキーマには、INSERT_ABOVE および INSERT_BELOW 属性も含まれています。
INSERT_ABOVE は INSERT_AFTER と同じです。INSERT_BELOW は INSERT_BEFORE と同じです。
JGroups デフォルトスタック
Data Grid 8.2 では、デフォルトの JGroups スタックにおける UNICAST3 および NAKACK2 プロトコルの再送信要求設定が変更されました。
ガベージコレクション (GC) の一時停止が長い場合など、ノードはクラスター内の他のノードからの JGroups メッセージを処理できない場合があります。これらのノードが再び利用可能な状態になったら、XMIT 要求を使用して送信ノードを再転送するように要求します。
再送信要求の失敗からのクラスター転送の問題を回避するために、以下の変更が適用されます。
-
xmit_intervalプロパティーの値が 100 ミリ秒から 200 ミリ秒に増える。 -
max_xmit_req_sizeプロパティーは、UDP の最大値が 8500、TCP が 64000 ではなく、再送信要求の最大メッセージ数を 500 に設定するようになりました。
キャッシュのヘルス
Data Grid には、新しい FAILED ステータスが追加されています。このバージョンで、キャッシュに利用可能なヘルスステータスは以下の通りです。
| ヘルスステータス | 説明 |
|---|---|
|
| キャッシュが想定どおりに動作していることを示します。 |
|
| キャッシュがリバランス状態にあることを示しますが、それ以外場合は想定どおりに動作します。 |
|
| キャッシュが想定どおりに動作しておらず、トラブルシューティングが必要になる場合があることを示します。 |
|
| 8.2 で追加され、キャッシュが指定の設定で起動できなかったことを示します。 |
JDBC 文字列ベースのキャッシュストア
JDBC 文字列ベースのキャッシュストアでは、キャッシュエントリーの保存に使用されるデータテーブルに加えて a_META テーブルが作成されます。The_META テーブルには、メタデータがあり、このメタデータにより、既存のデータベースコンテンツが現在の Data Grid バージョンおよび設定と互換性を確保します。
2.1.10. Spring アプリケーション リンクのコピーリンクがクリップボードにコピーされました!
Data Grid は、Spring キャッシュと Spring セッション実装を提供します。
Data Grid 8.2 の時点で、Spring アプリケーションは ProtoStream マーシャラーを使用して、Java オブジェクトを Protocol Buffers (Protobuf) 形式でエンコードおよびデコードできます。
詳細は、Spring Boot スターター を参照してください。