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