現在表示中:

オフロードによって、トポロジ内の Experience Manager インスタンス間で処理タスクが配布されます。オフロードでは、特定の Experience Manager インスタンスを使用して、特定のタイプの処理を実行できます。処理を特化することによって、利用可能なサーバーリソースを最大限に使用できます。

オフロードは、Apache Sling Discovery および Sling JobManager の機能に基づきます。オフロードを使用するには、Experience Manager クラスターをトポロジに追加し、クラスターで処理するジョブトピックを特定します。クラスターは 1 つ以上の Experience Manager インスタンスで構成され、単一のインスタンスがクラスターと見なされます。

トポロジへのインスタンスの追加について詳しくは、トポロジの管理を参照してください。

このページでは、トポロジを作成してジョブを使用するように Experience Manager インスタンスを設定する方法について説明します。Java API を使用したジョブおよび JobConsumer の作成について詳しくは、オフロードのためのジョブの作成と使用を参照してください。

ジョブ配布

Sling JobManager と JobConsumer を使用して、トポロジ内で処理されるジョブを作成できます。

  • JobManager:特定のトピックのジョブを作成するサービス。 
  • JobConsumer:1 つ以上のトピックのジョブを実行するサービス。同じトピックに対して複数の JobConsumer サービスを登録できます。 

JobManager でジョブが作成されると、オフロードフレームワークによって、ジョブを実行するトポロジ内の Experience Manager クラスターが選択されます。

  • クラスターには、ジョブトピックに対して登録された JobConsumer を実行している 1 つ以上のインスタンスが含まれている必要があります。
  • トピックは、クラスター内の少なくとも 1 つのインスタンスに対して有効化されている必要があります。

ジョブ配布の調整について詳しくは、トピック使用の設定を参照してください。

オフロードフレームワークによってジョブを実行するクラスターが選択される際に、そのクラスターが複数のインスタンスで構成されていると、Sling 配布によってクラスター内のどのインスタンスがジョブを実行するかが決定されます。

ジョブペイロード

オフロードフレームワークでは、ジョブをリポジトリ内のリソースと関連付けるジョブペイロードがサポートされています。ジョブペイロードは、ジョブがリソースを処理するために作成されたり、別のコンピューターにオフロードされたりする場合に役立ちます。 

ジョブの作成時に、ペイロードはそのジョブを作成するインスタンスにのみ配置されることが保証されます。ジョブのオフロード時に、レプリケーションエージェントによって、ペイロードが最終的にジョブを使用するインスタンスで作成されます。ジョブ実行が完了すると、リバースレプリケーションによって、ペイロードのコピーがジョブを作成したインスタンスに戻されます。

トポロジの管理

トポロジは、オフロードに参加する疎結合された Experience Manager クラスターです。クラスターは 1 つ以上の Experience Manager サーバーインスタンスで構成されます(単一のインスタンスがクラスターと見なされます)。

各 Experience Manager インスタンスによって、以下のオフロード関連サービスが実行されます。

  • Discovery Service:トポロジに参加するために Topology Connector に要求を送信します。
  • Topology Connector:参加要求を受信し、各要求を承認または拒否します。

トポロジのすべてのメンバーの Discovery Service は、メンバーのうちの 1 つの Topology Connector を参照しています。以下の節では、このメンバーをルートメンバーと呼びます。

トポロジ内の各クラスターには、リーダーと認識されるインスタンスが含まれています。クラスターリーダーは、クラスターの他のメンバーの代わりにトポロジとやり取りします。リーダーがクラスターから外れると、クラスターの新しいリーダーが自動的に選択されます。

トポロジの表示

トポロジブラウザーを使用して、Experience Manager インスタンスが参加しているトポロジの状態を調べます。トポロジブラウザーには、トポロジのクラスターおよびインスタンスが表示されます。

クラスターごとに、クラスターメンバーのリストが表示されます。このリストには、各メンバーがクラスターに参加した順序と、どのメンバーがリーダーかが示されています。現在プロパティによって、現在管理しているインスタンスが示されます。 

