スタートガイド
JBoss Data Grid 6 の入門ガイド
エディッション 1
Misty Stanley-Jones
misty@redhat.com
概要
前書き
第1章 JBoss Data Grid 6 の紹介
1.1. JBoss Data Grid について
- スキーマレスなキーバリューストア – Red Hat JBoss Data Grid は、固定のデータモデルを用いずに異なるオブジェクトを格納するフレキシブルな NoSQL データベースです。
- グリッドベースのデータストレージ – Red Hat JBoss Data Grid は、複数のノードにまたがったデータのレプリケートが簡単に行えるよう設計されています。
- エラスティックスケーリング – シンプルに混乱を起こさずノードの追加と削除を行えます。
- 複数のアクセスプロトコル – REST、Memcached、Hot Rod または簡単なマップのような API を使用して簡単にデータグリッドへアクセスできます。
1.2. JBoss Data Grid の使用モード
- リモートクライアントサーバーモード
- リモートクライアントサーバーモードは、管理分散されたクラスター化可能なデータグリッドサーバーを提供します。アプリケーションは Hot Rod、Memcached、または REST クライアント API を使用して、データグリッドにリモートアクセスできます。
- ライブラリーモード
- ライブラリーモードは、カスタムランタイム環境の構築やデプロイに必要なすべてのバイナリを提供します。ライブラリー使用モードでは、分散クラスターの 1 つのノードへローカルアクセスでできます。この使用モードでは、使用されるコンテナの仮想マシン内でアプリケーションがデータグリッドの機能にアクセスできます。サポート対象のコンテナには、Tomcat 7 や JBoss Enterprise Application Platform 6 などがあります。
1.3. JBoss Data Grid の利点
JBoss Data Grid の利点
- 巨大なヒープと高可用性
- JBoss Data Grid では、パフォーマンス向上のためにアプリケーションがデータのルックアップ処理のほとんどを大型のサーバーデータベースへ委譲する必要がありません。JBoss Data Grid は、現在のエンタープライズアプリケーションの大部分に存在するボトルネックを完全に取り除きます。
例1.1 巨大なヒープと高可用性の例
100 個のブレードサーバーを持つグリッドの例として、各ノードがレプリケートされたキャッシュ専用の 2 GB のストレージ領域を持っているとします。この場合、グリッドの全データが 2 GB のデータのコピーとなります。逆に、分散グリッド (データ項目ごとに 1 つのコピーが必要であることを仮定した場合) では、メモリーがサポートする仮想ヒープに 100 GB のデータが含まれます。グリッドのどこからでも効果的にこのデータへアクセスできるようになります。サーバーに障害が発生した場合、グリッドによって損失データの新しいコピーが即座に作成され、グリッドの運用サーバーに置かれます。 - スケーラビリティー
- JBoss Data Grid ではデータが均一に分散されるため、グリッドサイズの唯一の上限はネットワーク上でのグループ通信になります。ネットワークのグループ通信は最小限で、新規ノードの発見のみに制限されています。すべてのデータアクセスパターンは、ノードによるピアツーピア接続を介した直接通信を許可するため、スケーラビリティーの更なる向上を容易にします。JBoss Data Grid のクラスターは、リアルタイムでスケールアップまたはスケールダウンすることが可能ですが、インフラストラクチャーの再起動を必要としません。スケーリングポリシーへの変更をリアルタイムで適用できるため、非常にフレキシブルな環境を実現することができます。
- データ分散
- JBoss Data Grid は一貫したハッシュアルゴリズムを使用して、クラスターにおけるキーの場所を判断します。一貫したハッシュに関する利点には次のようなものがあります。データ分散は、永続性とフォールトトラレンスを提供するため、余分のない十分なコピーがクラスター内に確実に存在するようにします。余分なコピーは環境のスケーラビリティーを低下させます。
- コスト効果
- 速度
- 更なるメタデータやネットワークトラフィックの必要がない、決定論的なキーの場所
- 永続性
- JBoss Data Grid は、
CacheStore
インターフェースと複数の高パフォーマンス実装 (JDBC キャッシュストアやファイルシステムベースのキャッシュストアなど) を公開します。キャッシュストアはキャッシュをシードし、関連データを安全に保持し、破損しないようにします。また、キャッシュストアはプロセスがメモリー不足になると、データをディスクへオーバーフローします。 - 言語のバインディング
- JBoss Data Grid は、既に多くの一般的なプログラミング言語向けに使用されている Memcached プロトコルと、Hot Rod と呼ばれる最適化された JBoss Data Grid 固有のプロトコルの両方をサポートします。そのため、Java Data Grid は Java に限定されず、すべての主要な Web サイトやアプリケーションに使用できます。
- 管理
- 数百個またはそれ以上のサーバーが存在するグリッド環境では、管理の実行は重要な機能になります。エンタープライズネットワーク管理ソフトウェアである JBoss Operations Network は、複数の JBoss Data Grid インスタンスを管理するのに最適なツールです。JBoss Operations Network の機能を使用すると、キャッシュマネージャーやキャッシュインスタンスを簡単かつ効率的に監視できます。
1.4. JBoss Data Grid のバージョン情報
1.5. JBoss Data Grid のキャッシュアーキテクチャー
図1.1 JBoss Data Grid のキャッシュアーキテクチャー
- ユーザーが直接対話できない要素 (背景が灰色の部分)。これにはキャッシュ、キャッシュマネージャー、1 次キャッシュ、永続ストアインターフェース、永続ストアなどが含まれます。
- ユーザーが直接対話できる要素 (背景が白の部分)。これにはキャッシュインターフェースやアプリケーションなどが含まれます。
JBoss Data Grid のキャッシュアーキテクチャーには次の要素が含まれます。
- キャッシュインスタンスやエントリーを永久的に格納する永続ストア。
- JBoss Data Grid は、永続ストアのアクセスに 2 つの永続ストアインターフェースを提供します。永続ストアインターフェースは以下のいずれかになります。
- キャッシュローダーは永続データストアへの接続を提供する読み取り専用インターフェースです。キャッシュローダーは、キャッシュインスタンスおよび永続ストアよりデータの場所を見つけ、読み出すことができます。
- キャッシュストアは、キャッシュローダーによるステートのロードおよび格納を許可するメソッドを公開し、キャッシュローダーの機能に書き込み機能が含まれるようにします。
- 1 次キャッシュ (L1 キャッシュ) は、リモートキャッシュエントリーが最初にアクセスされた後にそれらのエントリーを格納し、同じエントリーがその後使用される度に不必要なリモートフェッチ操作が行われないようにします。
- キャッシュマネージャーは JBoss Data Grid のキャッシュインスタンスを読み出すために使用される主なメカニズムで、キャッシュを使用する時の開始点とすることができます。
- キャッシュはキャッシュマネージャーによって読み出されたキャッシュインスタンスを格納します。
- キャッシュインターフェースは Memcached や Hot Rod などのプロトコルを使用します。キャッシュを持つインターフェースには REST を使用することもできます。リモートインターフェースに関する詳細は『開発者ガイド』を参照してください。
- Memcached はメモリー内にキーバリューを格納するために使用される分散メモリーオブジェクトキャッシングシステムです。Memcached キャッシングシステムは、Memached プロトコルと呼ばれるテキストベースのクライアントサーバーキャッシングプロトコルを定義します。
- Hot Rod は JBoss Data Grid で使用されるバイナリ TCP クライアントサーバープロトコルです。Memchached などの他のクライアントサーバープロトコルに不足している機能を補うために作成されました。Hot Rod は、パーティション化または分散化された JBoss Data Grid サーバークラスターの要求を、クライアントがスマートルーティングできるようにします。
- REST プロトコルは、密結合のクライアントライブラリおよびバインディングを不要にします。REST API ではオーバーヘッドが発生し、REST 呼び出しの理解と作成に REST クライアントまたはカスタムコードを必要とします。
- アプリケーションは、キャッシュインターフェースを介してユーザーがキャッシュとやりとりできるようにします。このようなエンドユーザーアプリケーションの一般的な例がブラウザーです。
1.6. JBoss Data Grid の API
- キャッシュ
- バッチ処理
- グループ化
- CacheStore
- 外部化
- 非同期 API (リモートクライアントサーバーモードで Hot Rod クライアントを併用する場合のみ使用可能)
- REST インターフェース
- Memcached インターフェース
- Hot Rod インターフェース
- RemoteCache API
第2章 JBoss Data Grid の要件
2.1. JBoss Data Grid の前提条件
2.2. Java Virtual Machines (JVM)
2.2.1. Java 仮想マシン
2.2.2. Red Hat Enterprise Linux への OpenJDK のインストール
手順2.1 Red Hat Enterprise Linux への OpenJDK のインストール
ベースチャンネルのサブスクライブ
RHN ベースチャンネルより OpenJDK を取得します。Red Hat Enterprise Linux のインストールはデフォルトでこのチャンネルにサブスクライブされています。パッケージのインストール
yum ユーティリティを使用して OpenJDK をインストールします。$ sudo yum install java-1.6.0-openjdk-devel
OpenJDK がシステムデフォルトであることを検証
次のように、正しい JDK がシステムデフォルトとして設定されているかを確認します。- root としてログインし、alternatives コマンドを実行します。
$ /usr/sbin/alternatives --config java
/usr/lib/jvm/jre-1.6.0-openjdk.x86_64/bin/java
選択します。- 次のコマンドを使用して
javac
を設定します。$ /usr/sbin/alternatives --config javac
/usr/lib/jvm/java-1.6.0-openjdk/bin/java
を選択します。
第3章 JBoss Data Grid のダウンロードおよびインストール
3.1. JBoss Data Grid のダウンロード
手順3.1 JBoss Data Grid のダウンロード
カスタマーサービスポータルへアクセス
カスタマーサービスポータル https://access.redhat.com へログインします。製品の検索
[Downloads] にカーソルを置き、[JBoss Enterprise Middleware] に移動します。製品の選択
[Data Grid] を選択します。JBoss Data Grid のダウンロード
適切な JBoss Data Grid を選択し、[Download] リンクをクリックします。リモートクライアントサーバー使用モードがある JBoss Data Grid をダウンロードする場合は [JBoss Data Grid Server 6.0.0] を選択します。ライブラリ使用モードを持つ JBoss Data Grid をダウンロードする場合は [JBoss Data Grid Library 6.0.0] を選択します。
3.2. Red Hat カスタマーポータルについて
3.3. チェックサムの検証
3.4. ダウンロードされたファイルの検証
手順3.2 ダウンロードされたファイルの検証
- Red Hat カスタマーポータルからダウンロードしたファイルにエラーがないことをポータルサイト上で検証するには、パッケージの [Software Details] ページに移動します。このページには、ファイルの整合性チェックに使用する
MD5
およびSHA256
"checksum" 値があります。 - ターミナルウインドウを開いて
md5sum
またはsha256sum
コマンドを実行し、ダウンロードしたZIP
のファイル名を引数として渡します。すると、ファイルのチェックサム値が出力されます。 - コマンドによって返されたチェックサム値と、ファイルの [Software Details] ページに表示された対応する値を比較します。
注記
Microsoft Windows にはチェックサムツールが同梱されていません。Microsoft Windows のユーザーはサードパーティーの製品をダウンロードする必要があります。
2 つのチェックサム値が同じである場合、ファイルに変更や破損がないため、安心して使用することができます。
3.5. JBoss Data Grid のインストール
適切なバージョン、プラットフォームおよびファイルタイプを見つけ、カスタマーサービスより JBoss Data Grid をダウンロードする必要があります。
手順3.3 JBoss Data Grid のインストール
- ダウンロードした JBoss Data Grid パッケージをマシン上の希望の場所にコピーする必要があります。
- 次のコマンドを実行して、ダウンロードした JBoss Data Grid パッケージを展開します。
$ unzip JDG_PACKAGE
JDG_PACKAGE は、Red Hat カスタマーポータルよりダウンロードした JBoss Data Grid 使用モードパッケージの名前に置き換えます。 - 展開したディレクトリは $JDG_HOME とします。
3.6. Red Hat のドキュメントサイト
第4章 Maven リポジトリのインストールおよび使用
4.1. Maven について
4.3. JBoss Data Grid の Maven リポジトリについて
4.4. Maven リポジトリのインストール
4.4.1. Maven リポジトリのインストールオプション
- ローカルファイルシステム上のインストール
- Apache Web Server 上のインストール
- Maven リポジトリマネージャーを用いたインストール
4.4.2. ローカルファイルシステムリポジトリのインストール
手順4.1 ローカルファイルシステムリポジトリのインストール
- Red Hat カスタマーポータルより
jboss-datagrid-maven-repository-6.0.0.zip
ファイルをダウンロードします。 $JDG_HOME/projects/maven-repositories/
などのローカルファイルシステムのディレクトリにファイルを展開します。
4.4.3. Apache Web Sever のインストール
手順4.2 Apache Web Sever のインストール
- Red Hat カスタマーポータルより、次のファイルをダウンロードします。
jboss-datagrid-maven-repository-6.0.0.zip
$JDG_HOME/projects/maven-repositories/
などのローカルファイルシステムのディレクトリにファイルを展開します。- Apache を設定し、設定されたディレクトリの読み取りアクセスとディレクトリの閲覧を許可します。
4.4.4. Maven リポジトリマネージャーのインストール
4.5. Maven レポジトリの設定
4.5.1. Maven リポジトリの設定
settings.xml
ファイルを編集します。デフォルトの settings.xml ファイルは、 Maven インストールの conf
にあります。
.m2
サブディレクトリにあります。Maven の設定に関する詳細は Maven documentation を参照してください。
4.5.2. Maven リポジトリリンクの設定
表4.1 Maven リポジトリインストールのリンク
インストールタイプ | リンク |
---|---|
ファイルシステムインストール | file://$JDG_HOME/projects/maven-repositories/jboss-datagrid-maven-repository-6.0.0 |
Apache Web Server インストール | http://intranet.acme.com/jboss-datagrid-maven-repository-6.0.0 |
Nexus リポジトリマネージャー | https://intranet.acme.com/nexus/content/repositories/jboss-datagrid-maven-repository-6.0.0 |
4.5.3. Maven リポジトリの設定例
example-settings.xml
という名前の Maven リポジトリファイルの例を利用できます。以下は、settings.xml
ファイルに関連する箇所が含まれる抜粋になります。
<settings> ... <profiles> ... <profile> <id>jboss-datagrid-repository</id> <repositories> <repository> <id>jboss-datagrid-repository</id> <name>JBoss Data Grid Maven Repository</name> <url>file:///path/to/repo/jboss-datagrid-maven-repository-6.0.0</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>false</enabled> <updatePolicy>never</updatePolicy> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>jboss-datagrid-repository-group</id> <name>JBoss Data Grid Maven Repository</name> <url>file:///path/to/repo/jboss-datagrid-maven-repository-6.0.0</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>false</enabled> <updatePolicy>never</updatePolicy> </snapshots> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>jboss-datagrid-repository</activeProfile> </activeProfiles> ... </settings>
第5章 新規 JBoss Data Grid プロジェクトの作成
5.1. プロジェクトへの依存関係の追加
pom.xml
ファイルに以下を追加します。
<dependency> <groupId>org.infinispan</groupId> <artifactId>infinispan-core</artifactId> <version>5.1.5.FINAL-redhat-1</version> </dependency>
注記
version
の値を、JBoss Data Grid に含まれるライブラリの適切なバージョンに置き換えます。
5.2. プロジェクトへのプロファイルの追加
pom.xml
ファイルに追加します。
<profile> <id>jboss-datagrid-repository</id> <repositories> <repository> <id>jboss-datagrid-repository</id> <name>JBoss Data Grid Maven Repository</name> <url>file:///path/to/repo/jboss-datagrid-maven-repository-6.0.0</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>false</enabled> <updatePolicy>never</updatePolicy> </snapshots> </repository> <repository> <id>jboss-public-repository-group</id> <name>JBoss Public Maven Repository Group</name> <url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </snapshots> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>jboss-datagrid-repository-group</id> <name>JBoss Data Grid Maven Repository</name> <url>file:///path/to/repo/jboss-datagrid-maven-repository-6.0.0</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>false</enabled> <updatePolicy>never</updatePolicy> </snapshots> </pluginRepository> <pluginRepository> <id>jboss-public-repository-group</id> <name>JBoss Public Maven Repository Group</name> <url>https://repository.jboss.org/nexus/content/groups/public-jboss/</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </snapshots> </pluginRepository> </pluginRepositories> </profile>
client/java/
ディレクトリの内容を、ビルドクラスパスへ追加します。
5.3. JBoss Data Grid の実行
$JDG_HOME/bin/standalone.sh
$JDG_HOME/standalone/configuration
の standalone.xml
に定義されている設定を使用して、JBoss Data Grid を起動します。
-c
と設定ファイル名を追加すると、代替設定を実行できます。
$JDG_HOME/bin/standalone.sh -c standalone-ha.xml
第6章 埋め込みキャッシュとして JBoss Data Grid を実行する
6.1. クイックスタートファイルの場所
重要
6.2. クイックスタートクラスにおける main メソッドの作成
手順6.1 クイックスタートクラスにおける main メソッドの作成
Quickstart.java ファイルの作成
プロジェクトの場所にQuickstart.java
という名前のファイルを作成します。クイックスタートクラスの追加
次のクラスとメソッドを追加します。import org.infinispan.manager.DefaultCacheManager import org.infinispan.Cache package com.mycompany.app; public class Quickstart { public static void main(String args[]) throws Exception { Cache<Object, Object> c = new DefaultCacheManager().getCache(); } }
依存関係のコピーと Java クラスのコンパイル
次のコマンドを使用して、すべてのプロジェクト依存関係をディレクトリにコピーし、プロジェクトより Java クラスをコンパイルします。$ mvn clean compile dependency:copy-dependencies -DstripVersion
main メソッドの実行
次のコマンドを用いて main メソッドを実行します。$ java -cp target/classes/:target/dependency/* com.mycompany.app.Quickstart
6.3. 新しい RemoteCacheManager の作成
RemoteCacheManager
を宣言により設定します。
Properties props = new Properties(); props.put("infinispan.client.hotrod.server_list", "127.0.0.1:11222"); RemoteCacheManager manager = new RemoteCacheManager(props); RemoteCache defaultCache = manager.getCache();
注記
Hot Rod
を使用するための詳細については、『開発者ガイド』の Hot Rod の章を参照してください。
6.4. デフォルトキャッシュの使用
6.4.1. キャッシュのデータ追加および削除
手順6.2 キャッシュのデータ追加および削除
- エントリーを追加し、key と value を希望のキーと値に置き換えます。
cache.put("key", "value");
- キャッシュにエントリーが存在することを確認します。
assertEquals(1, cache.size()); assertTrue(cache.containsKey("key"));
- キャッシュよりエントリーを削除します。
Object v = cache.remove("key");
- エントリーがキャッシュに存在しないことを確認します。
assertEquals("value", v);
6.4.2. キー値の追加と置換
DefaultCacheQuickstart.java
ファイルに入力された各行が何を実行するかを定義する例になります。
手順6.3 キー値の追加と置換
key
をキーの値とするエントリーを追加します。cache.put("key", "value");
- キーの値があるか確認します。値が見つからない場合、見つからない値を
key
に置き換えます。値が見つかった場合、変更は発生しません。cache.putIfAbsent("key", "newValue");
関連トピック:
6.4.3. データライフの調整
DefaultCacheQuickstart.java
ファイルに入力された各行が何を実行するかを定義する例になります。
手順6.4 データライフの調整
- キーの
lifespan
値を変更します。cache.put("key", "value", 5, SECONDS);
- キャッシュにキーが含まれるかを確認します。
assertTrue(cache.containsKey("key"));
- 割り当てられた
lifespan
時間が期限切れになると、キーはキャッシュから削除されます。Thread.sleep(10000); assertFalse(cache.containsKey("key"));
6.4.4. デフォルトのデータ期限
6.5. 名前付きキャッシュの使用
6.5.1. 名前付きキャッシュの使用
6.5.2. プログラムを用いた名前付きキャッシュの登録
CustomCacheQuickstart.java
ファイルを参考にすることができます。infinispan-quickstart は infinispan-quickstart/embedded-cache/src/main/java/org/infinispan/quickstart/embeddedcache/
にあります。
関連トピック:
6.5.3. 設定ファイルのロード
名前付きキャッシュを宣言的に登録する必要があります。
XmlConfiguredCacheQuickstart.java
ファイルは、名前付きキャッシュのカスタム設定がどのようにロードされるかを実例を用いて説明します。このファイルは Quickstarts パッケージの infinispan-quickstart/embedded-cache/src/main/java/org/infinispan/quickstart/embeddedcache
にあります。
関連トピック:
6.5.4. XML を用いた名前付きキャッシュの登録
infinispan.xml
ファイルを設定します。
infinispan.xml
ファイルは、infinispan-quickstarts パッケージの infinispan-quickstart/embedded-cache/src/main/resources
にあります。
関連トピック:
第7章 埋め込みデータグリッドとして JBoss Data Grid を使用する
7.1. クイックスタートファイルの場所
重要
7.2. 埋め込みデータグリッドとして JBoss Data Grid を実行する
7.3. JGroups チャネルの共有
EmbeddedCacheManager cm = $LOCATION Cache<Object, Object> cache1 = cm.getCache("replSyncCache"); Cache<Object, Object> cache2 = cm.getCache("replAsyncCache"); Cache<Object, Object> cache3 = cm.getCache("invalidationSyncCache");
7.4. クラスターにおける JBoss Data Grid の実行
7.4.1. プロジェクトのコンパイル
$ mvn clean compile dependency:copy-dependencies -DstripVersion
7.4.2. レプリケーションモードでクラスター化されたキャッシュを実行する
手順7.1 レプリケーションモードでクラスター化されたキャッシュを実行する
- 次のコマンドを用いて、最初のノードを立ち上げます。
$ java -cp target/classes/:target/dependency/* org.infinispan.quickstart.clusteredcache.replication.Node0
- 次のコマンドを用いて、2 つ目のノードを立ち上げます。
$ java -cp target/classes/:target/dependency/* org.infinispan.quickstart.clusteredcache.replication.Node1
両方のノードで JGroups と JBoss Data Grid が初期化されます。約 15 秒後に、キャッシュエントリーのログメッセージが最初のノードのコンソール上に表示されます。
7.4.3. ディストリビューションモードでクラスター化されたキャッシュの実行
手順7.2 ディストリビューションモードでクラスター化されたキャッシュの実行
- 次のコマンドを用いて最初のノードを立ち上げます。
$ java -cp target/classes/:target/dependency/* org.infinispan.quickstart.clusteredcache.distribution.Node0
- 次のコマンドを用いて 2 番目のノードを立ち上げます。
$ java -cp target/classes/:target/dependency/* org.infinispan.quickstart.clusteredcache.distribution.Node1
- 次のコマンドを用いて 3 番目のノードを立ち上げます。
$ java -cp target/classes/:target/dependency/* org.infinispan.quickstart.clusteredcache.distribution.Node2
3 つのノードで JGroups と JBoss Data Grid が初期化されます。約 15 秒後に、3 番目のノードによって追加された 10 個のエントリが、最初のノードと 2 番目のノードに分散されたように表示されます。
7.4.4. クラスターの設定
7.4.4.1. クラスターの設定
手順7.3 クラスターの設定
- 新しいクラスターのデフォルト設定の追加
- ネットワークの要件に従って、デフォルトのクラスター設定をカスタマイズします。宣言的 (XML を使用) またはプログラムを用いてカスタマイズできます。
- レプリケートされたデータグリッド、または分散されたデータグリッドを設定します。
7.4.4.2. デフォルトクラスター設定の追加
new ConfigurationBuilder() .clustering().cacheMode(CacheMode.REPL_SYNC) .build()
注記
GlobalConfiguration.clusteredDefault()
を使用して、事前設定されたクラスター対応の GlobalConfiguration
を迅速に作成します。この設定はカスタマイズ可能です。
7.4.4.3. デフォルトクラスター設定のカスタマイズ
以下の GlobalConfiguration コードを使用して、JGroups の設定に使用するファイルの名前を指定します。
new GlobalConfigurationBuilder().transport().addProperty("configurationFile", "jgroups.xml") .build()
jgroups.xml
を希望のファイル名に置き換えます。
jgroups.xml
ファイルは $Infinispan-Quickstart/clustered-cache/src/main/resources/
にあります。
注記
-Djgroups.bind_addr="127.0.0.1"
を使用します。これは、すべてのノードが 1 つのマシン上にある状態でクラスターをテストする場合、特に便利です。
infinispan.xml
ファイルにある以下の XML スニペットを使用して、JBoss Data Grid の XML 設定を使用するよう JGroups プロパティーを設定します。
<global> <transport> <properties> <property name="configurationFile" value="jgroups.xml"/> </properties> </transport> </global>
7.4.4.4. レプリケートされたデータグリッドの設定
以下のコードスニペットを使用して、レプリケーションモードのキャッシュをプログラムを用いて設定します (同期または非同期)。
private static EmbeddedCacheManager createCacheManagerProgramatically() { return new DefaultCacheManager( new GlobalConfigurationBuilder() .transport().addProperty("configurationFile", "jgroups.xml") .build(), new ConfigurationBuilder() .clustering().cacheMode(CacheMode.REPL_SYNC) .build() ); }
cfg.xml
ファイルに次の XML コードが含まれるようにし、レプリケーションモードのキャッシュを宣言的に設定します (同期または非同期)。
<infinispan xsi:schemaLocation="urn:infinispan:config:5.1 http://www.infinispan.org/schemas/infinispan-config-5.1.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="urn:infinispan:config:5.1"> <global> <transport> <properties> <property name="configurationFile" value="jgroups.xml"/> </properties> </transport> </global> <default> <clustering mode="replication"> <sync/> </clustering> </default> </infinispan>
private static EmbeddedCacheManager createCacheManagerFromXml() throws IOException { return new DefaultCacheManager("infinispan-replication.xml"); }
7.4.4.5. 分散されたデータグリッドの設定
以下のコードスニペットを使用して、ディストリビューションモードのキャッシュをプログラムを用いて設定します (同期または非同期)。
new ConfigurationBuilder() .clustering() .cacheMode(CacheMode.DIST_SYNC) .hash().numOwners(2) .build()
cfg.xml
ファイルに次の XML コードが含まれるようにし、ディストリビューションモードのキャッシュを宣言的に設定します (同期または非同期)。
<default> <clustering mode="distribution"> <sync/> <hash numOwners="2"/> </clustering> </default>
第8章 エンドポイントのないノードとして JBoss Data Grid を実行する
8.1. エンドポイントについて
8.2. エンドポイントのないノードの利点
8.3. エンドポイントのないノードの設定例
手順8.1 エンドポイントのないノードの JBoss Data Grid 設定例を検索
JBoss Data Grid の ZIP の展開
1. JBoss Data Grid のリモートクライアントサーバーモードの ZIP ファイルを展開します。これにはjboss-datagrid-server-${version}-GA
名前が付けられます。ファイル名に関連バージョンを追加します。適切なフォルダーへ移動
展開したフォルダー内で、$JDG_HOME/docs/examples/config
フォルダーに移動します。設定例ファイルの検索
エンドポイントのないノードの設定が含まれるstandalone-storage-only.xml
を見つけます。
8.4. エンドポイントのないノードの設定
datagrid
サブシステムを削除します。modcluster
を削除します。datasource
定義を削除します。mod_cluster
、Hot Rod
、およびmemcached
のsocket-bindings
を削除します。
第9章 JBoss Data Grid の CarMart クイックスタート
9.1. CarMart クイックスタートについて
CarMart クイックスタートは次の機能を提供します。
- 全車の一覧表示。
- 新しい車の追加。
- 車の削除。
- ヒット数、保存、読み出しなど、キャッシュの統計を表示。
CarMart クイックスタートは、次の JBoss Data Grid の使用モードで使用可能です。
- リモート JBoss Data Grid サーバーと通信するため Hot Rod クライアントが含まれる、リモートクライアントサーバーモード。
- すべてのライブラリが
jar
ファイル形式でアプリケーションとバンドルされる、ライブラリモード。
JBoss Data Grid の CarMart クイックスタートは jboss-datagrid-quickstarts-1.0.0/carmart/
にあります。
9.2. CarMart トランザクションクイックスタートについて
トランザクション CarMart クイックスタートは次の機能を提供します。
- 全車の一覧表示。
- 新しい車の追加。
- ロールバックで新しい車を追加。
- 車の削除。
- ヒット数、保存、読み出しなど、キャッシュの統計を表示。
トランザクション CarMart クイックスタートは JBoss Data Grid のライブラリモードでのみ使用できます。トランザクション CarMart クイックスタートが Tomcat で実行されると、JBoss Transactions よりスタンドアロントランザクションマネージャーが使用されます。
JBoss Data Grid の トランザクション CarMart クイックスタートは jboss-datagrid-quickstarts-1.0.0/carmart-transactional
にあります。
9.3. CarMart とトランザクションクイックスタートの違い
- CarMart はリモートクライアントサーバーモードとライブラリモードの両方で使用可能です。リモートクライアントサーバーモードではトランザクションが使用できないため、トランザクション CarMart はライブラリモードでのみ使用可能です。
- また、トランザクションクイックスタートは、トランザクションロールバックがどのように発生するかを表示します。[Add car with rollback] ボタンを使用してロールバックを表示します。CarMart の例には、簡単な [Add car] ボタンがあります。
9.4. JBoss Application Server を用いた CarMart クイックスタート
9.4.1. CarMart クイックスタートを JBoss Application Server へビルドする
サポート対象の JBoss Data Grid ライブラリモードのディストリビューションファイルを取得する必要があります。
手順9.1 CarMart を JBoss Application Server へビルドする
Maven リポジトリのインストール
小チームでの初期テストでは、JBoss Data Grid Maven リポジトリをローカルシステムのディレクトリへ展開します。$ unzip jboss-datagrid-maven-repository-6.0.0.zip
JBoss Data Grid Maven リポジトリをインストールする方法の詳細は、4章Maven リポジトリのインストールおよび使用 を参照してください。JBoss Application Server の起動
次のように JBoss Application Server を起動します。$JBOSS_HOME/bin/standalone.sh
アプリケーションのビルド
次のコマンドを用いて、Maven を使用してアプリケーションをビルドします。$ mvn clean package -Plibrary-jbossas -Ddatagrid.maven.repo=file:///path/to/unpacked/jdg/maven/repository
9.4.2. CarMart クイックスタートを JBoss Application Server へデプロイする
デプロイする CarMart クリックスタートがビルドされている必要があります。
手順9.2 CarMart クイックスタートを JBoss Application Server へデプロイする
アプリケーションのデプロイ
JBoss Application Server の Maven プラグインを使用して、次のようにアプリケーションをデプロイします。$ mvn jboss-as:deploy -Plibrary-jbossas
アプリケーションの表示
アプリケーションを表示するには、ブラウザーを使用して次のリンクに移動します。http://localhost:8080/carmart-quickstart
9.4.3. CarMart クイックスタートを JBoss Application Server からアンデプロイする
手順9.3 JBoss Application Server よりアプリケーションをアンデプロイする
- アプリケーションをアンデプロイするには、次のコマンドを使用します。
$ mvn jboss-as:undeploy -Plibrary-jbossas
9.5. Tomcat を用いた CarMart クイックスタート
9.5.1. CarMart クイックスタートの Tomcat へのビルド
サポート対象の JBoss Data Grid ライブラリモードのディストリビューションファイルを取得する必要があります。
手順9.4 CarMart クイックスタートの Tomcat へのビルド
Maven リポジトリのインストール
小チームでの初期テストでは、JBoss Data Grid Maven リポジトリをローカルシステムのディレクトリへ展開します。$ unzip jboss-datagrid-maven-repository-6.0.0.zip
JBoss Data Grid Maven リポジトリをインストールする方法の詳細は、4章Maven リポジトリのインストールおよび使用 を参照してください。マネージャースクリプト情報の追加
このビルドでは、デフォルトのホスト名 (localhost
) やポート (8080
) などが含まれる Tomcat 7 のデフォルト設定が使用されることを前提としています。Maven の Tomcat プラグインがマネージャーにアクセスできるようにするため、以下の情報をconf/tomcat-users.xml
にあるtomcat-users.xml
ファイルへ追加します。<role rolename="manager-script"/> <user username="admin" password="" roles="manager-script"/>
Tomcat の起動
次のスクリプトを使用して Tomcat を起動します。$CATALINA_HOME/bin/catalina.sh start
アプリケーションのビルド
次のコマンドを用いて、Maven を使用してアプリケーションをビルドします。$ mvn clean package -Plibrary-jbossas -Ddatagrid.maven.repo=file:///path/to/unpacked/jdg/maven/repository
9.5.2. CarMart クイックスタートの Tomcat へのデプロイ
デプロイする CarMart クリックスタートがビルドされている必要があります。
手順9.5 CarMart クイックスタートの Tomcat へのデプロイ
サーバーの認証情報の編集
Maven インストールのconf
ディレクトリにある Mavensettings.xml
ファイルに、server
要素と必要な認証情報を追加します。<server> <id>tomcat</id> <username>admin</username> <password></password> </server>
アプリケーションのデプロイ
次のように、Tomcat の Maven プラグインを使用してアプリケーションをデプロイします。$ mvn tomcat:deploy -Plibrary-tomcat
アプリケーションの表示
アプリケーションを表示するには、ブラウザーを使用して次のリンクに移動します。http://localhost:8080/carmart-quickstart
9.5.3. Tomcat の CarMart クイックスタートのアンデプロイ
手順9.6 Tomcat のアプリケーションのアンデプロイ
- アプリケーションをアンデプロイするには、次のコマンドを使用します。
$ mvn tomcat:undeploy -Plibrary-tomcat
9.6. リモートクライアントサーバーモードの CarMart クイックスタート
9.6.1. リモートクライアントサーバーモードでの CarMart クイックスタートのビルド
サポート対象の JBoss Data Grid ライブラリモードのディストリビューションファイルを取得する必要があります。
手順9.7 リモートクライアントサーバーモードでの CarMart クイックスタートのビルド
スタンドアロンファイルの設定
$JDG_HOME/standalone/configuration/
ディレクトリにあるstandalone.xml
ファイルに、次の設定を追加します。- 次の設定を、<
system-properties
> 要素の右側のタグの後に追加します。<paths> <path name="temp" path="/tmp"/> </paths>
- infinispan サブシステムのタグ内に次の設定を追加します。
<local-cache name="carcache" start="EAGER" batching="false" indexing="NONE"> <locking isolation="REPEATABLE_READ" striping="false" acquire-timeout="20000" concurrency-level="500"/> <eviction strategy="LIRS" max-entries="4"/> <file-store relative-to="temp" path="carstore" passivation="false"/> </local-cache>
JBoss Data Grid サーバーの起動
次のスクリプトを実行し、JBoss Data Grid サーバーを起動します。$JDG_HOME/bin/standalone.sh
注記
サーバーは指定された設定を使用して、test1
アドレス上で実行されます。UNIX ユーザー向けの test1 の設定
/etc/hosts
に次の行を追加し、UNIX システム上のtest1
アドレスを設定します。192.168.11.101 test1
IfConfig コマンドの実行
コマンドラインで次のコマンドを実行します。$ sudo ifconfig eth0:1 192.168.11.101 netmask 255.255.255.0
JBoss Application Server の起動
次のスクリプトを実行し、アプリケーションがデプロイされる場所に JBoss Application Server インスタンスを起動します。$JDG_HOME/bin/standalone.sh
JBoss Data Grid サーバーアドレスの指定
$JDG_HOME/src/main/resources/META-INF/
ディレクトリにあるjdg.properties
ファイルを編集し、次のように JBoss Data Grid サーバーのアドレスを指定します。datagrid.address=test1
注記
ポートオフセットが定義されているlocalhost
アドレスで JBoss Data Grid サーバーが稼働している場合は、ポート情報が含まれるようにjdg.properties
ファイルを編集します。例は次の通りです。datagrid.address=localhost datagrid.hotrod.port=11322
アプリケーションのビルド
次のコマンドを使用し、関連ディレクトリでアプリケーションをビルドします。$ mvn clean package -Premote
9.6.2. リモートクライアントサーバーモードでの CarMart クイックスタートのデプロイ
デプロイする CarMart クリックスタートがビルドされている必要があります。
手順9.8 リモートクライアントサーバーモードでの CarMart クイックスタートのデプロイ
アプリケーションのデプロイ
次のコマンドを用いて、Maven を使用してアプリケーションをデプロイします。$ mvn jboss-as:deploy -Premote
アプリケーションの表示
次のリンクにアクセスし、アプリケーションを表示します。http://localhost:8080/carmart-quickstart
9.6.3. リモートクライアントサーバーモードでの CarMart クイックスタートのアンデプロイ
手順9.9 リモートクライアントサーバーモードでのアプリケーションのアンデプロイ
- アプリケーションをアンデプロイするには、次のコマンドを使用します。
$ mvn jboss-as:undeploy -Premote
第10章 Football クイックスタートエンドポイントの例
10.1. Football クイックスタートエンドポイントの例について
Football Manager アプリケーションの例で使用できる機能は次の通りです。
- チームの追加。
- プレーヤーの追加。
- 全エンティティー (チームおよびプレーヤー) の削除。
- 全チームおよびプレーヤーの一覧表示。
JBoss Data Grid の Football クイックスタートは以下の場所にあります。
jboss-datagrid-quickstarts-1.0.0/carmart/rest-endpoint
jboss-datagrid-quickstarts-1.0.0/carmart/hotrod-endpoint
jboss-datagrid-quickstarts-1.0.0/carmart/memcached-endpoint
10.2. Football アプリケーションのビルド
注記
手順10.1 Football アプリケーションのビルド
設定の追加
$JDG_HOME/standalone/configuration/
にあるstandalone.xml
ファイルを編集し、データソースおよび infinispan サブシステムの定義を追加します。- データソースに対する次のサブシステム定義を追加します。
<subsystem xmlns="urn:jboss:domain:datasources:1.0"> <datasources> <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true"> <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1</connection-url> <driver>h2</driver> <security> <user-name>sa</user-name> <password>sa</password> </security> </datasource> <drivers> <driver name="h2" module="com.h2database.h2"> <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> </driver> </drivers> </datasources> </subsystem>
- infinispan に対する次のサブシステム定義を追加します。
<subsystem xmlns="urn:jboss:domain:infinispan:1.2" default-cache-container="local"> <cache-container name="local" default-cache="memcachedCache" listener-executor="infinispan-listener" start="EAGER"> <local-cache name="memcachedCache" start="EAGER" batching="false" indexing="NONE"> <locking isolation="REPEATABLE_READ" acquire-timeout="20000" concurrency-level="500" striping="false" /> <transaction mode="NONE" /> <string-keyed-jdbc-store datasource="java:jboss/datasources/ExampleDS" passivation="false" preload="false" purge="false"> <property name="databaseType">H2</property> <string-keyed-table prefix="JDG"> <id-column name="id" type="VARCHAR"/> <data-column name="datum" type="BINARY"/> <timestamp-column name="version" type="BIGINT"/> </string-keyed-table> </string-keyed-jdbc-store> </local-cache> <local-cache name="teams" start="EAGER" batching="false" indexing="NONE"> <locking isolation="REPEATABLE_READ" acquire-timeout="20000" concurrency-level="500" striping="false" /> <transaction mode="NONE" /> <string-keyed-jdbc-store datasource="java:jboss/datasources/ExampleDS" passivation="false" preload="false" purge="false"> <property name="databaseType">H2</property> <string-keyed-table prefix="JDG"> <id-column name="id" type="VARCHAR"/> <data-column name="datum" type="BINARY"/> <timestamp-column name="version" type="BIGINT"/> </string-keyed-table> </string-keyed-jdbc-store> </local-cache> </cache-container> </subsystem>
注記
Hot Rod および REST エンドポイントはteams
という名前のキャッシュを使用し、memcached エンドポイントはデフォルトでmemcachedCache
を使用します。サブモジュール設定ファイルの編集
各サブモジュール (特にhotrod-endpoint
、rest-endpoint
、およびmemcached-endpoint
) には設定ファイルが含まれています ($JDG_HOME/src/main/resources/jdg.properties
にあります)。設定を編集して、ご使用の JBoss Data Grid インストールに必要な値を指定します。Hot Rod エンドポイントには次のような追加設定が必要です。Maven リポジトリのインストール
小チームでの初期テストでは、次のようにリポジトリをローカルシステムのディレクトリへ展開することができます。unzip jboss-datagrid-maven-repository-6.0.0.zip
これにより、jboss-datagrid-maven-repository-6.0.0
というディレクトリに Maven リポジトリが作成されます。JBoss Data Grid Maven リポジトリをインストールする方法の詳細は、4章Maven リポジトリのインストールおよび使用 を参照してください。
アプリケーションのビルド
次のコマンドを使用して、サンプルアプリケーションのディレクトリでサンプルアプリケーションをビルドします。mvn package
これにより、Maven のシェードプラグインが使用されます。このプラグインは、すべての依存関係を 1 つの jar ファイルにバンドルし、使いやすくします。JBoss Data Grid の起動
次のスクリプトを実行し、JBoss Data Grid を起動します。$JDG_HOME/bin/standalone.sh
アプリケーションの実行
サンプルアプリケーションのディレクトリでサンプルアプリケーションを実行します。- Hot Rod エンドポイントの場合、次のコマンドを実行します。
java -jar target/hotrod-endpoint-quickstart.jar
- memcached エンドポイントの場合、次のコマンドを実行します。
java -jar target/memcached-endpoint-quickstart.jar
- REST エンドポイントの場合、次のコマンドを実行します。
java -jar target/rest-endpoint-quickstart.jar
第11章 JBoss Data Grid の削除
11.1. Linux システムより JBoss Data Grid を削除する
警告
手順11.1 Linux システムより JBoss Data Grid を削除する
サーバーのシャットダウン
JBoss Data Grid サーバーが必ずシャットダウンされているようにしてください。JBoss Data Grid のホームディレクトリへの移動
コマンドラインを使用して、$JDG_HOME
フォルダーより 1 つ上の階層へ移動します。JBoss Data Grid のホームディレクトリの削除
ターミナル上で次のコマンドを入力し、JBoss Data Grid を削除します。$JDG_HOME
は JBoss Data Grid のホームディレクトリの名前に置き換えてください。$ rm -Rf $JDG_HOME
11.2. Windows システムより JBoss Data Grid を削除する
警告
手順11.2 Windows システムより JBoss Data Grid を削除する
サーバーのシャットダウン
JBoss Data Grid サーバーが必ずシャットダウンされているようにしてください。JBoss Data Grid のホームディレクトリへの移動
Windows Explorer を使用して、$JDG_HOME
フォルダーが存在するディレクトリへ移動します。JBoss Data Grid のホームディレクトリの削除
$JDG_HOME
フォルダーを選択し、削除します。
付録A 参照
A.1. キーバリューペアについて
- キーは特定のデータエントリーに一意であり、関連する特定エントリーのデータ属性によって構成されます。
- バリュー (値) は、キーによって割り当てられ、キーによって識別されるデータです。
付録B 改訂履歴
改訂履歴 | |||
---|---|---|---|
改訂 1.0.0-34 | Fri Jan 10 2014 | Misha Husnain Ali | |
|