ジョブのオフロード offloading-jobs
はじめに introduction
オフロードによって、トポロジ内の Experience Manager インスタンス間で処理タスクが配布されます。オフロードを使用すると、特定の Experience Manager インスタンスを使用して特定のタイプの処理を実行できます。特殊化した処理により、使用可能なサーバーリソースの使用を最大限に活用できます。
オフロードは、Apache Sling Discovery および Sling JobManager の機能に基づきます。オフロードを使用するには、Experience Manager クラスターをトポロジに追加し、クラスターで処理するジョブトピックを特定します。クラスターは 1 つ以上の Experience Manager インスタンスで構成され、単一のインスタンスがクラスターと見なされます。
トポロジへのインスタンスの追加について詳しくは、トポロジの管理を参照してください。
ジョブ配布 job-distribution
Sling JobManager と JobConsumer を使用して、トポロジ内で処理されるジョブを作成できます。
- JobManager:特定のトピックのジョブを作成するサービス。
- JobConsumer:1 つ以上のトピックのジョブを実行するサービス。同じトピックに対して複数の JobConsumer サービスを登録できます。
JobManager でジョブが作成されると、オフロードフレームワークによって、ジョブを実行するトポロジ内の Experience Manager クラスターが選択されます。
- クラスターには、ジョブトピックに対して登録された JobConsumer を実行している 1 つ以上のインスタンスが含まれている必要があります。
- トピックは、クラスター内の少なくとも 1 つのインスタンスに対して有効化されている必要があります。
ジョブ配布の調整について詳しくは、トピック使用の設定を参照してください。
オフロードフレームワークによってジョブを実行するクラスターが選択される際に、そのクラスターが複数のインスタンスで構成されていると、Sling 配布によってクラスター内のどのインスタンスがジョブを実行するかが決定されます。
ジョブペイロード job-payloads
オフロードフレームワークでは、ジョブをリポジトリ内のリソースと関連付けるジョブペイロードがサポートされています。ジョブペイロードは、ジョブがリソースを処理するために作成されたり、別のコンピューターにオフロードされたりする場合に役立ちます。
ジョブの作成時に、ペイロードはそのジョブを作成するインスタンスにのみ配置されることが保証されます。ジョブのオフロード時に、レプリケーションエージェントによって、ペイロードが最終的にジョブを使用するインスタンスで作成されます。ジョブ実行が完了すると、リバースレプリケーションによって、ペイロードのコピーがジョブを作成したインスタンスに戻されます。
トポロジの管理 administering-topologies
トポロジは、オフロードに使用される疎結合の Experience Manager クラスターです。クラスターは 1 つ以上の Experience Manager サーバーインスタンスで構成されます(単一のインスタンスがクラスターと見なされます)。
各 Experience Manager インスタンスによって、以下のオフロード関連サービスが実行されます。
- Discovery Service:トポロジに参加するために Topology Connector にリクエストを送信します。
- Topology Connector:参加リクエストを受信し、各リクエストを承認または拒否します。
トポロジのすべてのメンバーの Discovery Service は、メンバーのうちの 1 つの Topology Connector を参照しています。以下の節では、このメンバーをルートメンバーと呼びます。
トポロジ内の各クラスターには、リーダーと認識されるインスタンスが含まれています。クラスターリーダーは、クラスターの他のメンバーの代わりにトポロジとやり取りします。リーダーがクラスターから外れると、クラスターの新しいリーダーが自動的に選択されます。
トポロジの表示 viewing-the-topology
トポロジブラウザーを使用して、Experience Manager インスタンスが参加しているトポロジの状態を調べます。トポロジブラウザーには、トポロジのクラスターおよびインスタンスが表示されます。
クラスターごとに、クラスターメンバーのリストが表示されます。このリストには、各メンバーがクラスターに参加した順序と、どのメンバーがリーダーかが示されています。現在プロパティによって、現在管理しているインスタンスが示されます。
クラスターの各インスタンスについて、複数のトポロジ関連プロパティを確認できます。
- インスタンスのジョブコンシューマーが担当するトピックの許可リスト。
- トポロジとの接続用に公開されるエンドポイント
- インスタンスがどのジョブトピックについてオフロード用に登録されているか
- インスタンスによって処理されるジョブトピック
-
タッチ UI を使用して、「ツール」タブをクリックします。(http://localhost:4502/tools.html)
-
Granite の操作エリアで、「オフロードするブラウザー」をクリックします。
-
ナビゲーションパネルで、「トポロジブラウザー」をクリックします。
トポロジに参加しているクラスターが表示されます。
-
クラスターをクリックして、クラスターのインスタンスとそれらの ID、現在ステータスおよびリーダーステータスのリストを表示します。
-
インスタンス ID をクリックして、詳細なプロパティを表示します。
Web コンソールを使用してトポロジ情報を表示することもできます。コンソールには、トポロジのクラスターに関するその他の情報が表示されます。
- どのインスタンスがローカルインスタンスであるか
- このインスタンスがトポロジに接続するために使用する Topology Connector サービス(送信)と、このインスタンスに接続するサービス(受信)
- トポロジおよびインスタンスのプロパティの変更履歴
以下の手順を使用して、web コンソールの Topology Management ページを開きます。
-
ブラウザーで web コンソールを開きます。(http://localhost:4502/system/console)
-
Main/Topology Management をクリックします。
トポロジメンバーシップの設定 configuring-topology-membership
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 サービスの以下のプロパティを設定します。
以下の手順を使用して、CQ インスタンスをトポロジのルートメンバーに接続します。この手順では、インスタンスがルートトポロジメンバーの Topology Connector URL を指すようにします。この手順をトポロジのすべてのメンバーで実行します。
- ブラウザーで web コンソールを開きます。(http://localhost:4502/system/console)
- Main/Topology Management をクリックします。
- 「Configure Discovery Service」をクリックします。
- Topology Connector URL プロパティに項目を追加し、ルートトポロジメンバーの Topology Connector サービスの URL を指定します。URL の形式は、https://rootservername:4502/libs/sling/topology/connector です。
トポロジのルートメンバーで以下の手順を実行します。この手順では、ルートメンバーの Discovery Service 許可リストに他のトポロジメンバーの名前を追加します。
- ブラウザーで web コンソールを開きます。(http://localhost:4502/system/console)
- Main/Topology Management をクリックします。
- 「Configure Discovery Service」をクリックします。
- トポロジの各メンバーについて、Topology Connector の許可リストプロパティに項目を追加し、トポロジメンバーのホスト名または IP アドレスを指定します。
トピック使用の設定 configuring-topic-consumption
オフロードするブラウザーを使用して、トポロジ内の Experience Manager インスタンスのトピック使用を設定します。インスタンスごとに、使用するトピックを指定できます。例えば、1 つのインスタンスのみが特定のタイプのトピックを使用するようにトポロジを設定するには、その 1 つのインスタンスを除くすべてのインスタンスでそのトピックを無効にします。
ジョブは、ラウンドロビンロジックを使用して、関連するトピックが有効なインスタンス間で配布されます。
-
タッチ UI を使用して、「ツール」タブをクリックします。(http://localhost:4502/tools.html)
-
Granite の操作エリアで、「オフロードするブラウザー」をクリックします。
-
ナビゲーションパネルで、「オフロードするブラウザー」をクリックします。
オフロードトピックと、トピックを使用できるサーバーインスタンスが表示されます。
-
インスタンスのトピック使用を無効にするには、トピック名の下で、インスタンスの横の「無効にする」をクリックします。
-
あるインスタンスのすべてのトピック使用を設定するには、トピックの下にあるインスタンス識別子をクリックします。
-
トピックの横にある以下のボタンのいずれかをクリックし、インスタンスの使用動作を設定して、「保存」をクリックします。
- 有効:このインスタンスはこのトピックのジョブを使用します。
- 無効:このインスタンスはこのトピックのジョブを使用しません。
- 排他:このインスタンスはこのトピックのみのジョブを使用します。
メモ: あるトピックに対して「排他」を選択すると、他のすべてのトピックは自動的に「無効」に設定されます。
インストール済みの JobConsumer installed-job-consumers
複数の JobConsumer 実装が Experience Manager と共にインストールされます。これらの JobConsumer が登録されているトピックが、オフロードするブラウザーに表示されます。表示されるその他のトピックは、カスタム JobConsumer で登録されたトピックです。以下の表に、デフォルトの JobConsumer を示します。
インスタンスのトピックの無効化と有効化 disabling-and-enabling-topics-for-an-instance
Apache Sling JobConsumer Manager サービスによって、トピックの許可リストプロパティとブロックリストプロパティが提供されます。これらのプロパティを設定して、Experience Manager インスタンスでの特定のトピックの処理を有効または無効にします。
注意: インスタンスがトポロジに属している場合は、トポロジ内の任意のコンピューターでオフロードするブラウザーを使用して、トピックを有効または無効にすることもできます。
有効化されたトピックのリストを作成するロジックでは、まず許可リスト内のすべてのトピックを許可した後、ブロックリスト内のトピックを削除します。デフォルトでは、すべてのトピックが有効になり(許可リストの値は *
)、無効になるトピックはありません(ブロックリストの値がありません)。
Web コンソールまたは sling:OsgiConfig
ノードを使用して、以下のプロパティを設定します。sling:OsgiConfig
ノードの場合、JobConsumer Manager サービスの PID は、org.apache.sling.event.impl.jobs.JobConsumerManager です。
オフロードのレプリケーションエージェントの作成 creating-replication-agents-for-offloading
オフロードフレームワークでは、作成者とワーカー間のリソースの転送にレプリケーションが使用されます。インスタンスがトポロジに参加すると、オフロードフレームワークによってレプリケーションエージェントが自動的に作成されます。エージェントはデフォルト値を使用して作成されます。エージェントが認証に使用するパスワードを手動で変更します。
オフロードのためにインスタンス間でジョブペイロードを転送するレプリケーションエージェントを作成します。以下の図に、作成者からワーカーインスタンスへのオフロードに必要なエージェントを示します。オーサーの Sling ID は 1、ワーカーインスタンスの Sling ID は 2 です。
この設定では、以下の 3 つのエージェントが必要です。
- ワーカーインスタンスへレプリケートする、オーサーインスタンス上の送信エージェント
- ワーカーインスタンス上のアウトボックスから引き出す、オーサーインスタンス上のリバースエージェント
- ワーカーインスタンス上のアウトボックスエージェント
このレプリケーションスキームは、オーサーインスタンスとパブリッシュインスタンスの間で使用されるものと同様です。ただし、オフロードの場合は、関係するすべてのインスタンスはオーサーインスタンスです。
オフロードのレプリケーションエージェントの命名 naming-the-replication-agents-for-offloading
オフロードフレームワークによって特定のワーカーインスタンスに対して適切なエージェントが自動的に使用されるように、レプリケーションエージェントの「名前」プロパティに特定のフォーマットを使用します。
オーサーインスタンスの送信エージェントの命名:
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
送信エージェントの作成 creating-the-outgoing-agent
-
作成者で レプリケーションエージェント を作成します(レプリケーションエージェントのドキュメントを参照してください)。任意の タイトル を指定します。名前 は命名規則に従う必要があります。
-
以下のプロパティを使用してエージェントを作成します。
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 6-row-2 プロパティ 値 設定/シリアル化の種類 デフォルト トランスポート/トランスポート URI https:// <ip of target instance>
:<port>
/bin/receive?sling:authRequestLogin=1
トランスポート/トランスポートユーザー ターゲットインスタンスのレプリケーションユーザー トランスポート/トランスポートパスワード ターゲットインスタンスのレプリケーションユーザーパスワード 拡張/HTTP メソッド POST トリガー/デフォルトを無視 True
リバースエージェントの作成 creating-the-reverse-agent
-
作成者に リバースレプリケーションエージェント を作成します。(レプリケーションエージェントのドキュメントを参照してください)。任意の タイトル を指定します。名前 は命名規則に従う必要があります。
-
以下のプロパティを使用してエージェントを作成します。
table 0-row-2 1-row-2 2-row-2 3-row-2 4-row-2 5-row-2 プロパティ 値 設定/シリアル化の種類 デフォルト トランスポート/トランスポート URI https:// <ip of target instance>
:<port>
/bin/receive?sling:authRequestLogin=1
トランスポート/トランスポートユーザー ターゲットインスタンスのレプリケーションユーザー トランスポート/トランスポートパスワード ターゲットインスタンスのレプリケーションユーザーパスワード 拡張/HTTP メソッド GET
アウトボックスエージェントの作成 creating-the-outbox-agent
-
ワーカーインスタンス上に レプリケーションエージェント を作成します。(レプリケーションエージェントのドキュメントを参照してください)。任意の タイトル を指定します。名前 は
offloading_outbox
にする必要があります。 -
以下のプロパティを使用してエージェントを作成します。
table 0-row-2 1-row-2 2-row-2 3-row-2 プロパティ 値 設定/シリアル化の種類 デフォルト トランスポート/トランスポート URI repo://var/replication/outbox トリガー/デフォルトを無視 True
Sling ID の検索 finding-the-sling-id
以下のいずれかの方法を使用して、Experience Manager インスタンスの Sling ID を取得します。
- Web コンソールを開き、Sling 設定で、Sling ID プロパティの値を検索します(http://localhost:4502/system/console/status-slingsettings)。この方法は、インスタンスがまだトポロジの一部ではない場合に役立ちます。
- インスタンスが既にトポロジの一部である場合は、トポロジブラウザーを使用します。
参考情報 further-reading
このページで説明した詳細以外に、以下を参照することもできます。
- Java API を使用したジョブおよびジョブコンシューマーの作成について詳しくは、オフロードのためのジョブの作成と使用を参照してください。