検索設定をSolrの可用性に適合させる

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecoreには、Solr検索の可用性を監視し、Solrのダウンタイムに回復力のある方法で対応するメカニズムが含まれています。これらのメカニズムとSolrエンドポイントを使用して、Solr検索の可用性に実装を適合させることができます。Solr 8以降を使用している場合、Sitecore IsSolrAliveAgentを使用してSolrサービスの可用性と正常性を定期的に確認し、Solrコンテンツ検索のインデックス作成と検索動作IndexingStateSwitcher管理できます。エージェントは、Solrサーバーが使用可能になると、Sitecore検索機能とインデックス作成機能を自動的に復元します。つまり、Sitecoreの管理者は何もする必要はありません。 IsSolrAliveAgentIndexingStateSwitcherはどちらもデフォルトで有効になっています。この記事では、その使用法と、必要に応じてデフォルトのタイムアウト値を変更する方法について説明します。

さらに、Solrによって提供される /solr/healthz/readyエンドポイントを使用して、Solrサーバーの正常性と準備状況を監視し、必要に応じてSolrサービスを再開することもできます。また 、クエリを実行するたびにSolr検索サービスが使用可能かどうかを確認する こともできます。

IsSolrAliveエージェント

IsSolrAliveAgent Solrサービスが実行中で応答性が高いかどうかを確認します。エージェントは、/solr/{core_name}/admin/healthcheck/solr/admin/info/systemなどのSolrエンドポイントに対してHTTP要求を行います。Solrがタイムリーな応答を送信しない場合、またはエラー メッセージを返した場合は、UnreachableまたはNot respondingと見なされます。その後、エージェントはSitecoreログに警告メッセージを記録します。次の2つの状態を区別することが重要です。

  • Unreachable - Solrサーバーとの通信を妨げている問題 (ネットワークの問題やファイアウォールの制限など)。

  • Not responding - サーバーは要求を受け取りましたが、サーバーの過負荷または構成エラーが原因で、タイムリーまたは正常な応答を提供できませんでした。

Solrサーバーにアクセスできない場合は、Sitecoreにエラー メッセージを返します。ただし、定義されたタイムアウト期間中にまったく応答しない場合は、応答しないと見なされます(Not responding)。タイムアウト値を調整して、このトピックの後半で説明するように、これらのシナリオを区別できます。

IndexingStateSwitcher

IndexingStateSwitcher Solrサービスの可用性に基づいて、インデックス作成と検索の動作を制御します。これにより、インデックス作成操作がSolrの可用性と同期され、データの整合性が維持されます。Solrが使用不可として検出された場合、このエージェントはインデックス作成操作を一時停止して、データの不整合やエラーの可能性を防ぐことができます。また、ダウンタイム中にインデックス作成要求でSolrが過負荷になるのを防ぐのにも役立ちます。Solrが再び使用可能になると、IndexingStateSwitcherエージェントはインデックス作成操作を自動的に再開します。

IndexingStateSwitcherのタイムアウト値は、次のセクションで説明するように設定できます。

エージェントのタイムアウト値を構成する

IsSolrAliveAgentIndexingStateSwitcherのタイムアウト値は、どちらもinterval属性を使用してミリ秒単位で定義されます。タイムアウト設定を変更するには、App_Config\Includeフォルダの設定にパッチを適用します。Solr接続タイムアウトを指定することもできます。

パッチ・ファイルを使用してIsSolrAliveAgentまたはIndexingStateSwitcherエージェントのタイムアウト値を設定するには、次の手順で行います。

  1. App_Config\Includeフォルダに .configファイル (Sitecore.ContentSearch.Solr.configなど) を作成します。

    Folder structure and path to the App Config folder for adding a configuration file to change timeout values
  2. 設定ファイルに次のコード構造を入力し、必要に応じてエージェントのintervalを変更します。次の例では、間隔をそれぞれ15ミリ秒と3ミリ秒に設定しています。

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:role="http://www.sitecore.net/xmlconfig/role/" xmlns:search="http://www.sitecore.net/xmlconfig/search/">
      <sitecore role:require="Standalone or ContentManagement or ContentDelivery or XMCloud" search:require="solr">
        <scheduling>
          <agent type="Sitecore.ContentSearch.SolrProvider.Agents.IsSolrAliveAgent, Sitecore.ContentSearch.SolrProvider" method="Run" interval="00:15:00" />
          <agent type="Sitecore.ContentSearch.SolrProvider.Agents.IndexingStateSwitcher, Sitecore.ContentSearch.SolrProvider" method="Run" interval="00:03:00" />
        </scheduling>
      </sitecore>
    </configuration>
  3. Sitecoreアプリケーションを再起動します。

  4. ファイルを保存した後、変更がhttps://{sitecore_instance_name}/sitecore/admin/showconfig.aspxに反映されていることを確認でき、{sitecore_instance_name} をインスタンスに置き換えることができます。

    Code sample that shows how to configure the timeout value for Sitecore Solr agents
この記事を改善するための提案がある場合は、 お知らせください!