こんにちは。SharePoint サポートの清です。
SharePoint 2013, SharePoint 2016 の複数台構成の環境で、Search Service Application を作成後、検索トポロジーを変更いただく際にご留意いただきたいことをお知らせします。
現象
オンプレミスの SharePoint Server 製品では、Search Service Application の検索コンポーネントを複数のサーバーに配置するよう構成できます。
Search Service Application に関連する一部のタイマージョブについて、検索サービス アプリケーションを作成したサーバー (管理コンポーネントが最初に作成されたサーバー) に紐づくタイマージョブがあります。
これらのタイマージョブと現在の検索管理コンポーネントをホストするサーバーが一致しない場合や、ファームにタイマージョブが存在しない場合には、正常に動作しないことが報告されています。
- 詳細
サーバーの全体管理サイトから Search Service Application を作成いただくと、サーバーの全体管理サイトをホストするサーバーに管理コンポーネントが設定されます。
たとえば、サーバーの全体管理サイトから作成後、検索トポロジーを変更して他のサーバーに管理コンポーネントを構成した場合、変更後のサーバーでジョブが動作するようには構成されません。
その他、ジョブが動作しているサーバーをファームから削除した際、該当のジョブが削除される報告を確認しております。
Search Service Application のサーバー固有のタイマー ジョブとして報告されているものは以下です。
DisplayName | Name |
検索カスタム辞書の更新 | Search Custom Dictionaries Update for Search Application <SSA GUID> |
検索アプリケーション <Search Service Application 名> のクロール ログのクリーンアップ | Crawl Log Cleanup for Search Application <SSA GUID> |
<Search Service Application 名> のクロール ストア パーティションの再調整 | Rebalance crawl store partitions for <SSA GUID> |
検索アプリケーション <Search Service Application 名> の利用状況分析タイマー ジョブ | Usage Analytics Timer Job for Search Application <SSA GUID> |
スペル チェックのカスタマイズのアップグレード | Spelling Customizations Upgrade for Search Application <SSA GUID> |
スペル チェック辞書の更新 | Spelling Dictionary Update for Search Application <SSA GUID> |
Search Service Application <Search Service Application 名> の分析タイマー ジョブ | Analytics Timer Job for Search Service Application <SSA GUID> |
検索アプリケーション <Search Service Application 名> 用のクエリ分類辞書の更新プログラムです。 | Query Classification Dictionary Update for Search Application <SSA GUID> |
対処方法
これらのタイマージョブは、Search Service Application の作成時に登録されます。
そのため、タイマージョブに問題が発生した場合には、Search Service Application を再作成することでタイマージョブを含めて作り直すことが可能です。
検索専用の SharePoint サーバーで、はじめから管理コンポーネントをホストさせる場合には、SharePoint 管理シェルより作成することをご検討ください。
<手順>
1) 検索コンポーネントをホストするサーバーにファーム アカウントでログオンし、[SharePoint 2013 管理シェル] または、[SharePoint 2016 管理シェル] を管理者権限で起動します。
2) 以下のコマンドを実行し、Search Service Application と、Search Service Application Proxy を新規に作成します。
$ssa = New-SPEnterpriseSearchServiceApplication -Name "SSA" -ApplicationPool "SharePoint Web Services Default";
$ssaproxy = New-SPEnterpriseSearchServiceApplicationProxy -SearchApplication $ssa -Name "SSA Proxy";
|
3) 検索トポロジーを構成します。以下は、2 台のサーバーに対して各検索コンポーネントを割り当てる例です。
Search01, Search02 は検索コンポーネントをホストするサーバー名に適宜変更ください。
$newTopology = $ssa.ActiveTopology.Clone()
$hostA = Get-SPEnterpriseSearchServiceInstance -Identity "Search01"; $hostB = Get-SPEnterpriseSearchServiceInstance -Identity "Search02";
# サーバー上で、検索サービス インスタンスがオンラインであることを確認します。 # オフラインの場合は、Start-SPEnterpriseSearchServiceInstance -Identity "Search01"; Start-SPEnterpriseSearchServiceInstance -Identity "Search02"; で開始できます。 $hostA; $hostB;
New-SPEnterpriseSearchAdminComponent -SearchTopology $newTopology -SearchServiceInstance $hostA; New-SPEnterpriseSearchCrawlComponent -SearchTopology $newTopology -SearchServiceInstance $hostA; New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA; New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA; New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostA; New-SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostA -IndexPartition 0;
New-SPEnterpriseSearchAdminComponent -SearchTopology $newTopology -SearchServiceInstance $hostB; New-SPEnterpriseSearchCrawlComponent -SearchTopology $newTopology -SearchServiceInstance $hostB; New-SPEnterpriseSearchContentProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostB; New-SPEnterpriseSearchAnalyticsProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostB; New-SPEnterpriseSearchQueryProcessingComponent -SearchTopology $newTopology -SearchServiceInstance $hostB; New-SPEnterpriseSearchIndexComponent -SearchTopology $newTopology -SearchServiceInstance $hostB -IndexPartition 0;
|
4) トポロジーをアクティブ化します。完了に時間が掛かる場合がございます。
$newTopology.Activate();
$ssa.ActiveTopology;
|
今回の投稿は以上です。
本情報の内容は、作成日時点でのものであり、予告なく変更される場合があります。