安裝和設定搜尋

Azure DevOps Server 2022 - Azure DevOps Server 2019

在本文中,瞭解如何安裝、 設定卸載 在您自己的硬體上執行的 Azure DevOps Server 安全搜尋引擎。 如需詳細資訊,請參閱下列文章:

必要條件

  • 若要安裝搜尋延伸模組,您必須是組織的 Project Collection 管理員 istrator (PCA)。 非系統管理使用者也可以要求將擴充功能新增至其 PCA。
  • 如需詳細資訊,請參閱 安裝和設定 Azure DevOps Server需求和相容性

硬體建議

搜尋適用於執行 Azure DevOps Server 的任何實體伺服器或虛擬機。 您可以在相同的伺服器上設定它,或針對搜尋設定不同的伺服器。 如果您使用相同的伺服器,請考慮 CPU 使用量。

提示

建議您在個別伺服器上設定生產環境的搜尋。

針對多使用者案例中可接受的效能,請考慮下列建議:

  • 伺服器上搜尋的使用者少於 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) 記憶體支援的快速硬碟
  • 具有多個應用層的 Azure DevOps Server (AT):
    • 在個別的伺服器上安裝搜尋
  • 在搜尋安裝之前,Azure DevOps Server CPU 使用率大於 50%:
    • 在個別的伺服器上安裝搜尋

磁碟空間需求

搜尋所使用的磁碟空間量主要取決於索引的檔案類型和大小。 針對程式代碼搜尋,因為存放庫可能會很大,而且版本控制中有不同的程式代碼檔案,因此磁碟空間需求可能相當重要。 配置最多 150% 的大小,以編製所有要編製索引的存放庫。 從 TFS 2018 Update 3 和更新版本開始,使用者可以從其存放庫排除資料夾,以針對搜尋所耗用的磁碟空間進行優化。

軟體相依性

搜尋具有下列相依性,此相依性會自動安裝為組態的一部分:

  • Elasticsearch by Elasticsearch。
    • 搜尋會使用已修改的 Elasticsearch 版本。 它只適用於這個修改的版本。
    • 較新版本的 Elasticsearch 隨附於 TFS 2018 Update 2 和更新版本,以及 Azure DevOps Server。 當您從舊版的搜尋結果升級時,所有內容都會在安裝之後重新編製索引。 根據內容量(程序代碼檔案、工作專案和Wiki頁面),重新編製索引可能需要一些時間才能完成。
  • Elasticsearch NEST 用戶端
  • Microsoft Build of OpenJDK Version 11.
    • OpenJDK 的 Microsoft Build 不會自動安裝更新。
  • 由 Topten Software 撰寫的 Markdowndeep
  • Roslyn 編譯程序平臺。
  • ANTLR 語言辨識剖析器。

注意

  • 系統或伺服器管理員必須確保伺服器 JRE 會與軟體提供者的建議一致地維護及更新。 另請參閱後續的 Java 安裝注意事項
  • 定期 檢查更新

Java 安裝注意事項

  • 如果搜尋設定精靈未偵測到 Java 執行時間環境 (JRE) 的工作安裝,則會提供下載並安裝最新支援版本的選項。 需要因特網連線才能下載。 如果目標伺服器沒有因特網連線,您必須先手動下載並安裝 JRE,才能嘗試安裝搜尋。

  • Azure DevOps Server 之前的搜尋版本使用 Oracle Server Java 運行時間環境。 在 Azure DevOps Server 中,預設 JRE 是 Azul Zulu OpenJDK

  • 在安裝期間,精靈會將 JAVA_HOME 環境變數設定為指向 JRE 安裝資料夾。 如果設定不正確,設定精靈可能不會偵測到現有的 JRE 安裝,或者 如果JAVA_HOME 設定指向搜尋所需的舊版。

    注意

    我們不建議在共用資源的計算機上安裝 Elasticsearch,特別是在具有多個應用層的大型企業環境中。 建議您在個別的專用機器中設定 Elasticsearch。 如此一來,JAVA 環境就不會在其他用途的機器之間共用。

  • 如果 JRE 版本早於 Search 所需的最小值,且JAVA_HOME變數已設定為該版本,建議您在個別伺服器上安裝 Search

  • 如果伺服器 JRE 版本等於或更新版本比搜尋所需的最小值, 且設定精靈無法辨識,請確定 未設定JAVA_HOME 變數。 然後,重新執行組態精靈 (& "C:\Program Files\Azure DevOps Server XXX\Search\ES\vX.XX\bin\elasticsearch-service.bat" manager) 並藉由設定 Java 虛擬機的路徑來選取版本。

  • 如果您因為其他相依性而無法安裝 Search 所需的 Java 版本,您可以執行下列工作:

    • 在未安裝 Java 的伺服器上,安裝具有搜尋延伸模組的 Azure DevOps Server。 我們不建議針對超過 250 位使用者或 CPU 使用率大於 50% 或多個 AT 執行此動作。
    • 在與 Azure DevOps Server 不同的伺服器上安裝 Search 和 JRE

    注意

    如果您使用 Oracle Server JRE 8,這是 TFS 中搜尋的預設值 (Azure DevOps Server 不使用 Oracle Server JRE 8),請注意下列資訊:

    • 搜尋不會使用或支援 Server JRE 8 的任何商業功能。 因此,在搜尋設定期間,伺服器 JRE 的商業功能不會啟動或解除鎖定。
    • 如果您選擇繼續使用 Oracle JRE,請連絡 Oracle for a Java SE 訂用帳戶,以便繼續接收 JRE 更新。