クラスターの各インスタンスについて、複数のトポロジ関連プロパティを確認できます。

  • インスタンスの JobConsumer のトピックのホワイトリスト
  • トポロジとの接続用に公開されるエンドポイント
  • インスタンスがどのジョブトピックについてオフロード用に登録されているか
  • インスタンスによって処理されるジョブトピック 
  1. タッチ UI を使用して、「ツール」タブをクリックします(http://localhost:4502/tools.html)。

  2. Granite の操作エリアで、「オフロードするブラウザー」をクリックします。

  3. ナビゲーションパネルで、「トポロジブラウザー」をクリックします。

    トポロジに参加しているクラスターが表示されます。

  4. クラスターをクリックして、クラスターのインスタンスとそれらの ID、現在ステータスおよびリーダーステータスのリストを表示します。

  5. インスタンス ID をクリックして、詳細なプロパティを表示します。

Web コンソールを使用してトポロジ情報を表示することもできます。コンソールには、トポロジのクラスターに関するその他の情報が表示されます。

  • どのインスタンスがローカルインスタンスであるか
  • このインスタンスがトポロジに接続するために使用する Topology Connector サービス(送信)と、このインスタンスに接続するサービス(受信)
  • トポロジおよびインスタンスのプロパティの変更履歴

以下の手順を使用して、Web コンソールの Topology Management ページを開きます。

  1. ブラウザーで Web コンソールを開きます(http://localhost:4502/system/console)。

  2. Main/Topology Management をクリックします。

トポロジメンバーシップの設定

Experience Manager インスタンスとトポロジとのインタラクション方法を制御するために、Apache Sling のリソースベースの Discovery Service が各インスタンスで実行されます。

Discovery Service によって、トポロジとの接続を確立および維持するために、定期的な POST 要求(ハートビート)が Topology Connector サービスに送信されます。Topology Connector サービスでは、トポロジへの参加が許可される IP アドレスまたはホスト名のホワイトリストが維持されます。

  • インスタンスをトポロジに参加させるには、ルートメンバーの Topology Connector サービスの URL を指定します。 
  • インスタンスがトポロジに参加できるようにするには、ルートメンバーの Topology Connector サービスのホワイトリストにインスタンスを追加します。

Web コンソールまたは sling:OsgiConfig ノードを使用して、org.apache.sling.discovery.impt.Config サービスの以下のプロパティを設定します。

プロパティ名 OSGi 名 説明 デフォルト値
ハートビートタイムアウト(秒) heartbeatTimeout ターゲットのインスタンスを使用不可と見なすまでにハートビート応答を待機する時間(秒単位)。  20
ハートビート間隔(秒) heartbeatInterval ハートビート間の時間(秒単位)。 15
最小イベント遅延(秒) minEventDelay

トポロジに対して変更が発生したときに、TOPOLOGY_CHANGING から TOPOLOGY_CHANGED への状態の変更を遅延させる時間。状態が TOPOLOGY_CHANGING のときに発生する変更につき、この時間だけ遅延が大きくなります。

この遅延によって、リスナーに大量のイベントが送られるのを防ぎます。 

遅延を使用しない場合は、0 または負の数を指定します。

3
Topology Connector URL topologyConnectorUrls ハートビートメッセージを送信する Topology Connector サービスの URL。 http://localhost:4502/libs/sling/topology/connector
Topology Connector ホワイトリスト topologyConnectorWhitelist ローカル Topology Connector サービスによってトポロジ内で許可される IP アドレスまたはホスト名のリスト。 

localhost

127.0.0.1

リポジトリ記述子名 leaderElectionRepositoryDescriptor   <値なし>

以下の手順を使用して、CQ インスタンスをトポロジのルートメンバーに接続します。この手順では、インスタンスがルートトポロジメンバーの Topology Connector URL を指すようにします。この手順をトポロジのすべてのメンバーで実行します。

  1. ブラウザーで Web コンソールを開きます(http://localhost:4502/system/console)。

  2. Main/Topology Management をクリックします。

  3. 「 Configure Discovery Service」をクリックします。

  4. Topology Connector URL プロパティに項目を追加し、ルートトポロジメンバーの Topology Connector サービスの URL を指定します。URL の形式は、http://rootservername:4502/libs/sling/topology/connector です。

トポロジのルートメンバーで以下の手順を実行します。この手順では、その Discovery Service ホワイトリストに他のトポロジメンバーの名前を追加します。

  1. ブラウザーで Web コンソールを開きます(http://localhost:4502/system/console)。

  2. Main/Topology Management をクリックします。

  3. 「 Configure Discovery Service」をクリックします。

  4. トポロジの各メンバーについて、Topology Connector ホワイトリストプロパティに項目を追加し、トポロジメンバーのホスト名または IP アドレスを指定します。

トピック使用の設定

オフロードするブラウザーを使用して、トポロジ内の Experience Manager インスタンスのトピック使用を設定します。インスタンスごとに、使用するトピックを指定できます。例えば、1 つのインスタンスのみが特定のタイプのトピックを使用するようにトポロジを設定するには、その 1 つのインスタンスを除くすべてのインスタンスでそのトピックを無効にします。

ジョブは、ラウンドロビンロジックを使用して、関連するトピックが有効なインスタンス間で配布されます。

  1. タッチ UI を使用して、「ツール」タブをクリックします(http://localhost:4502/tools.html)。

  2. Granite の操作エリアで、「オフロードするブラウザー」をクリックします。

  3. ナビゲーションパネルで、「オフロードするブラウザー」をクリックします。

    オフロードトピックと、トピックを使用できるサーバーインスタンスが表示されます。

  4. インスタンスのトピック使用を無効にするには、トピック名の下で、インスタンスの横の「無効にする」をクリックします。

  5. あるインスタンスのすべてのトピック使用を設定するには、トピックの下にあるインスタンス識別子をクリックします。 

  6. トピックの横にある以下のボタンのいずれかをクリックし、インスタンスの使用動作を設定して、「保存」をクリックします。

    • 有効:このインスタンスはこのトピックのジョブを使用します。 
    • 無効:このインスタンスはこのトピックのジョブを使用しません。 
    • 排他:このインスタンスはこのトピックのみのジョブを使用します。 

    注意:あるトピックに対して「排他」を選択すると、他のすべてのトピックは自動的に「無効」に設定されます。

インストール済みの JobConsumer

複数の JobConsumer 実装が Experience Manager とともにインストールされます。これらの JobConsumer が登録されているトピックが、オフロードするブラウザーに表示されます。表示されるその他のトピックは、カスタム JobConsumer で登録されたトピックです。以下の表に、デフォルトの JobConsumer を示します。

ジョブトピック サービス PID 説明
/ org.apache.sling.event.impl.jobs.deprecated.EventAdminBridge Apache Sling とともにインストールされます。下位互換性のために、OSGi イベント管理によって生成されたジョブを処理します。
com/day/cq/replication/job/* com.day.cq.replication.impl.AgentManagerImpl ジョブペイロードをレプリケートするレプリケーションエージェント。
com/adobe/granite/workflow/offloading com.adobe.granite.workflow.core.offloading.WorkflowOffloadingJobConsumer DAM アセット更新オフローダーワークフローによって生成されたジョブを処理します。

インスタンスのトピックの無効化と有効化

Apache Sling JobConsumer Manager サービスによって、トピックのホワイトリストおよびブラックリストのプロパティが提供されます。これらのプロパティを設定して、Experience Manager インスタンスでの特定のトピックの処理を有効または無効にします。 

注意:インスタンスがトポロジに属している場合は、トポロジ内の任意のコンピューターでオフロードするブラウザーを使用して、トピックを有効または無効にすることもできます。

有効なトピックのリストを作成するロジックでは、最初にホワイトリストにあるすべてのトピックが許可されてから、ブラックリストにあるトピックが削除されます。デフォルトでは、すべてのトピックが有効であり(ホワイトリストの値は *)、無効なトピックはありません(ブラックリストには値なし)。

Web コンソールまたは sling:OsgiConfig ノードを使用して、以下のプロパティを設定します。sling:OsgiConfig ノードの場合、JobConsumer Manager サービスの PID は、org.apache.sling.event.impl.jobs.JobConsumerManager です。

Web コンソールでのプロパティ名 OSGi ID 説明
トピックホワイトリスト job.consumermanager.whitelist ローカル JobManager サービスによって処理されるトピックのリスト。デフォルト値の * では、すべてのトピックが登録済み TopicConsumer サービスに送信されます。
トピックブラックリスト job.consumermanager.blacklist ローカル JobManager サービスによって処理されないトピックのリスト。 

オフロードのレプリケーションエージェントの作成

オフロードフレームワークでは、作成者とワーカー間のリソースの転送にレプリケーションが使用されます。インスタンスがトポロジに参加すると、オフロードフレームワークによってレプリケーションエージェントが自動的に作成されます。エージェントはデフォルト値を使用して作成されます。エージェントが認証に使用するパスワードを手動で変更する必要があります。 

警告:

自動的に生成されるレプリケーションエージェントには既知の問題があるので、新しいレプリケーションエージェントを手動で作成する必要があります。オフロードのエージェントを作成する前に、自動生成されたレプリケーションエージェントの使用に関する問題の手順に従ってください。

オフロードのためにインスタンス間でジョブペイロードを転送するレプリケーションエージェントを作成します。以下の図に、作成者からワーカーインスタンスへのオフロードに必要なエージェントを示します。オーサーの Sling ID は 1、ワーカーインスタンスの Sling ID は 2 です。

この設定では、以下の 3 つのエージェントが必要です。

  1. ワーカーインスタンスへレプリケートする、オーサーインスタンス上の送信エージェント
  2. ワーカーインスタンス上のアウトボックスから引き出す、オーサーインスタンス上のリバースエージェント
  3. ワーカーインスタンス上のアウトボックスエージェント

このレプリケーションスキームは、オーサーインスタンスとパブリッシュインスタンスの間で使用されるものと同様です。ただし、オフロードの場合は、関係するすべてのインスタンスはオーサーインスタンスです。 

 

注意:

オフロードフレームワークでは、トポロジを使用してオフロードインスタンスの IP アドレスが取得されます。次に、これらの IP アドレスに基づいて、レプリケーションエージェントが自動的に作成されます。オフロードインスタンスの IP アドレスが後で変更された場合、変更はインスタンスの再起動後にトポロジ上で自動的に伝播されます。ただし、オフロードフレームワークでは、新しい IP アドレスを反映するようにレプリケーションエージェントが自動的に更新されることはありません。この状況を回避するには、トポロジ内のすべてのインスタンスに固定 IP アドレスを使用します。 

オフロードのレプリケーションエージェントの命名

オフロードフレームワークによって特定のワーカーインスタンスに対して適切なエージェントが自動的に使用されるように、レプリケーションエージェントの「名前」プロパティに特定のフォーマットを使用します。

オーサーインスタンスの送信エージェントの命名:

offloading_<slingid>(ここで、<slingid> は、ワーカーインスタンスの Sling ID です)。

例:offloading_f5c8494a-4220-49b8-b079-360a72f71559

オーサーインスタンスのリバースエージェントの命名:

offloading_reverse_<slingid>(ここで、<slingid> は、ワーカーインスタンスの Sling ID です)。

例:offloading_reverse_f5c8494a-4220-49b8-b079-360a72f71559

ワーカーインスタンスのアウトボックスの命名:

offloading_outbox

送信エージェントの作成

  1. オーサーでレプリケーションエージェントを作成します(レプリケーションエージェントのドキュメントを参照)。任意のタイトルを指定します。名前は、命名規則に従って指定する必要があります。

  2. 以下のプロパティを使用してエージェントを作成します。

    プロパティ
    設定/シリアル化の種類 デフォルト
    トランスポート/トランスポート URI http://<ip of target instance>:<port>/bin/receive?sling:authRequestLogin=1
    トランスポート/トランスポートユーザー ターゲットインスタンスのレプリケーションユーザー
    トランスポート/トランスポートパスワード ターゲットインスタンスのレプリケーションユーザーパスワード
    拡張/HTTP メソッド POST
    トリガー/デフォルトを無視 True

リバースエージェントの作成

  1. オーサーでリバースレプリケーションエージェントを作成します(レプリケーションエージェントのドキュメントを参照)。任意のタイトルを指定します。 名前は、命名規則に従って指定する必要があります。

  2. 以下のプロパティを使用してエージェントを作成します。

    プロパティ
    設定/シリアル化の種類 デフォルト
    トランスポート/トランスポート URI http://<ip of target instance>:<port>/bin/receive?sling:authRequestLogin=1
    トランスポート/トランスポートユーザー ターゲットインスタンスのレプリケーションユーザー
    トランスポート/トランスポートパスワード ターゲットインスタンスのレプリケーションユーザーパスワード
    拡張/HTTP メソッド GET

アウトボックスエージェントの作成

  1. ワーカーインスタンスでレプリケーションエージェントを作成します(レプリケーションエージェントのドキュメントを参照)。任意のタイトルを指定します。名前は、offloading_outbox にする必要があります。

  2. 以下のプロパティを使用してエージェントを作成します。

    プロパティ
    設定/シリアル化の種類 デフォルト
    トランスポート/トランスポート URI repo://var/replication/outbox
    トリガー/デフォルトを無視 True

Sling ID の検索

以下のいずれかの方法を使用して、Experience Manager インスタンスの Sling ID を取得します。

  • Web コンソールを開き、Sling 設定で、Sling ID プロパティの値を検索します(http://localhost:4502/system/console/status-slingsettings)。この方法は、インスタンスがまだトポロジの一部ではない場合に役立ちます。
  • インスタンスが既にトポロジの一部である場合は、トポロジブラウザーを使用します。

DAM アセットの処理のオフロード

DAM で追加または更新されたアセットのバックグラウンド処理が特定のインスタンスによって実行されるように、トポロジのインスタンスを設定します。

デフォルトでは、DAM アセットが変更されるか DAM に追加されると、Experience Manager によって DAM アセット更新ワークフローが実行されます。Experience Manager によって DAM アセット更新オフローダーワークフローが実行されるように、デフォルトの動作を変更します。このワークフローによって、com/adobe/granite/workflow/offloading というトピックを持つ JobManager ジョブが生成されます。次に、ジョブが専用のワーカーにオフロードされるようにトポロジを設定します。

以下の手順では、次の特徴を持つオフロードトポロジを想定しています。

  • 1 つ以上の Experience Manager インスタンスがオーサーインスタンスであり、ユーザーは DAM アセットの追加または更新のためにこのインスタンスとやり取りします。
  • ユーザーは、DAM アセットを処理する 1 つ以上の Experience Manager インスタンスと直接的にはやり取りしません。これらのインスタンスは、DAM アセットのバックグラウンド処理専用です。
  1. 各 Experience Manager インスタンスで、ルート Topology Connector を指すように Discovery Service を設定します(トポロジメンバーシップの設定を参照)。

  2. 接続するインスタンスをホワイトリストが含まれるようにルート Topology Connector を設定します。 

  3. オフロードするブラウザーを開き、DAM アセットをアップロードまたは変更するためにユーザーがやり取りするインスタンスで com/adobe/granite/workflow/offloading トピックを無効にします。

  4. DAM アセットをアップロードまたは変更するためにユーザーがやり取りする各インスタンスで、DAM アセット更新オフロードワークフローを使用するようにワークフローランチャーを設定します。

    1. ワークフローコンソールを開きます(localhost:4502:/libs/cq/workflow/content/console.html)。
    2. 「ランチャー」タブをクリックします。
    3. DAM アセット更新ワークフローを実行する 2 つのランチャー設定を見つけます。ランチャー設定イベントタイプの 1 つは Node Created、もう 1 つのタイプは Node Modified です。
    4. DAM アセット更新オフロードワークフローが実行されるように、両方のイベントタイプを変更します(ランチャーの設定について詳しくは、ノード変更時のワークフローの開始を参照してください)。
  5. DAM アセットのバックグラウンド処理を実行するインスタンスで、DAM アセット更新ワークフローを実行するワークフローランチャーを無効にします。 

オフロードに関する既知の問題

以下の問題は、オフロードフレームワークの動作に関連します。

オフラインでの作業

すべてのインスタンスが同じコンピューター上で異なるポートを使用して実行される場合には、ネットワークインターフェイスを使用しないでオフロードを使用できます。この状態は、デモンストレーションまたは開発に役立ちます。この状態を有効にするには、コンピューター名として localhost を使用してすべての IP アドレスおよび URL を設定します。

オフロードをオフラインで使用するには、最初に、IP アドレスとして localhost を使用してレプリケーションエージェントが作成されるように、コンピューターがオフラインのときに Experience Manager インスタンスを起動する必要があります。コンピューターが後でオンラインになった場合に、localhost の使用によって正しい動作が行われます。

最初に、コンピューターにネットワークインターフェイスがあるときにインスタンスを起動すると、コンピューターの IP アドレスがレプリケーションエージェントのプロパティで使用されます。後でオフラインになった場合に、レプリケーションエージェントは正しく機能しません。

自動生成されたレプリケーションエージェントの使用に関する問題

デフォルトでは、作成者とオフロードワーカー間のリソース転送のために、オフロードフレームワークによってレプリケーションエージェントが自動的に作成されます。これらのエージェントは、Granite レプリケーションエージェント UI を使用して管理されることが想定されているため、Experience Manager レプリケーションエージェントコンソールには表示されません。Granite レプリケーションエージェント UI の制限により、レプリケーションエージェントを完全に管理することはできません。そのため、Experience Manager レプリケーションコンソールを使用し、以下の手順を使用して次の変更を実装する必要があります。

  • レプリケーションエージェントの自動作成を無効にします。
  • 自動作成されたエージェントを削除します。
  • オフロードフレームワークで必要なエージェントを手動で作成します。
  1. オフロードのレプリケーションエージェントの自動作成を無効にするには、トポロジ内の各コンピューターで、CRXDE Lite を使用して /libs/granite/offloading/config.author/com.adobe.granite.offloading.impl.transporter.OffloadingAgentManager ノードを削除します。

  2. トポロジ内のすべてのインスタンスで、CRXDE Lite を使用して /etc/replication/agents.author の下のすべてのレプリケーションエージェントノードを削除します。ノード名には、必要な命名規則に従って offloading_ というプレフィックスが付けられています。

  3. オフロードレプリケーションエージェントを手動で作成するには、オフロードのレプリケーションエージェントの作成の手順を使用します。

本作品は Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License によってライセンス許可を受けています。  Twitter™ および Facebook の投稿には、Creative Commons の規約内容は適用されません。

法律上の注意   |   プライバシーポリシー