MSRP - MongoDB ストレージリソースプロバイダー

MSRP について

AEM CommunitiesがMSRPを共通ストアとして使用するように設定されている場合、同期やレプリケーションを必要とせずに、すべてのオーサーインスタンスとパブリッシュインスタンスからユーザー生成コンテンツ(UGC)にアクセスできます。

SRP オプションの特性推奨されるトポロジも参照してください。

要件

MongoDB 設定

MSRP の選択

ストレージ設定コンソールでは、使用するSRPの実装を指定するデフォルトのストレージ設定を選択できます。

オーサー環境でストレージ設定コンソールにアクセスするには:

  • グローバルナビゲーションから、ツール / コミュニティ / ストレージ設定​を選択します。

msrp

  • MongoDB Storage Resource Provider (MSRP)​を選択します。

  • MongoDB 設定

    • MongoDB URI

      デフォルト:mongodb://localhost/?maxPoolSize=10&waitQueueMultiple=5&readPreference=secondaryPreferred

    • MongoDB データベース

      デフォルト:communities

    • MongoDB UGC コレクション

      デフォルト:コンテンツ

    • MongoDB 添付ファイルコレクション

      デフォルト:attachments

  • SolrConfiguration

    • 🔗Zookeeper ホスト

      SolrCloudモードで外部のZooKeeperと実行する場合は、my.server.com:2181​のように、ZooKeeperのHOST:PORTにこの値を設定します。

      ZooKeeperアンサンブルの場合は、host1:2181,host2:2181​のように、コンマ区切りのHOST:PORT値を入力します。

      内部のZooKeeperを使用してSolrをスタンドアロンモードで実行する場合は、空のままにします。
      デフォルト: <blank>

      • Solr URL​スタンドアロンモードで Solr と通信するために使用する URL。SolrCloud モードで実行している場合は、空白のままにします。

        デフォルト:https://127.0.0.1:8983/solr/

      • Solr コレクション​Solr コレクションの名前。

        デフォルト:collection1

  • 送信」を選択します。

メモ

mongoDB データベース(デフォルトの名前は communities)を、ノードストアまたはデータ(バイナリ)ストアで使用されているデータベースの名前に設定することはできません。AEM 6.5のストレージ要素も参照してください。

MongoDB レプリカセット

本番環境では、プライマリ・セカンダリ・レプリケーションと自動フェイルオーバーを実装するMongoDBサーバーのクラスタであるレプリカ・セットを設定することを強くお勧めします。

レプリカセットについて詳しくは、MongoDB の レプリケーションに関するドキュメントを参照してください。

レプリカセットの操作と、アプリケーションと MongoDB のインスタンスとの間の接続を定義する方法については、MongoDB の接続文字列の URI フォーマットに関するドキュメントを参照してください。

レプリカセットに接続するための URL の例

# Example url for:
# servers "mongoserver1", "mongoserver2", "mongoserver3"
# replica set 'rs0'
# port numbers only necessary if not default port 27017
mongodb://mongoserver1:<mongoport1>,mongoserver2:<mongoport2>,mongoserver3:<mongoport3>/?replicaSet=rs0&maxPoolSize=100&waitQueueMultiple=50&readPreference=secondaryPreferred

Solr 設定

別々のコレクションを使用することで、1 つの Solr をノードストア(Oak)と共通ストア(MSRP)の間で共有できます。

Oak と MSRP のコレクションがどちらも高頻度で使用される場合は、パフォーマンス上の理由から 2 つ目の Solr をインストールすることもできます。

実稼動環境では、SolrCloudモードを使用すると、スタンドアロンモード(単一のローカルSolr設定)よりもパフォーマンスが向上します。

設定について詳しくは、SRP 用の Solr 設定を参照してください。

アップグレード

MSRPを使用して設定した以前のバージョンからアップグレードする場合は、次の操作が必要です。

  1. AEM Communitiesにアップグレードする
  2. 新しいSolr設定ファイルのインストール
  3. MSRPの再インデックス
    MSRPインデックス再作成ツールを参照してください。

設定の公開

すべてのオーサーインスタンスとパブリッシュインスタンスで、MSRP が共通ストアとして指定されている必要があります。

パブリッシュ環境で同じ設定を使用できるようにするには、オーサーインスタンスにログインし、次の手順に従います。

  • メインメニューから​ツール > 操作 > レプリケーション​に移動します。
  • ツリーをアクティブ化」を選択します。
  • 開始パス:
    • /etc/socialconfig/srpc/を参照します。
  • アクティブ化​を選択します。

ユーザーデータの管理

パブリッシュ環境で頻繁に入力されるユーザー、ユーザープロファイルおよびユーザーグループについては、以下を参照してください。​**

MSRP インデックス再作成ツール

新しい設定ファイルをインストールしたり、Solr のインデックスを修復したりするときは、MSRP 用の Solr のインデックス再作成用の HTTP エンドポイントを使用できます。