從 Oracle Server JRE 遷移至 OpenJDK 的 Microsoft 組建

Azure DevOps Server 中的搜尋同時支援 OpenJDK 的 Microsoft Build 和 Oracle JRE,可讓您根據需求在兩者之間選擇。

若要變更為 OpenJDK 的 Microsoft Build,請確定 未設定JAVA_HOME 變數。 然後,重新執行組態精靈 (& "C:\Program Files\Azure DevOps Server XXX\Search\ES\vX.XX\bin\elasticsearch-service.bat" manager) 並藉由設定 Java 虛擬機的路徑來選取版本。

功能可用性

  • 工作項目搜尋適用於Team Foundation Server (TFS) 2018 和更新版本。
  • TFS 2018 Update 2 和更新版本提供Wiki搜尋。
  • 工作專案和Wiki搜尋是搜尋組態期間預設安裝的內建延伸模組。
  • 程式代碼搜尋適用於 TFS 2018 和更新版本,而且是加入加入功能。 您稍後可以從本機資源庫安裝程式代碼搜尋。 以系統管理員身分前往 本機資源庫http://{server}/_gallery)。 非系統管理使用者也可以要求 Azure DevOps Server 的擴充功能。 如需詳細資訊,請參閱 安裝擴充功能

當您安裝 Azure DevOps Server 時,請使用 [伺服器設定精靈] 中的專用頁面來設定 搜尋服務。 您也可以再次執行 [伺服器設定精靈] 或啟動 [搜尋設定精靈],來取消設定搜尋。

設定考量事項

