Adobe Experience Manager(AEM) では、バイナリデータをコンテンツノードとは独立して保存できます。 バイナリデータはデータストアに格納され、コンテンツノードはノードストアに格納されます。
データストアとノードストアは、OSGi 設定を使用して設定できます。 各 OSGi 設定は、永続的な識別子 (PID) を使用して参照されます。
ノードストアとデータストアの両方を設定するには、次の手順を実行します。
AEM quickstart JAR ファイルをインストールディレクトリにコピーします。
インストールディレクトリ内に crx-quickstart/install
フォルダーを作成します。
最初に、ノードストアを設定します。そのためには、使用するノードストアオプションの名前を持つ設定ファイルを crx-quickstart/install
ディレクトリに作成します。
例えば、ドキュメントノードストア(AEM の MongoMK 実装の基盤)では、org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.config
ファイルを使用します。
ファイルを編集し、設定オプションを設定します。
使用するデータストアの PID を持つ設定ファイルを作成します。 ファイルを編集し、設定オプションを設定します。
AEM を起動します。
新しいバージョンの Oak では、OSGi 設定ファイルの命名方式と形式が新しく採用されています。 新しい命名スキームでは、設定ファイルの名前を指定する必要があります .config 新しい形式では、型指定する値が必要で、は ここに記載されています.
古いバージョンの Oak からアップグレードする場合は必ず、crx-quickstart/install
フォルダーのバックアップを最初に作成してください。アップグレード後、アップグレードしたインストール環境にフォルダーの内容を復元し、設定ファイルの拡張子を .cfg から .config に変更します。
この記事を読んで、 AEM 5.x インストール時に、 アップグレード 最初にドキュメントを作成します。
セグメントノードストアは、AEM6 におけるAdobeの TarMK 実装の基礎です。 このストアでは、org.apache.jackrabbit.oak.segment.SegmentNodeStoreService
という PID を設定に使用します。
セグメントノードストアの PID が、AEM 6 の org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreService in previous versions
から AEM 6.3 の org.apache.jackrabbit.oak.segment.SegmentNodeStoreService
に変更されました。この変更を反映するために必要な設定の調整を行ってください。
以下のオプションを設定できます。
repository.home
:リポジトリのホームのパスです。リポジトリ関連のデータが格納されます。デフォルトでは、crx-quickstart/segmentstore
ディレクトリにセグメントファイルが格納されます。
tarmk.size
:セグメントの最大サイズ(MB 単位)です。デフォルトの最大サイズは 256 MB です。
customBlobStore
:カスタムデータストアが使用されることを示すブール値です。AEM 6.3 以降のバージョンのデフォルト値は true です。AEM 6.3 より前のデフォルトは false でした。
以下に、org.apache.jackrabbit.oak.segment.SegmentNodeStoreService.config
ファイルのサンプルを示します。
#Path to repo
repository.home="crx-quickstart/repository"
#Max segment size
tarmk.size=I"256"
#Custom data store
customBlobStore=B"true"
ドキュメントノードストアは、AEM の MongoMK 実装の基盤です。使用する org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService
PID. 以下の設定オプションを使用できます。
mongouri
:Mongo データベースに接続するために必要な MongoURI です。デフォルトは mongodb://localhost:27017
です
db
:Mongo データベースの名前です。デフォルトはです。 Oak . ただし、新しいAEM 6 のインストールでは、 aem-author をデフォルトのデータベース名として使用します。
cache
:キャッシュサイズ(MB 単位)です。これは DocumentNodeStore で使用される様々なキャッシュに分散されます。デフォルトは 256
です。
changesSize
:Mongo で差分出力のキャッシュに使用される capped コレクションのサイズ(MB 単位)です。デフォルトは 256
です。
customBlobStore
:カスタムデータストアが使用されることを示すブール値です。デフォルトは false
です。
以下に、org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.config
ファイルのサンプルを示します。
#Mongo server details
mongouri="mongodb://localhost:27017"
#Name of Mongo database to use
db="aem-author"
#Store binaries in custom BlobStore
customBlobStore=B"false"
多数のバイナリを処理する場合は、最大限のパフォーマンスを確保するために、デフォルトのノードストアではなく外部のデータストアを使用することをお勧めします。
例えば、プロジェクトで大量のメディアアセットが必要な場合は、ファイルまたは S3 データストアにアクセスすると、MongoDB 内に直接保存するよりも高速にアクセスできます。
ファイルデータストアは MongoDB よりも高いパフォーマンスを提供します。また、多数のアセットがある場合は、Mongo のバックアップおよび復元操作も遅くなります。
様々なデータストアおよび設定の詳細については、以下で説明します。
カスタムデータストアを有効にするには、それぞれのノードストア設定ファイル(セグメントノードストアまたはドキュメントノードストア)で customBlobStore
が true
に設定されていることを確認する必要があります。
これは Jackrabbit 2 に含まれる FileDataStore の実装であり、バイナリデータを通常のファイルとしてファイルシステムに格納する手段を提供します。このストアでは、org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore
という PID を使用します。
以下の設定オプションを使用できます。
repository.home
:リポジトリのホームのパスです。リポジトリ関連の様々なデータが格納されます。デフォルトでは、crx-quickstart/repository/datastore
ディレクトリにバイナリファイルが格納されます。。
path
:ファイルを格納するディレクトリのパスです。このオプションを指定すると、repository.home
より優先されます。。
minRecordLength
:データストアに格納するファイルの最小サイズ(バイト単位)です。この値よりも小さいバイナリコンテンツはインライン化されます。
NAS を使用して共有ファイルのデータストアを保存する場合は、パフォーマンスの問題を回避するために、必ず高パフォーマンスのデバイスのみを使用してください。
Amazon の Simple Storage Service(S3)にデータを格納するように AEM を設定できます。このストアでは、org.apache.jackrabbit.oak.plugins.blob.datastore.S3DataStore.config
という PID を設定に使用します。
S3 データストア機能を有効にするには、S3 データストアコネクタを含む機能パックをダウンロードしてインストールする必要があります。アドビリポジトリに移動し、1.8.x バージョンの機能パックの中から最新のバージョン(com.adobe.granite.oak.s3connector-1.8.0.zip など)をダウンロードします。さらに、最新のAEMサービスパックをダウンロードしてインストールする必要があります。最新のサービスパックは、 AEM 6.4 Service Pack リリースノート ページ。
TarMK でAEM 6.4 を使用する場合、デフォルトでは、バイナリは FileDataStore
. S3 データストアと共に TarMK を使用するには、以下のように、crx3tar-nofds
実行モードを使用して AEM を起動する必要があります。
java -jar aem6.4.jar -r crx3tar-nofds
ダウンロードが完了したら、次の手順に従って S3 コネクタをインストールして設定できます。
機能パック zip ファイルの内容を一時フォルダーに解凍します。
一時フォルダーに移動し、次の場所に移動します。
jcr_root/libs/system/install
上述の場所からすべての内容を <aem-install>/crx-quickstart/install.
にコピーします。
Tar または MongoDB ストレージと連動するように AEM を設定済みの場合は、続行する前に、既存の設定ファイルを aem-install/crx-quickstart/install
フォルダーから削除します。削除する必要があるファイルは次のとおりです。
For MongoMK: org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.config
For TarMK: org.apache.jackrabbit.oak.segment.SegmentNodeStoreService.config
機能パックを展開した一時的な場所に戻り、次のフォルダーの内容をコピーします。
jcr_root/libs/system/config
コピー先:
<aem-install>/crx-quickstart/install
現在の設定に必要な設定ファイルのみをコピーしてください。専用データストアと共有データストアのどちらの設定の場合も、org.apache.jackrabbit.oak.plugins.blob.datastore.S3DataStore.config
ファイルをコピーします。
クラスタ設定では、クラスタのすべてのノードで 1 つずつ上記の手順を実行します。 また、すべてのノードで同じ S3 設定を使用するようにしてください。
ファイルを編集し、設定に必要な設定オプションを追加します。
AEM を起動します。
1.8.x S3 コネクターを新しいバージョンにアップグレードする必要がある場合は(1.8.0 から 1.8.1 へのアップグレードなど)、以下の手順に従います。
AEM インスタンスを停止します。
AEM インストールフォルダーの <aem-install>/crx-quickstart/install/15
に移動して、その内容のバックアップを作成します。
バックアップ後、古いバージョンの S3 コネクターとその依存関係を削除します。そのためには、<aem-install>/crx-quickstart/install/15
フォルダー内の jar ファイル(以下のファイルなど)をすべて削除します。
上記のファイル名は説明用にのみ使用され、確定的ではありません。
アドビリポジトリから最新バージョンの 1.8.x 機能パックをダウンロードします。
機能パックの内容を別のフォルダーに展開して、jcr_root/libs/system/install/15
に移動します。
jar ファイルを AEM インストールフォルダーの <aem-install>/crx-quickstart/install/15 にコピーします。
AEM を起動して、コネクタの機能を確認します。
設定ファイルは、次のオプションと共に使用できます。
accessKey:AWS アクセスキーです。
secretKey:AWS 秘密アクセスキーです。注意: 次の場合に accessKey
または secretKey
が指定されていない場合、 IAM ロール は認証に使用されます。
s3Bucket:バケット名です。
s3Region:バケットのリージョンです。
path:データストアのパスです。デフォルト値は <AEM install folder>/repository/datastore です。
minRecordLength:データストアに格納するオブジェクトの最小サイズです。最小/デフォルトは 16 KB です。
maxCachedBinarySize:このサイズ以下のバイナリは、メモリキャッシュに格納されます。サイズはバイト単位です。デフォルト値は 17408 (17 KB)です。
cacheSize:キャッシュのサイズです。値はバイト単位で指定されます。デフォルト値は 64 GB です。
secret:共有データストア設定でバイナリなしのレプリケーションを使用する場合にのみ使用します。
stagingSplitPercentage:非同期アップロードのステージングに使用するように設定されたキャッシュサイズの割合(%)です。デフォルト値は 10 です。
uploadThreads:非同期アップロードに使用するアップロードスレッドの数です。デフォルト値は 10 です。
stagingPurgeInterval:完了したアップロードをステージングキャッシュからパージする間隔(秒単位)です。デフォルト値は 300 秒(5 分)です。
stagingRetryInterval:失敗したアップロードの再試行間隔(秒単位)です。デフォルト値は 600 秒(10 分)です。
米国標準 | us-standard |
米国西部 | us-west-2 |
米国西部(北カリフォルニア) | us-west-1 |
欧州(アイルランド) |
EU |
アジア太平洋(シンガポール) |
ap-southeast-1 |
アジア太平洋(シドニー) |
ap-southeast-2 |
アジア太平洋(東京) | ap-northeast-1 |
南米(サンパウロ) |
sa-east-1 |
データストアのキャッシュ
S3DataStore
、CachingFileDataStore
および AzureDataStore
のデータストア実装では、ローカルファイルシステムのキャッシュがサポートされています。CachingFileDataStore
の実装は、データストアがネットワークファイルシステム(NFS)上にある場合に便利です。
古いキャッシュ実装(Oak 1.6 より前)からアップグレードする場合、ローカルファイルシステムのキャッシュディレクトリの構造に違いがあります。 古いキャッシュ構造では、ダウンロードされたファイルとアップロードされたファイルの両方がキャッシュパスの直下に配置されていました。 新しい構造では、ダウンロードとアップロードが分離され、キャッシュパス配下にある upload
と download
という名前の 2 つのディレクトリに格納されます。アップグレードプロセスはシームレスに行われ、保留中のアップロードがある場合はアップロードがスケジュールされ、キャッシュ内にダウンロード済みファイルがある場合は初期化時にキャッシュに配置されます。
oak-run の「datastorecacheupgrade
」コマンドを使用して、キャッシュをオフラインでアップグレードすることもできます。このコマンドの実行方法について詳しくは、oak-run モジュールの README を参照してください。
キャッシュにはサイズ制限があり、cacheSize パラメーターを使用して設定できます。
ダウンロード
データストアからアクセスする前に、要求されたファイル/Blob のレコードがローカルキャッシュでチェックされます。キャッシュにファイルを追加しているときに、キャッシュが設定された制限(cacheSize
パラメーターを参照)を超えると、領域を再利用できるように、ファイルの一部が消去されます。
非同期アップロード
キャッシュは、データストアへの非同期アップロードをサポートします。 ファイルが(ファイルシステム上の)キャッシュ内でローカルにステージングされ、非同期ジョブがファイルのアップロードを開始します。 非同期アップロードの数は、ステージングキャッシュのサイズによって制限されます。 ステージングキャッシュのサイズは、stagingSplitPercentage
パラメーターを使用して設定します。このパラメーターでは、ステージングキャッシュに使用するキャッシュサイズの割合(%)を定義します。また、ダウンロードで使用可能なキャッシュの割合は、 (100 - stagingSplitPercentage
)*cacheSize
.
非同期アップロードはマルチスレッドです。スレッドの数は、uploadThreads
パラメーターを使用して設定します。
アップロードが完了すると、ファイルはメインのダウンロードキャッシュに移動されます。 ステージングキャッシュのサイズが上限を超えると、前回の非同期アップロードが完了し、ステージングキャッシュで領域が再び使用できるようになるまで、ファイルはデータストアに同期してアップロードされます。 アップロードされたファイルは、定期ジョブによってステージング領域から削除されます。定期ジョブの間隔は、stagingPurgeInterval
パラメーターで設定します。
(ネットワークの障害などが原因で)失敗したアップロードは再試行キューに配置され、定期的に再試行されます。再試行間隔は、stagingRetryInterval parameter
パラメーターを使用して設定します。
S3 でバイナリレスレプリケーションを設定するには、次の手順が必要です。
オーサーインスタンスとパブリッシュインスタンスをインストールし、正しく起動していることを確認します。
次のページを開いて、レプリケーションエージェントの設定に移動します。 http://localhost:4502/etc/replication/agents.author/publish.html.
「設定」セクションの「編集」ボタンを押します。
「シリアル化の種類」オプションを「バイナリなし」に変更します。
「binaryless
= true
」パラメーターをトランスポート URI に追加します。変更後、URI は次のようになります。
http://localhost:4503/bin/receive?sling:authRequestLogin=1&binaryless=true
すべてのオーサーインスタンスとパブリッシュインスタンスを再起動して、変更を有効にします。
次のコマンドを使用して、CQ クイックスタートを解凍します。
java -jar cq-quickstart.jar -unpack
AEM を展開したら、crx-quickstart/install フォルダーをインストールディレクトリ内に作成します。
次の 2 つのファイルを crx-quickstart
フォルダー内に作成します。
ファイルを作成した後、必要に応じて設定オプションを追加します。
前述のように、S3 データストアに必要な 2 つのバンドルをインストールします。
MongoDB がインストールされていること、および mongod
のインスタンスが実行されていることを確認します。
次のコマンドを使用して AEM を起動します。
java -Xmx1024m -XX:MaxPermSize=256M -jar cq-quickstart.jar -r crx3,crx3mongo
2 つ目のAEMインスタンスに対して、手順 1 ~ 4 を繰り返します。
2 つ目のAEMインスタンスを起動します。
最初に、データストアを共有するために必要な各インスタンスに、次のようなデータストア設定ファイルを作成します。
FileDataStore
を使用する場合、org.apache.jackrabbit.oak.plugins.blob.datastore.FileDataStore.config
という名前のファイルを作成し、<aem-install>/crx-quickstart/install
フォルダーに格納します。rg.apache.jackrabbit.oak.plugins.blob.datastore.S3DataStore.config
という名前のファイルを <aem-install>/crx-quickstart/install
フォルダーに作成します。各インスタンスのデータストア設定ファイルを変更して、同じデータストアを指すようにします。 詳しくは、 この記事.
インスタンスのクローンが既存のサーバーから作成された場合、リポジトリーがオフラインになっている間に、最新の oak-run ツールを使用して新しいインスタンスの clusterId
を削除する必要があります。実行する必要があるコマンドは次のとおりです。
java -jar oak-run.jar resetclusterid < repository path | Mongo URI >
セグメントノードストアを設定する場合、リポジトリーパスを指定する必要があります。デフォルトでは、パスは <aem-install-folder>/crx-quickstart/repository/segmentstore.
です。ドキュメントノードストアを設定する場合、Mongo の接続文字列 URI を使用できます。
Oak-run ツールは、次の場所からダウンロードできます。
https://mvnrepository.com/artifact/org.apache.jackrabbit/oak-run/
AEMのインストールで使用する Oak バージョンに応じて、異なるバージョンのツールを使用する必要があります。 ツールを使用する前に、以下のバージョン要件のリストを確認してください。
最後に、設定を検証します。 これをおこなうには、共有している各リポジトリがデータストアに追加した一意のファイルを探す必要があります。 ファイルの形式は repository-[UUID]
です。UUID は、個々のリポジトリーの一意の識別子です。
したがって、適切な設定には、データストアを共有するリポジトリと同じ数の一意のファイルを含める必要があります。
ファイルの保存方法は、データストアに応じて異なります。
FileDataStore
の場合、データストアフォルダーのルートパスにファイルが作成されます。S3DataStore
の場合、設定済みの S3 バケットの META
フォルダーにファイルが作成されます。AEMは、Microsoft Azure ストレージサービスにデータを格納するように設定できます。 このストアでは、org.apache.jackrabbit.oak.plugins.blob.datastore.AzureDataStore.config
という PID を設定に使用します。
Azure データストア機能を有効にするには、Azure コネクタを含む機能パックをダウンロードしてインストールする必要があります。アドビリポジトリーにアクセスし、1.6.x バージョンの機能パックの中から最新バージョン(com.adobe.granite.oak.azureblobconnector-1.6.3.zip など)をダウンロードします。
TarMK でAEM 6.4 を使用する場合、デフォルトでは、バイナリは FileDataStore に格納されます。 Azure データストアと共に TarMK を使用するには、次のように、crx3tar-nofds
実行モードを使用して AEM を起動する必要があります。
java -jar aem6.4.jar -r crx3tar-nofds
ダウンロードが完了したら、次の手順に従って Azure コネクタをインストールして設定できます。
機能パック zip ファイルの内容を一時フォルダーに解凍します。
一時フォルダーに移動し、jcr_root/libs/system/install
の内容を <aem-install>crx-quickstart/install
フォルダーにコピーします。
Tar または MongoDB ストレージと連動するように AEM を設定済みの場合は、続行する前に、既存の設定ファイルを /crx-quickstart/install
フォルダーから削除します。削除する必要があるファイルは次のとおりです。
MongoMK の場合:
org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreService.config
TarMK の場合:
org.apache.jackrabbit.oak.segment.SegmentNodeStoreService.config
機能パックを展開した一時的な場所に戻り、jcr_root/libs/system/config
の内容を <aem-install>/crx-quickstart/install
フォルダーにコピーします。
設定ファイルを編集し、設定に必要な設定オプションを追加します。
AEM を起動します。
設定ファイルは、次のオプションと共に使用できます。
azureSas="":コネクタのバージョン 1.6.3 で、Azure Shared Access Signature(SAS)のサポートが追加されました。SAS とストレージ資格情報の両方が設定ファイルに存在する場合は、SAS が優先されます。 SAS について詳しくは、公式ドキュメントを参照してください。「=」文字は必ず、「=」のようにエスケープしてください。
azureBlobEndpoint="":Azure Blob エンドポイントです。例えば、https://<storage-account>.blob.core.windows.net などです。
accessKey="":ストレージアカウント名です。Microsoft Azure の認証資格情報について詳しくは、公式ドキュメントを参照してください。
secretKey="":ストレージアクセスキーです。「=」文字は必ず、「=」のようにエスケープしてください。
container="":Microsoft Azure BLOB ストレージコンテナ名。 コンテナは、一連の BLOB をグループ化したものです。 詳しくは、 公式ドキュメント.
maxConnections="":操作ごとの同時リクエスト数。 デフォルト値は 1 です。
maxErrorRetry="":要求ごとの再試行回数です。デフォルト値は 3 です。
socketTimeout="":要求に使用するタイムアウト間隔(ミリ秒単位)です。デフォルト値は 5 分です。
上述の設定に加えて、次の設定も指定できます。
<aem-install>/repository/datastore.
です。すべての設定を引用符で囲む必要があります。例:
accessKey="ASDASDERFAERAER"
secretKey="28932hfjlkwdo8fufsdfas\=\="
データストアのガベージコレクションプロセスは、データストア内の未使用のファイルを削除するために使用します。このプロセスによって、貴重なディスク領域が解放されます。
データストアのガベージコレクションを実行する手順は次のとおりです。
JMX コンソール(https://<serveraddress:port>/system/console/jmx)に移動します。
検索 RepositoryManagement。 Repository Manager MBean を見つけたら、それをクリックして使用可能なオプションを表示します。
ページの最後までスクロールし、 startDataStoreGC(boolean markOnly) リンク。
次に示すダイアログで markOnly
パラメーターに false
と入力して、「Invoke」をクリックします。
markOnly
パラメーターは、ガベージコレクションのスイープフェーズを実行するかどうかを示します。
(Mongo または Segment Tar を使用した)クラスター化または共有データストアの設定でガベージコレクションを実行すると、特定の BLOB ID を削除できないことに関する警告がログに表示される場合があります。 これは、以前のガベージコレクションで削除された Blob ID が、その ID が削除されたことを知らない他のクラスターまたは共有ノードによって誤って再度参照されることが原因で発生します。その結果、前回の実行時に既に削除された ID を、ガベージコレクションで再度削除しようとするので、警告がログに記録されます。この動作は、パフォーマンスや機能には影響しません。
新しいバージョンの AEM では、複数のリポジトリによって共有されるデータストアでもガベージコレクションを実行できます。共有データストアでデータストアのガベージコレクションを実行できるようにするには、次の手順に従います。
データストアのガベージコレクション用に設定されたメンテナンスタスクが、データストアを共有するすべてのリポジトリインスタンスで無効になっていることを確認します。
データストアを共有するすべてのリポジトリーインスタンスについて、バイナリガベージコレクションで指示されたステップを実行します。ただし、呼び出しボタンをクリックする前に必ず markOnly
パラメーターに対して true
を入力してください。
上記の手順をすべてのインスタンスで完了したら、次の手順でデータストアのガベージコレクションを再実行します。 任意 インスタンスの次の数に達します。
markOnly
パラメーターに再度 false
を入力してください。これにより、以前に使用したマークフェーズで見つかったすべてのファイルを照合して、未使用の残りのファイルがデータストアから削除されます。