このツールでは、MongoDB が MSRP の情報源になるので、バックアップを取るときは MongoDB だけで十分です。**

UGCツリー全体のインデックスを再作成するか、*path *dataパラメーターで指定された特定のサブツリーのみを再インデックスできます。

このツールは、コマンドラインから cURL などの HTTP ツールを使用して実行できます。

インデックスを再作成する場合、メモリとパフォーマンスの間にトレードオフがあります。このトレードオフは*batchSize *dataパラメーターで制御し、バッチごとにインデックスを再作成するUGCレコードの数を指定します。

適切なデフォルト値は 5000 です。

  • メモリに問題がある場合は、より小さい数値を指定します
  • 速度が問題の場合は、速度を上げるために大きい数を指定します

cURL コマンドを使用した MSRP インデックス再作成ツールの実行

以下に示す cURL コマンドは、MSRP に格納されている UGC のインデックス再作成の HTTP リクエストに必要なコマンドです。

基本的な形式は以下のとおりです。

cURL -u signin -d data reindex-url

signin = administrator-id:password例:admin:admin

data = "batchSize=size &path=path"

size =操作ごとに再インデックスするUGCエントリの数
/content/usergenerated/asi/mongo/

path =インデックスを再作成するUGCツリーのルート位置

  • すべてのUGCのインデックスを再作成するには、のasipathプロパティの値を指定します。
    /etc/socialconfig/srpc/defaultconfiguration
  • インデックスを一部のUGCに制限するには、asipathのサブツリーを指定します。

reindex-url = SRPのインデックス再作成のエンドポイント
http://localhost:4503/services/social/datastore/mongo/reindex

メモ

DSRP Solrのインデックスを再作成する場合、URLは​**/services/social/datastore/rdb/reindex**​です。

MSRP インデックス再作成の例

curl -s -u admin:admin -d 'batchSize=10000&path=/content/usergenerated/asi/mongo/' http://localhost:4503/services/social/datastore/mongo/reindex

MSRP のデモの実行方法

MSRP をデモ用に設定するには、MongoDB をデモ用に設定する方法を参照してください。

トラブルシューティング

UGC が MongoDB で表示されない

ストレージオプションの設定を確認し、MSRP がデフォルトのプロバイダーに設定されているかを確認してください。デフォルトでは、ストレージリソースプロバイダーはJSRPです。

すべてのオーサーインスタンスとパブリッシュAEMインスタンスで、ストレージ設定コンソールに再度アクセスするか、AEMリポジトリを確認します。

  • JCRで、 /etc/socialconfig

    • srpcノードが含まれない場合は、ストレージプロバイダーがJSRPであることを意味します。
    • srpcノードが存在し、ノードdefaultconfigurationが含まれる場合は、defaultconfigurationのプロパティでMSRPがデフォルトのプロバイダーとして定義されている必要があります。

アップグレード後に UGC が表示されない

既存のAEM Communities 6.0サイトからアップグレードする場合は、AEM Communities 6.3にアップグレードした後、既存のUGCを、SRP APIに必要な構造に合わせて変換する必要があります。

GitHubには、この目的で利用できるオープンソースツールがあります。

移行ツールは、AEM Social Communitiesの以前のバージョンからUGCを書き出してAEM Communities 6.1以降に読み込むようにカスタマイズできます。

エラー - undefined field provider_id

以下のエラーがログに表示された場合は、Solr スキーマファイルが適切に設定されていません。

JsonMappingException: undefined field provider_id

Caused by: com.fasterxml.jackson.databind.JsonMappingException: undefined field provider_id
at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:129)
at com.fasterxml.jackson.databind.ObjectMapper.writeValue(ObjectMapper.java:1819)
at com.adobe.cq.social.scf.core.BaseSocialComponent.toJSONString(BaseSocialComponent.java:196)
... 124 common frames omitted

このエラーを解決するには、標準の MLS のインストールをおこなったときに、以下を実行したか確認してください。:

  • XML設定ファイルが正しいSolrの場所にコピーされました。
  • 新しい設定ファイルを既存のファイルと置き換えた後に Solr を再起動した.

MongoDB へのセキュア接続が失敗する

MongoDB サーバーへのセキュア接続の試みが、クラス定義が見つからないという理由で失敗する場合は、MongoDB ドライバーバンドル mongo-java-driver(公開されている maven リポジトリで入手可能)を更新する必要があります。

  1. https://search.maven.org/#artifactdetails%7Corg.mongodb%7Cmongo-java-driver%7C2.13.2%7Cjar(バージョン2.13.2以降)からドライバをダウンロードします。
  2. バンドルをAEMインスタンスの「crx-quickstart/install」フォルダーにコピーします。
  3. AEM インスタンスを再起動します。

リソース

このページ