オフロードによって、トポロジ内の Experience Manager インスタンス間で処理タスクが配布されます。オフロードでは、特定の Experience Manager インスタンスを使用して、特定のタイプの処理を実行できます。処理を特化することによって、利用可能なサーバーリソースを最大限に使用できます。
オフロードは、Apache Sling Discovery および Sling JobManager の機能に基づきます。オフロードを使用するには、Experience Manager クラスターをトポロジに追加し、クラスターで処理するジョブトピックを特定します。クラスターは 1 つ以上の Experience Manager インスタンスで構成され、単一のインスタンスがクラスターと見なされます。
トポロジへのインスタンスの追加について詳しくは、トポロジの管理を参照してください。
Sling JobManager と JobConsumer を使用して、トポロジ内で処理されるジョブを作成できます。
JobManager でジョブが作成されると、オフロードフレームワークによって、ジョブを実行するトポロジ内の Experience Manager クラスターが選択されます。
ジョブ配布の調整について詳しくは、トピック使用の設定を参照してください。
オフロードフレームワークによってジョブを実行するクラスターが選択される際に、そのクラスターが複数のインスタンスで構成されていると、Sling 配布によってクラスター内のどのインスタンスがジョブを実行するかが決定されます。
オフロードフレームワークでは、ジョブをリポジトリ内のリソースと関連付けるジョブペイロードがサポートされています。ジョブペイロードは、ジョブがリソースを処理するために作成されたり、別のコンピューターにオフロードされたりする場合に役立ちます。
ジョブの作成時に、ペイロードはそのジョブを作成するインスタンスにのみ配置されることが保証されます。ジョブのオフロード時に、レプリケーションエージェントによって、ペイロードが最終的にジョブを使用するインスタンスで作成されます。ジョブ実行が完了すると、リバースレプリケーションによって、ペイロードのコピーがジョブを作成したインスタンスに戻されます。
トポロジは、オフロードに参加する疎結合された Experience Manager クラスターです。クラスターは 1 つ以上の Experience Manager サーバーインスタンスで構成されます(単一のインスタンスがクラスターと見なされます)。
各 Experience Manager インスタンスによって、以下のオフロード関連サービスが実行されます。
トポロジのすべてのメンバーの Discovery Service は、メンバーのうちの 1 つの Topology Connector を参照しています。以下の節では、このメンバーをルートメンバーと呼びます。
トポロジ内の各クラスターには、リーダーと認識されるインスタンスが含まれています。クラスターリーダーは、クラスターの他のメンバーの代わりにトポロジとやり取りします。リーダーがクラスターから外れると、クラスターの新しいリーダーが自動的に選択されます。
トポロジブラウザーを使用して、Experience Manager インスタンスが参加しているトポロジの状態を調べます。トポロジブラウザーには、トポロジのクラスターおよびインスタンスが表示されます。
クラスターごとに、クラスターメンバーのリストが表示されます。このリストには、各メンバーがクラスターに参加した順序と、どのメンバーがリーダーかが示されています。現在プロパティによって、現在管理しているインスタンスが示されます。
クラスターの各インスタンスについて、複数のトポロジ関連プロパティを確認できます。
タッチ UI を使用して、「ツール」タブをクリックします(http://localhost:4502/tools.html)
Granite の操作エリアで、「オフロードするブラウザー」をクリックします。
ナビゲーションパネルで、「トポロジブラウザー」をクリックします。
トポロジに参加しているクラスターが表示されます。
クラスターをクリックして、クラスターのインスタンスとそれらの ID、現在ステータスおよびリーダーステータスのリストを表示します。
インスタンス ID をクリックして、詳細なプロパティを表示します。
Web コンソールを使用してトポロジ情報を表示することもできます。コンソールには、トポロジのクラスターに関するその他の情報が表示されます。
以下の手順を使用して、Web コンソールのトポロジ管理ページを開きます。
ブラウザーで Web コンソールを開きます(http://localhost:4502/system/console)
Main/Topology Management をクリックします。
Experience Manager インスタンスとトポロジとのインタラクション方法を制御するために、Apache Sling のリソースベースの Discovery Service が各インスタンスで実行されます。
Discovery Service によって、トポロジとの接続を確立および維持するために、定期的な POST 要求(ハートビート)が Topology Connector サービスに送信されます。Topology Connector サービスでは、トポロジへの参加が許可される IP アドレスまたはホスト名の許可リストを維持管理します。
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 を指すようにします。この手順をトポロジのすべてのメンバーで実行します。
トポロジのルートメンバーで以下の手順を実行します。この手順では、ルートメンバーの Discovery Service 許可リストに他のトポロジメンバーの名前を追加します。
オフロードするブラウザーを使用して、トポロジ内の Experience Manager インスタンスのトピック使用を設定します。インスタンスごとに、使用するトピックを指定できます。例えば、1 つのインスタンスのみが特定のタイプのトピックを使用するようにトポロジを設定するには、その 1 つのインスタンスを除くすべてのインスタンスでそのトピックを無効にします。
ジョブは、ラウンドロビンロジックを使用して、関連するトピックが有効なインスタンス間で配布されます。
タッチ UI を使用して、「ツール」タブをクリックします(http://localhost:4502/tools.html)
Granite の操作エリアで、「オフロードするブラウザー」をクリックします。
ナビゲーションパネルで、「オフロードするブラウザー」をクリックします。
オフロードトピックと、トピックを使用できるサーバーインスタンスが表示されます。
インスタンスのトピック使用を無効にするには、トピック名の下で、インスタンスの横の「無効にする」をクリックします。
あるインスタンスのすべてのトピック使用を設定するには、トピックの下にあるインスタンス識別子をクリックします。
トピックの横にある以下のボタンのいずれかをクリックし、インスタンスの使用動作を設定して、「保存」をクリックします。
注意:あるトピックに対して「排他」を選択すると、他のすべてのトピックは自動的に「無効」に設定されます。
複数の 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 つのエージェントが必要です。
このレプリケーションスキームは、オーサーインスタンスとパブリッシュインスタンスの間で使用されるものと同様です。ただし、オフロードの場合は、関係するすべてのインスタンスはオーサーインスタンスです。
オフロードフレームワークでは、トポロジを使用してオフロードインスタンスの 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
の作成 レプリケーションエージェント 作成者の( レプリケーションエージェントのドキュメント) をクリックします。 任意を指定 タイトル.この 名前 命名規則に従う必要があります。
以下のプロパティを使用してエージェントを作成します。
プロパティ | 値 |
---|---|
設定/シリアル化の種類 | デフォルト |
トランスポート/トランスポート URI | https://<ip of target instance> :<port> /bin/receive?sling:authRequestLogin=1 |
トランスポート/トランスポートユーザー | ターゲットインスタンスのレプリケーションユーザー |
トランスポート/トランスポートパスワード | ターゲットインスタンスのレプリケーションユーザーパスワード |
拡張/HTTP メソッド | POST |
トリガー/デフォルトを無視 | True |
の作成 リバースレプリケーションエージェント 作成者の( レプリケーションエージェントのドキュメント.) 任意の タイトル.この 名前 命名規則に従う必要があります。
以下のプロパティを使用してエージェントを作成します。
プロパティ | 値 |
---|---|
設定/シリアル化の種類 | デフォルト |
トランスポート/トランスポート URI | https://<ip of target instance> :<port> /bin/receive?sling:authRequestLogin=1 |
トランスポート/トランスポートユーザー | ターゲットインスタンスのレプリケーションユーザー |
トランスポート/トランスポートパスワード | ターゲットインスタンスのレプリケーションユーザーパスワード |
拡張/HTTP メソッド | GET |
の作成 レプリケーションエージェント (ワーカーインスタンス上)( レプリケーションエージェントのドキュメント.) 任意の タイトル.この 名前 は、 offloading_outbox
.
以下のプロパティを使用してエージェントを作成します。
プロパティ | 値 |
---|---|
設定/シリアル化の種類 | デフォルト |
トランスポート/トランスポート URI | repo://var/replication/outbox |
トリガー/デフォルトを無視 | True |
以下のいずれかの方法を使用して、Experience Manager インスタンスの Sling ID を取得します。
DAM で追加または更新されたアセットのバックグラウンド処理が特定のインスタンスによって実行されるように、トポロジのインスタンスを設定します。
デフォルトでは、DAM アセットが変更されるか DAM に追加されると、Experience Manager によって DAM アセット更新ワークフローが実行されます。Experience Manager によって DAM アセット更新オフローダーワークフローが実行されるように、デフォルトの動作を変更します。このワークフローは、次のトピックを持つ JobManager ジョブを生成します: com/adobe/granite/workflow/offloading
. 次に、ジョブが専用のワーカーにオフロードされるようにトポロジを設定します。
ワークフローのオフロードで使用する場合、ワークフローを一時的にしないでください。 例えば、アセットのオフロードに対して使用するときに DAM アセット更新ワークフローを一時的にすることはできません。ワークフローの一時的なフラグを設定/設定解除するには、 一時的なワークフロー.
以下の手順では、次の特徴を持つオフロードトポロジを想定しています。
各 Experience Manager インスタンスで、ルート Topology Connector を指すように Discovery Service を設定します(トポロジメンバーシップの設定を参照)。
接続するインスタンスが許可リストに含まれるように、ルート Topology Connector を設定します。
オフロードブラウザーを開き、 com/adobe/granite/workflow/offloading
DAM アセットをアップロードまたは変更するためにユーザーがやり取りするインスタンスに関するトピック。
DAM アセットをアップロードまたは変更するためにユーザーがやり取りする各インスタンスで、DAM アセット更新オフロードワークフローを使用するようにワークフローランチャーを設定します。
DAM アセットのバックグラウンド処理を実行するインスタンスで、DAM アセット更新ワークフローを実行するワークフローランチャーを無効にします。
このページで説明した詳細以外に、以下を参照することもできます。