SharePoint 2010 における検索サーバーの冗長構成について:後編

<関連記事> SharePoint 2010 における検索サーバーの冗長構成について:前編 SharePoint 2010 における検索サーバーの冗長構成について:後編

 

皆さんこんにちは。

SharePoint サポートチームの荒川です。

 

前回に引き続き、今回は、障害が発生したクエリコンポーネントの復旧についてお話ししたいと思います。

 

クエリ コンポーネントがダウンすると、MinimumReadyQueryComponentsPerPartition の設定次第では、クロールが中断されることになります。また、仮に MinimumReadyQueryComponentsPerPartition の許容範囲内であったとしても、ユーザーに定期的に「内部サーバーエラー」が返されてしまうのは健全な状態とは言えないため、できる限り早く問題を解決しなければなりません。

 

前回お話ししたように複数台で構成されたクエリコンポーネントのうち、1 台が停止している状態でクロールを実施した場合、TimeBeforeAbandoningQueryComponent で指定された時間が経過すると、アクセスできないクエリ コンポーネントが使用不可としてマークされ、"無効" と設定されます。

"無効" とマークされたクエリ コンポーネントについては、そのまま放っておいても自然に復旧することはありませんので、後述の PowerShell コマンドレット (Restart-SPEnterpriseSearchQueryComponent) を使用して、回復させるか、一旦クエリ コンポーネントをトポロジから取り除き、再構成を行う必要があります。

 

図1:クロール処理中に1台のクエリサーバーを強制的にシャットダウンした状況。クエリ サーバーから応答が返されないため伝達状態では「クエリ サーバーから応答なし」と表示される。

 

 

図2:アクセスできないクエリ コンポーネントが無効としてマークされた状態。

 

 

 

■クエリコンポーネントの復旧手順

クエリ コンポーネントの復旧手順は大きく分けて 2 通りの方法があります。

 

1. クエリ コンポーネントを明示的に無効に設定する/再起動する

2. クエリ コンポーネントをトポロジから除去/復旧する

 

1 の方法では比較的簡単に復旧ができますが、障害の種類によっては 2 の方法によりクエリ コンポーネントを再構築する必要があります。

 

1. クエリ コンポーネントを明示的に無効に設定する/再起動する

ネットワーク障害や明示的なシャットダウン等により、クエリコンポーネントが一時的に使用不可としてマークされただけで実際にハードウェア障害などのデータ損失が生じていない場合には、クエリ コンポーネントを再起動するだけで復旧できる場合があります。

 

a) クエリ コンポーネントを明示的に無効に設定する方法

1) SharePoint 2010 管理シェルを管理ユーザーで起動します。

2) 以下のコマンドを 1 行ずつ実施します。

$ssa = Get-SPEnterpriseSearchServiceApplication -Identity "<Search Service Application 名>" (例 : -Identity "SSA1" 等)

$qc = $ssa | Get-SPEnterpriseSearchQueryTopology -Active | Get-SPEnterpriseSearchQueryComponent

$component = $qc | where {$_.ServerName -eq "<無効にするクエリ コンポーネントが構成されているServer名>" } (例 : where {$_.ServerName ?eq "SP2010-2" })

$component.SetOffline

 

b) クエリ コンポーネントを再起動する方法

1) SharePoint 2010 管理シェルを管理ユーザーで起動します。

2) 以下のコマンドを 1 行ずつ実施します。

$ssa = Get-SPEnterpriseSearchServiceApplication -Identity "<Search Service Application 名>" (例 : -Identity "SSA1" 等)

$qc = $ssa | Get-SPEnterpriseSearchQueryTopology -Active | Get-SPEnterpriseSearchQueryComponent

$component = $qc | where {$_.ServerName -eq "<再起動するクエリ コンポーネントが構成されているServer名>" } (例 : where {$_.ServerName ?eq "SP2010-2" })

$component | Restart-SPEnterpriseSearchQueryComponent

 

<関連資料> タイトル: SPEnterpriseSearchQueryComponent URL :https://technet.microsoft.com/ja-jp/library/ff607806.aspx

 

 

 

2. クエリ コンポーネントをトポロジから除去/復旧する

クエリ コンポーネントを実施するサーバーがダウンした場合など、単にコンポーネントを再起動するだけでは対応できない場合には、一旦クエリコンポーネントをトポロジから削除して、再構成する必要があります。

 

a) クエリ コンポーネントの除去

1) サーバーの全体管理画面から、"アプリケーション構成の管理" セクションにある [サービス アプリケーションの管理] をクリックします。

2) [Search Service Application] を選択して、[管理] をクリックします。

3) [検索管理] 画面の "検索アプリケーションのトポロジ" セクションにおいて、[変更] をクリックします。

4) 削除するクエリ コンポーネントのメニューから、[削除] を選択し、[トポロジの変更を適用] をクリックします。

5) トポロジの変更の適用処理が実施されます。

6) "Search Service アプリケーション <サービスアプリケーション名> の構成変更に成功しました" というメッセージが表示されることを確認し、[OK] をクリックします。

 

b) クエリ コンポーネントの復旧

1) サーバーの全体管理画面から、"アプリケーション構成の管理" セクションにある [サービス アプリケーションの管理] をクリックします。

2) [Search Service Application] を選択して、[管理] をクリックします。

3) [検索管理] 画面の "検索アプリケーションのトポロジ" セクションにおいて、[変更] をクリックします。

4) 現在存在するクエリ コンポーネントのメニューから、[ミラーの追加] をクリックします。

5) "ミラー クエリ コンポーネントの追加" 画面において、"クエリ コンポーネントを追加するサーバー"、"インデックスの場所" を指定して、[OK] をクリックします。ここでは問題が発生しており、復帰したサーバーを指定します。

6) [トポロジの変更を適用] をクリックすると、トポロジの変更の適用処理が実施されます。

7) "Search Service アプリケーション <サービスアプリケーション名> の構成変更に成功しました" というメッセージが表示されることを確認し、[OK] をクリックします。

 

補足:復帰したサーバーに、削除済みのクエリコンポーネントのインデックスフォルダが残っている場合、該当のサーバーから削除します。

 

  例)

  追加されたクエリ コンポーネント : クエリ コンポーネント 3

  削除したクエリ コンポーネント : クエリ コンポーネント 1

 

上記の場合、該当のサーバーに削除済みクエリコンポーネントのインデックス フォルダを削除します。

インデックスフォルダ(既定) : C:\Program Files\Microsoft Office Servers\14.0\Data\Office Server\Applications\<GUID>-query-<数字(1)>

 

 

今回はシリーズ 2 回にわたって SharePoint 2010 における検索サーバーの冗長構成についてお話してきましたが、検索コンポーネントの冗長構成については、SharePoint 2010 で大幅に改善された仕組みであり、うまく活用することでシステムの可用性が大幅に改善するものです。この記事を参考に、是非上手に活用していただければ幸いです。