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