Search のインストールと構成
Azure DevOps Server 2022 - Azure DevOps Server 2019
この記事では、お客様が使用するハードウェアで実行される Azure DevOps Server 向けの安全な検索エンジンをインストール、構成、アンインストールする方法を説明します。 詳細については、次の記事を参照してください。
- Search の管理とインデックス化
- ソフトウェアの依存関係、この記事の後半で
必須コンポーネント
- Search 拡張機能をインストールするには、組織の Project Collection Administrator (PCA) である必要があります。 管理者以外のユーザーでも、PCA に拡張機能を追加するように要求できます。
- 詳細については、「Azure DevOps Server をインストールして構成する」および「要件と互換性」を参照してください。
ハードウェアの推奨事項
Search は、Azure DevOps Server を実行するすべての物理サーバーまたは仮想マシンで機能します。 Search 用に同じサーバーまたは別のサーバーで設定できます。 同じサーバーを使用する場合は、CPU 使用率を考慮します。
ヒント
運用環境用に別サーバーで Search を構成することが推奨されます。
マルチユーザー シナリオで許容できるパフォーマンスについては、次の推奨事項を考慮します。
- サーバー上に配置されている Search のユーザーが 250 人未満 (通常は、デモンストレーションとトライアルの目的で使用):
- クアッド コア プロセッサ、16 GB (最小) RAM
- CPU 使用率係数が 50% 未満
- ソリッド ステート ドライブ (SSD) ストレージ付属の高速ハード ドライブ
- 別サーバーに配置されている Search のユーザーが 500 人未満:
- デュアル コア プロセッサ、8 GB (最小) RAM
- ソリッド ステート ドライブ (SSD) ストレージ付属の高速ハード ドライブ
- 別サーバーに配置されている Search のユーザーが 1,000 人未満:
- クアッド コア プロセッサ、16 GB (最小) RAM
- ソリッド ステート ドライブ (SSD) ストレージ付属の高速ハード ドライブ
- 別サーバーに配置されている Search のユーザーが 1,001 人以上
- クアッド コア プロセッサ、16 GB (最小) RAM
- ソリッド ステート ドライブ (SSD) または Storage Area Network (SAN) ストレージ付属の高速ハード ドライブ
- 複数のアプリケーション層 (AT) を持つ Azure DevOps Server:
- 別サーバーに Search をインストールする
- Search をインストールする前に Azure DevOps Server の CPU 使用率が 50% を超えている:
- 別サーバーに Search をインストールする
ディスクの空き容量要件:
Search が使用するディスクの空き容量は、主にファイルの種類とインデックスされたファイルによって異なります。 Code Search の場合、リポジトリが何度も拡大でき、バージョン管理で、コード ファイルが異なる場合があるため、ディスクの空き容量の要件は大きな影響を与える場合があります。 インデックスを作成するすべてのリポジトリのサイズの最大 150% を割り当てます。 TFS 2018 Update 3 以降では、ユーザーはリポジトリからフォルダーを除外してインデックスを作成し、Search で使用されるディスクの空き容量を最適化できます。
ソフトウェアの依存関係
Search には、次の依存関係があり、構成の一環として自動インストールされます。
- Elastic による Elasticsearch。
- Search は、変更されたバージョンの Elasticsearch を使用します。 この変更されたバージョンでのみ機能します。
- Elasticsearch の新しいバージョンには、TFS 2018 Update 2 以降と Azure DevOps Server が付属しています。 古いバージョンの Search 結果からアップグレードすると、インストール後にすべてのコンテンツが再インデックス化されます。 コンテンツの量 (コード ファイル、作業項目、Wiki ページ) によっては、再インデックス化が完了するまでに時間がかかる場合があります。
- Elasticsearch NEST クライアント。
- Microsoft Build of OpenJDK バージョン 11。
- Microsoft Build of OpenJDK では、更新プログラムは自動インストールされません。
- Markdowndeep )Topten Software)。
- Roslyn コンパイラ プラットフォーム。
- ANTLR 言語認識パーサー。
メモ
- システム管理者またはサーバー管理者は、ソフトウェア プロバイダーの推奨事項に従って、サーバー JRE が維持および更新されていることを確認する必要があります。 または、以下の「Java のインストールに関する注意事項」を参照してください。
- 定期的に更新プログラムを確認してください。
Java のインストールに関する注意事項
Search 構成ウィザードが Java Runtime Environment (JRE) の動作中のインストールを検出しない場合、サポートされている最新バージョンをダウンロードしてインストールするオプションが提供されます。 ダウンロードするには、インターネットが必要です。 対象サーバーがインターネットに接続されていない場合は、手動で JRE をダウンロードしてインストールしてから、Search をインストールします。
Azure DevOps Server より前のバージョンの Search では、Oracle Server Java Runtime Environment が使用されます。 Azure DevOps Server では、OpenJDK のバンドル バージョンがある Elasticsearch バージョン 7.17.0 が使用されます。
インストール時に、ウィザードによって、JRE インストール フォルダーを指す JAVA_HOME 環境変数が設定されます。 構成ウィザードでは、既存の JRE インストールが正しく構成されていない場合や、JAVA_HOME 設定が Search で必要な以前のバージョンを指している場合は、既存の JRE インストールが検出されない場合があります。
メモ
リソースが共有されているコンピューター、特に複数のアプリケーション層を持つ大規模なエンタープライズ環境に Elasticsearch をインストールすることは推奨されません。 Elasticsearch は別の専用マシンで設定することが推奨されます。 このように、JAVA 環境は他の目的で複数のマシン間で共有されることはありません。
Search が必要とする最小バージョンよりも前の JRE バージョンがあり、JAVA_HOME 変数がそのバージョンに設定されている場合は、別サーバーに Search をインストールすることが推奨されます。
Search に必要な最小バージョンと同等かそれ以降のバージョンの Server JRE があり、構成ウィザードで認識されない場合は、JAVA_HOME 変数が設定されていないことを確認してください。 次に、構成ウィザード (
& "C:\Program Files\Azure DevOps Server XXX\Search\ES\vX.XX\bin\elasticsearch-service.bat" manager
) を再実行し、Java 仮想マシンのパスを設定してバージョンを選択します。他の依存関係が原因で Search に必要な Java のバージョンをインストールできない場合は、次のタスクを実行できます。
- Java がインストールされていないサーバーに Search 拡張機能がある Azure DevOps Server をインストールします。 250 人を超えるユーザーまたは 50% を超える CPU 使用率、または複数の AT では、このアクションは推奨されません。
- Azure DevOps Server とは別のサーバーに Search と JRE をインストールします。
メモ
TFS の Search に対してデフォルトである Oracle Server JRE 8 を使用する場合は (Azure DevOps Server は、Oracle Server JRE 8 を使用しません)、次の情報にご注意ください。
- Search は、Server JRE 8 の商用機能を使用またはサポートしません。 そのため、Search の構成中に、Server JRE の商用機能はアクティブ化も、ロック解除もされません。
- Oracle JRE を続行する場合は、引き続き JRE 更新プログラムを受け取ることができるように、Java SE サブスクリプションについて Oracle にお問い合わせください。
Oracle Server JRE から Microsoft Build of OpenJDK に移行する
Azure DevOps Server の Searchは、Microsoft Build of OpenJDK と Oracle JRE の両方をサポートしており、ニーズに応じてどちらかを選択できます。
Microsoft Build of OpenJDK に変更するには、JAVA_HOME 変数が設定されていないことを確認します。 次に、構成ウィザード (& "C:\Program Files\Azure DevOps Server XXX\Search\ES\vX.XX\bin\elasticsearch-service.bat" manager
) を再実行し、Java 仮想マシンのパスを設定してバージョンを選択します。
使用可能な機能
- Work Item Search は、Team Foundation Server (TFS) 2018 以降のバージョンで使用できます。
- Wiki Search は TFS 2018 Update 2 以降のバージョンで使用できます。
- Work Item Search および Wiki Search は、Search 構成時に既定でインストールされる組み込み拡張機能です。
- Code Search は TFS 2018 以降のバージョンで利用でき、これは、オプトイン機能です。 Code Search は、ローカル ギャラリーから後でインストールできます。 管理者として、[ローカル ギャラリー] (
http://{server}/_gallery
) に移動します。 管理者以外のユーザーは、Azure DevOps Server の拡張機能を要求できます。 詳細については、「拡張機能のインストール」を参照してください。
Search を構成する
Azure DevOps Server をインストールする際には、サーバー構成ウィザードの専用ページを使用して Search Service を構成します。 サーバー構成ウィザードをもう一度実行するか、Search 構成ウィザードを起動すると、後で Search の構成を解除できます。
構成の考慮事項
Search を構成する際は、次の情報を考慮します。
- Search が構成されている場合は、デフォルトで、Work Item Search と Wiki Search の両方が有効になります。 これらの拡張機能は、後で必要に応じて、Azure DevOps Server の拡張機能の管理ページから削除できます。
- Code Search 拡張機能は、その拡張機能を使用する Azure DevOps Server コレクションごとにインストールする必要があります。 Search を初めて構成するときに、このプロセスを自動化するには、[既存および新しいプロジェクト コレクションの Code Search 拡張機能を自動的にインストールする] チェックボックスをオンにします。
- すべてのプロジェクト コレクションの Code Search 拡張機能をインストールするチェック ボックスをオンにしない場合、PCA はローカル ギャラリーからインストールできます。 Azure DevOps Server ポータル ページからローカル ギャラリー (
http://{Server}/_gallery
) に移動していることを確認します。 詳細については、「拡張機能のインストール」を参照してください。 - 通常、Search がコレクションをインデックス化するのに必要な時間は 1 時間未満です。 ただし、コード ファイル、作業項目、または Wiki ページのサイズと数量に応じて、最大 12 時間かかる場合があります。 この期間が経過しても結果が得られない場合は、インデックス作成の状態を確認してください。
2 台目のハード ドライブとリモート サーバーを使用する
- パフォーマンスを最大限にするには、検索インデックス フォルダーを別の高速ハード ドライブに配置し、ソリッド ステート ドライブ (SSD) やストレージ エリア ネットワーク (SAN) などの高速ストレージを付属する必要があります。 最悪のシナリオとして、インデックス化するすべてのリポジトリのサイズの最大 150% を割り当てます。 実際に消費される空き容量は、コード ファイルの量と種類、およびそのコレクション内の作業項目と Wiki ページの数によって異なります。
- 指定しない限り、インデックス化サービスと Elasticsearch エンジンは、インストール中にネットワーク サービス アカウントを使用して、インデックス ファイルを作成してアクセスします。 別のアカウントを選択する場合は、サービスとしてログオンするためのアクセス許可が必要です。
- インデックス ディスクとフォルダへのアクセス許可を制限し、インデックスを偶発的または悪意のある変更や削除から保護します。 サービスに対して適切なセキュリティ設定を構成します。
- サーバーに対する Search の構成を複数の AT で行う場合は、別のサーバーにインストールします。 リモート サーバーに Search をインストールした後、AT サーバーのいずれかで構成ウィザードを使用して、リモートの Search インスタンスを Azure DevOps Server インスタンスにリンクします。 Search の構成を解除する場合は、構成が最初に行われた AT サーバーと同じサーバーで構成ウィザードを使用する必要があります。
サーバーをアップグレードする
- Search がすでに構成されているサーバーに稼働前アップグレードを行う場合、稼働インスタンスの破損を回避するために、完璧に Search を再構成する必要があります。 稼働前アップグレードの一部として Search を構成するオプションはありません。 代わりに、稼働前アップグレードが完了した後に構成します。 構成中に [既存および新規のすべてのコレクションに対して Code Search を自動的にインストールして構成する] チェックボックスをオフにできます。 代わりに、構成が完了後に、コレクションの 1 つまたは 2 つに対して Search 拡張機能をインストールします
- Search が構成されているサーバーで稼働前アップグレードを実行していて、それを保持する場合は、[Search をインストールして構成] の横にあるチェック ボックスをオンにします。 ウィザードによって既存の Search インスタンスが検出されると、既存の Search インスタンスを使用する] が自動的に選択され、現在の Search Service の URL が事前入力されます。 同じサーバーに 新しい Search インスタンスを設定する場合は、[新しい Search インスタンスをインストール] オプションを使用します。 新しいインスタンスを設定すると、すべてのコード、作業項目、Wiki が再度インデックス化されます。コレクションのサイズによっては、しばらく時間がかかる場合があります。 インデックス化中に、検索結果の一部が表示される場合があります
- サーバーを新しいハードウェアにアップグレードする場合は、次の 2 つのオプションがあります。 Search の以前の構成方法に応じて、これらのオプションを選択します。
- Search が Azure DevOps Server とは別のサーバー上にある場合は、サーバー構成ウィザードで [Search をインストールして構成] > [既存の Search インスタンスを使用] の順に選択し、既存の Search インスタンスの URL を指定して、Search 構成を完了する必要があります。
- 古いサーバー上にある Azure DevOps Server インスタンスと共に Search が構成されている場合は、サーバー構成ウィザードで [Search のインストールおよび構成] を選択してください。 次に、Search と Azure DevOps Server を新しいサーバーで引き続き共同でホストする場合は、再度 [新しい Search インスタンスをインストール] を選択します。 すべてのコレクションのすべての Search インデックスが再作成されます。各コレクションのサイズによっては、しばらく時間がかかる場合があります
- ある Azure DevOps Server インスタンスからコレクションをデタッチして別のインスタンスにアタッチする場合は、次の手順を実行します。
- 元の Azure DevOps Server インスタンスからコレクションをデタッチする
- ターゲットの Azure DevOps Server インスタンスで Search を構成する (まだ完了していない場合)
- ターゲットの Azure DevOps Server にコレクションをアタッチする
- Azure DevOps Server 内のローカル ギャラリーからコレクションの Code、Work Item または Wiki などの Search 拡張機能をアンインストールします
- ターゲットの Azure DevOps Server インスタンスから参照して、ローカル ギャラリーのコレクション用に Search 拡張機能をインストールします。
別のサーバーに Search をインストールまたは更新する
(通常、ユーザー数が 250 人を超える場合で) Search を別のサーバーまたはリモート サーバーにインストールまたは更新するには、次の手順を実行します。
- プライマリ サーバーに Azure DevOps Server をインストールするときに、[Search のインストールと構成] チェックボックスをオンにします。 サーバー構成ウィザードの [Search] ページで、
- オプションで [既存の Search サービスを使用する] を選択します。
- ウィザードに記載されている Search Service パッケージ リンクを使用して、ローカル マシンの Search インストーラー ファイル一式にアクセスします。 次に、これらのファイルをリモート サーバーにコピーします。
- インストーラー ファイル一式に含まれている Readme.txt ファイルの指示に従って、リモート サーバーに Search Service をインストールまたは更新します。
- インストールが完了したら、結果の Search Service URL を、Azure DevOps Server インスタンスで実行される構成ウィザードの Search URL フィールドにコピーします。
- 両方のインストールが完了したら、両方のサーバーに適切な セキュリティ設定を 構成します。
セキュリティで保護された Search
Search Service は、変更されたバージョンの Elasticsearch を使用します。 "Search" と "Elasticsearch" という用語は、このセクションの残りの部分では、同じ意味で使用されます。 Search Service が Azure DevOps Server と同じコンピューター上にある場合でも、別のコンピューター上にある場合でも、管理者は資格情報を指定する必要があります。 このアクションは、サーバーまたは Search 構成ウィザードを使用して Search 機能を構成する一部です。 これらの資格情報は新しいものであり、既存のアカウントまたはサーバーの資格情報とは関連しません。 これらは、Search Service の設定と接続に使用されます。 これらの新しい資格情報のセットにより、Search Service での基本認証が有効になります。
TFS 2018 Update 1.1 から TFS 2018 Update 3 へのアップグレードまたは Search 再構成の場合は、ユーザー情報のみが自動的に入力され、管理者は資格情報を指定する必要があります。 管理者は、必要に応じて異なる資格情報を指定できます。 Search Service が Azure DevOps Server と同じコンピューター上にある場合、管理者は構成ウィザードで新しい資格情報のセットを指定して、必要に応じて Search Service を設定できます。 ただし、Search Service がリモート コンピューター上にある場合、管理者はまず、Search Service セットアップ スクリプトに新しい資格情報を指定する必要があります。
メモ
- 資格情報の値の長さは 8 ~ 64 文字にする必要があります。
- Search 資格情報はユーザーのみを認証し、認証されていないユーザーが Elasticsearch エンドポイントにアクセスできないようにします。 ただし、Elasticsearch は HTTPS をサポートしていないため、これらの資格情報は Base64 でエンコードされた文字列としてネットワーク経由で送信されます。 要求への中間アクセスの可能性がある場合は、企業のセキュリティとコンプライアンスの要件に基づいて適切なセキュリティ設定を構成します。
- 次に示すように、IPSec による暗号化を使用して、検索とインデックス化の両方へのアクセスを特定のユーザーまたはユーザー グループに制限することを目的とします。
Windows Server で Elasticsearch をセキュリティで保護するために IPSec を使用する場合は、次の手法を検討します。
認証のみを使用してセキュリティを構成する:
- 承認されたユーザーのみが Elasticsearch ポートにアクセスできることを確認します。 サービス側の規則のみ必要です (Elasticsearch を実行しているサーバー上のファイアウォール規則のみ)
- 前提条件: Azure DevOps Server をドメイン アカウントで構成する必要があります
- 「IPsec で保護されたネットワーク トラフィックを許可するファイアウォール規則の作成」の手順を実行します。
認証、整合性保護、暗号化を使用してセキュリティを構成する:
- 暗号化と整合性の保護が認証と共に適用されるようにします。 これには、クライアント側とサービス側の両方の規則 (Elasticsearch を実行しているサーバー上のファイアウォール規則とすべての Azure DevOps Server アプリ層サーバー) が必要です。
- 前提条件: Azure DevOps Server をドメイン アカウントで構成する必要があります
- 「暗号化とグループ メンバーシップを要求してサーバーを分離する」の手順を実行します。
検索のアップグレード
TFS 2018 Update 2: 更新された Search コンポーネントと Wiki Search が含まれます。
- Search Service が 2018 RTM のアップグレード中に設定され、アップグレードする TFS システムで構成されている場合、そのコンポーネントは自動的に更新されます。
- Search が、リモート サーバーで構成されている場合は、「別サーバーで Search をインストールするか更新する」を参照してください。
どちらの場合も、構成後に更新されたコンポーネントをサポートするために、既存のすべてのコンテンツ (コード ファイルと作業項目) が自動的にインデックス化されます。 コンテンツの量によっては、このアップグレードが完了するまでに時間がかかる場合があります。
TFS 2018 Update 1.1 および TFS 2018 Update 3: TFS と Search Service 間の通信の基本認証が含まれており、これにより、セキュリティが強化されます。 TFS 2018 Update 1.1 または TFS 2018 Update 3 のインストールまたはアップグレードでは、サーバーまたは Search 構成ウィザードを使用して、Search 機能の構成の一環として資格情報を提供する必要があります。
TFS 2018 Update 2 (またはそれ以降) から Azure DevOps Server 2019 Update 1へのバージョンアップ: 検索を別のサーバーに構成する場合は、検索を再インストールする必要があります。
Configure-TFSSearch.ps1 – Operation update
のアップグレードではなく、ステップ 4 の アップグレードの指示に従い、次のコマンドを実行して Search を再インストールします。
Configure-TFSSearch.ps1 -Operation remove
Configure-TFSSearch.ps1 -Operation install -TFSSearchInstallPath <install location> -TFSSearchIndexPath $env:SEARCH_ES_INDEX_PATH
Search のアンインストール
運用前アップグレード、運用アップグレード、新しいハードウェア移行、複製、またはその他のメンテナンス操作の場合、サーバー構成ウィザードは Search の構成を解除します。 ただし、サーバーのメンテナンス操作完了後に、簡単に再構成できます。
Search を使用しなくなったり、新しいインストールやクリーン インストールを実行する場合があります。 この操作では、Search が Azure DevOps Server と同じサーバーで構成されているか、別サーバーで構成されているかに応じて、複数の手順が必要です。
Azure DevOps Server として構成されたマシンで Search の構成を解除する
各コレクションの Search 拡張機能をアンインストールします。 Azure DevOps Server インスタンス内の各コレクションの [拡張機能を管理] ページに移動します。
Search 機能を削除します。
- Azure DevOps Server 管理コンソールを開きます。
- サーバーの名前を選択します。
- [機能の削除] を選択します。
- 検索サービスを選択した後、削除を選択します。
Elasticsearch サービスを削除します。
- 管理者として [コマンド プロンプト] を開きます
- ディレクトリを変更:
cd "C:\Program Files\Microsoft Team Foundation Server 15.0\Search\ES\elasticsearch-5.4.1\bin"
。 - サービスを削除しろ。
"elasticsearch-service.bat remove"
Search データを削除します。
- 環境変数
SEARCH_ES_INDEX_PATH
で記述されている場所のコンテンツを削除します。
- 環境変数
環境変数
"SEARCH_ES_INDEX_PATH"
を削除します。
別サーバーで Search の構成を解除する
次の手順を実行して、各コレクションの Code、Work item または Wiki などの Search の構成を解除します。
Azure DevOps Server インスタンス内の各コレクションの [拡張機能を管理] ページに移動します。
Search 機能を削除します。
- [機能を削除] ダイアログ > [管理コンソール] の順に開きます。
- 左側のペインで、Azure DevOps Server の名前を選択します。
- 右側のペインで、[機能を削除] を選択します。
- [機能の削除] ダイアログボックスで、[検索サービス] を選択し、[削除] を選択します。
Elasticsearch サービスとデータを削除します。
- 管理者として PowerShell を開きます。
- Configure Search.ps1 フォルダと Search をリモートでインストールするために必要な残りのファイルを開きます。
- 削除オプション
"ConfigureTFSSearch.ps1 -remove".
を使用してスクリプトを再度実行します。
Search の制限事項
Azure DevOps Server の Search には、次の制限があります。
- 障害復旧 (DR) し操作を実行し、サーバーを SQL データベースの前のスナップショットに戻す場合は、すべてのコレクションを再度インデックス化します。
- Search は拡張できませんが、新しい機能要求を開発者コミュニティに送信できます。