當您設定搜尋時,請考慮下列資訊:

  • 設定 [搜尋] 時,預設會啟用工作專案和Wiki搜尋。 如有必要 ,您可以從 Azure DevOps Server 的 [管理擴充功能 ] 頁面移除這些擴充功能。
  • 您必須針對您想要使用它的每個 Azure DevOps Server 集合安裝程式代碼搜尋延伸模組。 當您一開始設定搜尋時,可以設定複選框來 自動安裝現有和新專案集合 的程式代碼搜尋延伸模組,以自動執行此程式。
  • 如果您未設定複選框來安裝所有專案集合的程式代碼搜尋延伸模組,您的 PCA 可以從本機資源庫安裝它。 請確定您從 Azure DevOps Server 入口網站頁面移至 [本機資源庫] (http://{Server}/_gallery)。 如需詳細資訊,請參閱 安裝擴充功能
  • 搜尋通常需要不到一小時的時間才能編製集合的索引。 但是,根據程式代碼檔案、工作專案或Wiki頁面的大小和數目,最多可能需要12小時的時間。 如果您在這段期間之後沒有取得任何結果, 請檢查索引狀態

使用第二部硬碟和遠端伺服器

  • 為了達到最大效能,搜尋索引資料夾應該位於個別的快速硬碟上,並由快速記憶體支援,例如固態硬碟(SSD)或 儲存體 局域網路(SAN)。 配置最多 150% 的大小,以編製所有要編製索引的存放庫,這是最糟糕的情況。 實際耗用的空間取決於程式碼檔案的數量和類型,以及該集合中的工作專案和Wiki頁面數目。
    • 除非指定,否則索引服務和 Elasticsearch 引擎會在安裝期間使用網路服務帳戶來建立及存取索引檔案。 如果您選擇不同的帳戶,它必須具有 [以服務 身分登入] 許可權。
    • 限制索引磁碟和資料夾的許可權,以保護索引免於意外或惡意的修改或刪除。 設定服務的適當 安全性設定
  • 當您設定搜尋具有 多個 AT 的伺服器時,請安裝在 不同的伺服器上。 在遠端伺服器上安裝 Search 之後,請在任一 AT 伺服器上使用設定精靈,將遠端搜尋實例與您的 Azure DevOps Server 實例連結。 當您取消設定搜尋時,必須在原本執行設定的相同 AT 伺服器上使用設定精靈。

升級您的伺服器

  • 如果您在已設定 Search 的伺服器上執行 生產前升級 ,您必須再次重新設定 Search,以避免損毀生產實例。 沒有選項可將搜尋設定為生產階段前升級的一部分。 相反地,請在生產階段前升級完成之後進行設定。 您可以在設定期間取消核取 [自動安裝和設定所有現有和新集合 的程式代碼搜尋]。 相反地,在設定完成之後,只針對一或兩個集合安裝搜尋延伸模組
  • 如果您要在已設定 Search 且您想要保留的伺服器上執行生產升級,請核取 [安裝和設定搜尋] 旁的方塊。 精靈會偵測現有的搜尋實例,並自動選取 [使用現有的搜尋實例],並預先填入您目前的 搜尋服務 URL。 只有在您想要在同一部伺服器上設定新的搜尋實例時,才使用 [安裝新的搜尋實例] 選項。 設定新的實例會導致您的所有程式碼、工作專案和Wiki再次編製索引,視集合的大小而定,可能需要一些時間。 在編製索引期間,使用者可能會看到部分搜尋結果
  • 如果您要 將伺服器升級至新的硬體,您有下列兩個選項。 根據先前設定的搜尋方式,從這些選項中選取:
    • 如果 Search 位於與 Azure DevOps Server 不同的伺服器上,您必須在 [伺服器設定精靈] 中選取 [安裝和設定搜尋 ],然後選取 [使用現有的搜尋實例],並提供現有搜尋實例 的 URL 以完成搜尋設定
    • 如果在舊伺服器上的 Azure DevOps Server 實例旁邊設定搜尋,您必須在 [伺服器設定精靈] 中選取 [ 安裝和設定搜尋 ]。 然後,如果您想要繼續共同裝載 Search 和 Azure DevOps Server,請再次在新伺服器上選取 [安裝新的搜尋實例 ]。 所有集合的所有搜尋索引都會重新建立,視每個集合的大小而定,可能需要一些時間
  • 如果您要 將集合 從一個 Azure DevOps Server 實例中斷連結以附加至另一個實例,請執行下列步驟:
    1. 從來源 Azure DevOps Server 實例中斷連結集合
    2. 在目標 Azure DevOps Server 實例上設定搜尋(如果尚未完成)
    3. 將集合附加至目標 Azure DevOps Server
    4. 從 Azure DevOps Server 內的本機資源庫卸載您的搜尋延伸模組,例如 Code、Work 專案或 Wiki
    5. 從您的目標 Azure DevOps Server 實例流覽至集合,以安裝本機資源庫搜尋延伸模組

在個別伺服器上安裝或更新搜尋

若要在個別或遠端伺服器上安裝或更新 Search,通常當有超過 250 位使用者時,請執行下列步驟:

  1. 當您在主伺服器上安裝 Azure DevOps Server 時,請設定 [ 安裝和設定搜尋 ] 複選框。 在 [伺服器組態精靈] 的 [搜尋] 頁面中。
  2. 選取 [使用現有 搜尋服務 的選項
  3. 使用精靈中提供的 搜尋服務 套件連結,存取本機計算機上的一組搜尋安裝程序檔案。 然後,將這些檔案複製到遠端伺服器。
  4. 請依照位於安裝程式檔案集的 Readme.txt 檔案中的指示,在遠端伺服器上安裝或更新 搜尋服務。
  5. 安裝完成之後,將產生的搜尋伺服器 URL 複製到在 Azure DevOps Server 實例上執行之設定精靈的 [搜尋 URL ] 字段。
  6. 當兩個安裝都完成時,請為這兩部伺服器設定適當的 安全性設定

搜尋服務 使用已修改的 Elasticsearch 版本。 本節其餘部分會交替使用「搜尋」和「Elasticsearch」一詞。 管理員 istrators 必須提供認證,不論 搜尋服務 位於與 Azure DevOps Server 相同的電腦上,還是位於不同的電腦上。 此動作是透過伺服器或搜尋組態精靈設定搜尋功能的一部分。 這些認證是新的,與任何預先存在的帳戶或伺服器認證無關。 它們可用來設定並連線到 搜尋服務。 這些新的認證集合會在搜尋服務中啟用基本身份驗證。

顯示搜尋認證的螢幕快照。

若要從 TFS 2018 Update 1.1 升級至 TFS 2018 Update 3 或搜尋重新設定,只有使用者資訊會自動填入,系統管理員必須提供密碼認證。 管理員 istrators 可以視需要提供不同的使用者名稱和密碼。 如果 搜尋服務 位於與 Azure DevOps Server 相同的計算機上,系統管理員可以在 [設定精靈] 中提供一組新的認證,以視需要設定 搜尋服務。 不過,如果 搜尋服務 位於遠端電腦上,系統管理員必須先將新的認證提供給 搜尋服務 設定腳本。

注意

  • 使用者名稱和密碼值長度應介於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搜尋。

    • 如果在 2018 RTM 升級期間設定了 搜尋服務,並在您要升級的 TFS 系統中設定,其元件會自動更新。
    • 如果已在遠端伺服器上設定 Search,請參閱 在個別伺服器上 安裝或更新搜尋來更新它。

    在這兩種情況下,所有現有的內容(程式代碼檔案和工作專案)都會自動重新編製索引,以支援設定后的更新元件。 視內容量而定,此升級可能需要一些時間才能完成。

  • TFS 2018 Update 1.1 和 TFS 2018 Update 3:包含 TFS 與 搜尋服務 通訊的基本身份驗證,使其更安全。 任何安裝或升級至 TFS 2018 Update 1.1 或 TFS 2018 Update 3,都必須透過伺服器或搜尋設定精靈,提供認證作為設定搜尋功能的一部分。

  • TFS 2018 Update 2 (或更新版本)至 Azure DevOps Server 2019 Update 1 版本:在個別伺服器上設定搜尋時,需要重新安裝搜尋。 遵循 升級的指示時,在步驟 4 中,而不是更新 Configure-TFSSearch.ps1 – Operation update,請執行下列命令以重新安裝搜尋。

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 的電腦上取消設定搜尋

  1. 卸載每個集合的搜尋延伸模組。 移至 Azure DevOps Server 實例中每個集合的 [ 管理延伸模組 ] 頁面:

    檢查是否已安裝延伸模組的螢幕快照。

  2. 移除搜尋功能:

    1. 開啟 Azure DevOps Server 管理員 istration 控制台。
    2. 選取伺服器的名稱。
    3. 選擇 [移除功能]。
    4. 選取 [搜尋服務],然後選擇 [移除]。
  3. 移除 Elasticsearch 服務:

    1. 以系統管理員身分開啟 命令提示字元
    2. 變更目錄 cd "C:\Program Files\Microsoft Team Foundation Server 15.0\Search\ES\elasticsearch-5.4.1\bin"
    3. 移除服務, "elasticsearch-service.bat remove"
  4. 移除搜尋資料:

    • 刪除環境變數 SEARCH_ES_INDEX_PATH所描述的位置內容。
  5. 移除環境變數 "SEARCH_ES_INDEX_PATH"

在個別伺服器上取消設定搜尋

請執行下列步驟,以取消設定每個集合的搜尋,例如 Code、Work 專案或 Wiki。

  1. 移至 Azure DevOps Server 實例中每個集合的 [ 管理延伸模組 ] 頁面。

    螢幕快照:檢查是否已安裝延伸模組。

  2. 移除搜尋功能:

    1. 開啟 [移除功能] 對話框,管理員 istration Console。
    2. 在左窗格中,選取 Azure DevOps Server 的名稱。
    3. 在右窗格中,選擇 [ 移除功能]。
    4. 在 [移除功能] 對話框中,選取 [搜尋服務],然後選擇 [移除]。
  3. 拿掉 Elasticsearch 服務和數據。

    1. 以管理員身分開啟 PowerShell
    2. 開啟 [設定 Search.ps1] 資料夾,以及遠端安裝 Search 所需的其餘檔案。
    3. 使用 remove 選項再次執行文稿: "ConfigureTFSSearch.ps1 -remove".

搜尋 Azure DevOps Server 有下列限制: