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

MSRP について

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

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

要件

MongoDB 設定

MSRP の選択

ストレージ設定コンソールでは、デフォルトのストレージ設定を選択できます。これにより、使用するSRPの実装が識別されます。

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

  • グローバルナビゲーションから:ツール/コミュニティ/ストレージ設定

chlimage_1-28

  • MongoDBストレージリソースプロバイダー(MSRP)​を選択します

  • MongoDB 設定

    • MongoDB URI

      default:mongodb://localhost/?maxPoolSize=10&waitQueueMultiple=5&readPreference=secondaryPreferred

    • MongoDB データベース

      default:コミュニティ

    • MongoDB UGC コレクション

      default:content

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

      default: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](…/…/help/sites-deploying/storage-elements-in-aem-6.md)の[ストレージ要素も参照してください。

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 modeを使用すると、スタンドアロンモード(ローカルで1つの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を含む場合、デフォルトの構成のプロパティでMSRPをデフォルトプロバイダーとして定義する必要があります

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

既存のAEM Communities6.0サイトからアップグレードした場合、既存のUGCは、AEM Communities6.3にアップグレードした後、SRP APIに必要な構造に従うように変換する必要があります。

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

移行ツールは、AEM Social Communitiesの以前のバージョンからUGCを書き出すようにカスタマイズして、AEM Communities6.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インスタンスの再起動

リソース

このページ