安裝和設定搜尋

Azure DevOps Services |Azure DevOps Server 2022 - Azure DevOps Server 2019 |TFS 2018

瞭解如何針對程式碼、Wiki 和 Work 專案搜尋的搜尋延伸模組執行下列動作,Azure DevOps Server。

如需管理搜尋索引的詳細資訊,請參閱 管理搜尋和編制索引

必要條件

硬體建議

您可以在執行Azure DevOps Server的任何大小實體伺服器或虛擬機器上使用搜尋。 您可以在相同的伺服器上,或在專用於搜尋的個別伺服器上進行設定。 當您在同一部伺服器上設定搜尋時,請考慮現有的 CPU 使用率因素,因為Azure DevOps Server本身。

提示

針對生產環境,建議您在不同的伺服器上設定搜尋。

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

  • 位於伺服器搜尋的少於 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:
  • 在搜尋安裝之前,Azure DevOps Server CPU 使用率大於 50%:

磁碟空間需求

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

軟體相依性

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

注意

  • 搜尋會使用已修改的 Elasticsearch 版本。 它只適用于此修改的版本
  • 較新版本的 Elasticsearch 隨附于 TFS 2018 Update 2 和更新版本,以及Azure DevOps Server。 當您從舊版的搜尋結果升級時,所有內容都會在安裝之後重新編制索引。 根據程式碼檔案、工作專案和 wiki 頁面 () 的內容量,重新編制索引可能需要一些時間才能完成
  • 系統或伺服器管理員必須確定伺服器 JRE 會隨著軟體提供者的建議一起維護及更新。 另請參閱後續的JAVA 安裝附注
  • Azul Zulu OpenJDK 不會自動安裝更新
  • 確定您定期 檢查更新

JAVA 安裝注意事項

  • 如果 [搜尋設定精靈] 偵測到 JAVA 執行時間環境 (JRE) 的運作中安裝,它會提供下載並安裝最新支援版本的選項。 需要網際網路連線才能下載。 如果目標伺服器沒有網際網路連線能力,您必須先手動下載並安裝 JRE,才能嘗試安裝搜尋。
  • Azure DevOps Server使用Oracle Server JAVA 執行時間環境之前搜尋的版本。 在Azure DevOps Server中,預設 JRE 是Azul Zulu OpenJDK
  • 在安裝期間,精靈會將 JAVA_HOME 環境變數設定為指向 JRE 安裝資料夾。 如果設定精靈未正確設定,或 JAVA_HOME 設定指向搜尋所需的舊版,則設定精靈可能不會偵測到現有的 JRE 安裝。

注意

不建議在共用資源的電腦上安裝 Elasticsearch,特別是在具有多個應用層的大型企業環境中。 相反地,建議您在個別的專用電腦上設定 Elasticsearch。 如此一來,JAVA 環境不會針對其他用途跨電腦共用。

  • 如果有 于 Search 所需的 JRE 版本,且 JAVA_HOME 變數已設定為該版本,建議您在不同的 伺服器上安裝 Search。 如果您變更 JAVA_HOME 變數的值,可能會導致其他已安裝的軟體失敗。

  • 如果伺服器 JRE 的版本 等於或更新 于 Search 所需的最小值,而且組態精靈無法辨識它,請將 JAVA_HOME 變數的值設定為該版本。 此動作會在 JRE 安裝指南中說明。 然後,重新執行設定精靈。

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

    • 在未安裝 JAVA 的伺服器上,使用搜尋延伸模組安裝Azure DevOps Server。 不建議超過 250 位使用者或 CPU 使用率超過 50% 或多個 AT 的動作)
    • 與Azure DevOps Server不同的伺服器上安裝搜尋和 JRE

注意

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

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

從 Oracle Server JRE 遷移至 Zulu OpenJDK

Azure DevOps Server中的搜尋同時支援 Azul Zulu OpenJDK 和 Oracle JRE,可讓您根據需求來選擇它們。 在安裝期間選取 JRE 時,Azure DevOps Server預設為 Azul Zulu OpenJDK 8。

若要變更為 Azul Zulu OpenJDK,請遵循下列步驟:

JAVA 移轉流程

如需詳細資訊,請參閱 GitHub Code-Search JAVA 移轉

注意

  • 如果您選擇使用 Azul Zulu OpenJDK,請確定您 下載第 8 版

功能可用性

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

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

設定考慮

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

  • 設定搜尋時,預設會啟用工作專案和 Wiki 搜尋。 如有必要,您可以從 Azure DevOps Server 的 [管理擴充功能] 頁面移除這些擴充功能

  • 您必須針對您想要使用它的每個Azure DevOps Server集合安裝程式碼搜尋延伸模組。 一開始設定搜尋時,您可以設定核取方塊來 自動安裝現有和新專案集合的程式碼搜尋延伸模組 ,以自動化此程式

    • 如果您未設定核取方塊來安裝所有專案集合的程式碼搜尋延伸模組,PCA 可以從本機資源庫安裝它。 請確定您從 Azure DevOps Server 入口網站頁面移至本機資源庫 http://{Server}/_gallery () 。 如需詳細資訊,請參閱本機資源庫中 的安裝擴充功能

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

  • 為了達到最大效能,搜尋索引資料夾應該位於個別的快速硬碟上,並由快速儲存體支援,例如固態硬碟 (SSD) 或存放區域網路 (SAN) 。 配置最多 150% 的大小以編制索引的所有存放庫。 這是最糟的情況。 實際耗用的空間取決於程式碼檔案的數量和類型,以及該集合中的工作專案和 Wiki 頁面數目

    • 除非指定,否則索引服務和 Elasticsearch 引擎會在安裝期間使用網路服務帳戶來建立及存取索引檔案。 如果您選擇不同的帳戶,它必須具有 「以服務身分登入」 許可權
    • 限制索引磁片和資料夾的許可權,以保護索引免于意外或惡意修改或刪除。 設定服務的適當安全性設定
  • 當您設定搜尋具有 多個應用層的伺服器 (AT) 時,請確定它已安裝在不同的 伺服器上。 在遠端伺服器上安裝搜尋之後,請在任一 AT 伺服器上使用 [設定精靈],將遠端搜尋實例與您的Azure DevOps Server實例連結。 在未來取消設定搜尋時,您必須在原本執行設定的相同 AT 伺服器上使用 [設定精靈]

升級您的伺服器

  • 如果您在已設定 Search 的伺服器上執行 生產階段前升級 ,則必須再次重新設定搜尋,以避免損毀生產實例。 沒有任何選項可將搜尋設定為生產階段前升級的一部分。 相反地,請在生產前升級完成之後進行設定。 您可以在設定期間取消核取 [自動安裝和設定所有現有和新集合的程式碼搜尋 ]。 相反地,在設定完成之後,只針對一或兩個集合安裝搜尋延伸模組

  • 如果您要在設定 [搜尋] 且您想要保留搜尋的伺服器上執行 生產升級 ,請核取 [安裝及設定搜尋] 旁的方塊。 精靈會偵測現有的搜尋實例,並自動選取[使用現有的搜尋實例],並預先填入您目前的搜尋服務 URL。 只有在您想要在同一部伺服器上設定新的 Search 實例時,才使用 [安裝新的搜尋實例 ] 選項。 設定新的實例會導致重新編制所有程式碼、工作專案和 Wiki 的索引,視集合的大小而定,可能需要一些時間。 在編制索引期間,使用者可能會看到部分搜尋結果

  • 如果您要 將伺服器升級至新的硬體,您有下列兩個選項。 根據先前設定的搜尋方式,從這些選項中選取:

    • 如果 [搜尋] 位於與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. 從本機資源卸載搜尋延伸模組,例如程式碼、工作專案或 Wiki,從您的Azure DevOps Server
    5. 從您的目標Azure DevOps Server實例流覽至集合,以安裝本機資源庫的搜尋延伸模組

在不同的伺服器上安裝或更新搜尋

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

  1. 當您在主伺服器上安裝Azure DevOps Server時,請在 [伺服器設定精靈] 的 [搜尋] 頁面中設定[安裝及設定搜尋] 核取方塊。

  2. 選取 [使用現有搜尋服務的選項。

  3. 使用精靈中提供的搜尋服務套件連結,存取本機電腦上的一組搜尋安裝程式檔案。 然後,將這些檔案複製到遠端伺服器。

    個別的伺服器安裝

  4. 請依照位於安裝程式檔案集的Readme.txt檔案中的指示,在遠端伺服器上安裝或更新搜尋服務。

  5. 安裝完成之後,請將產生的搜尋伺服器 URL 複製到Azure DevOps Server實例上執行的組態精靈的 [搜尋 URL] 欄位。

  6. 當這兩個安裝都完成時,請為這兩部伺服器設定適當的 安全性設定

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

搜尋認證

若要從 TFS 2018 Update 1.1 升級至 TFS 2018 Update 3 或搜尋重新設定,只有使用者資訊自動填入和系統管理員必須提供密碼認證。 系統管理員可以選擇提供不同的使用者名稱和密碼。 如果搜尋服務與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 2017 Update 1 包含更新的搜尋元件。

    • 如果在升級期間已在 TFS 2017 RTM 中設定搜尋服務,如果在升級的 TFS 上設定搜尋服務,搜尋服務元件就會自動更新。
    • 如果在遠端伺服器上設定搜尋,請遵循 指示 進行更新。
  • TFS 2017 Update 2 包含工作專案搜尋。 它會使用與程式碼搜尋相同的搜尋服務。

    • 如果在升級期間已在 TFS 2017 RTM/Update1 中設定搜尋服務,搜尋服務元件會在升級的 TFS 上設定搜尋服務時自動更新。
    • 如果已在遠端伺服器上設定 Search,請遵循 指示 進行更新。
  • TFS 2018 Update 2 包含更新的搜尋元件和 Wiki 搜尋。

    • 如果在升級期間已在 TFS 2017 RTM、Update1、Update2 或 TFS 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. 移除搜尋功能:

    • 開啟 Azure DevOps Server 管理主控台
    • 在左窗格中,選取伺服器的名稱
    • 在右窗格中,選擇 [移除功能]
    • 在 [移除功能] 對話方塊中,選取[搜尋服務],然後選擇 [移除]
  3. 移除 Elasticsearch 服務:

    • 以系統管理員身分開啟命令提示字元
    • 變更目錄:
      • 針對 TFS 2017 RTM, cd "C:\Program Files\Microsoft Team Foundation Server 15.0\Search\ES\elasticsearch-1.7.1-SNAPSHOT\bin"
      • 針對 TFS 2017 Update 1, cd "C:\Program Files\Microsoft Team Foundation Server 15.0\Search\ES\elasticsearch-2.4.1\bin"
      • 針對 TFS 2018 Update 2 和更新版本,以及Azure DevOps Server,cd "C:\Program Files\Microsoft Team Foundation Server 15.0\Search\ES\elasticsearch-5.4.1\bin"
    • 移除服務:
      • 針對 TFS 2017, "service.bat remove"
      • 針對 TFS 2018 和 Azure DevOps Server,"elasticsearch-service.bat remove"
  4. 移除搜尋資料:

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

    • 刪除環境變數 "SEARCH_ES_INDEX_PATH"
    • 刪除環境變數 "ES_HEAP_SIZE" (TFS 2018 Update 2 和更新版本已過時,Azure DevOps Server)

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

  1. 針對安裝程式碼、工作專案或 Wiki 的每個集合卸載搜尋延伸模組。 移至 Azure DevOps Server 實例中每個集合的 [管理延伸模組] 頁面。

    螢幕擷取畫面:檢查是否已安裝延伸模組

    檢查延伸模組已安裝的螢幕擷取畫面

  1. 移除搜尋功能:

    • 開啟 [移除功能] 對話方塊中的 [管理主控台]
    • 在左窗格中,選取Azure DevOps Server的名稱
    • 在右窗格中,選擇 [移除功能]
    • 在 [移除功能] 對話方塊中,選取[搜尋服務],然後選擇 [移除]
  2. 移除 Elasticsearch 服務和資料:

    • 以系統管理員身分開啟PowerShell
    • 開啟 [ 設定Search.ps1 ] 資料夾,以及遠端安裝搜尋所需的其餘檔案
    • 使用 remove 選項再次執行腳本:
      • 針對 TFS 2017 RTM, "Configure Search.ps1 -RemoveTFSSearch"
      • 針對 TFS 2017 Update1 和更新版本,以及Azure DevOps Server,"ConfigureTFSSearch.ps1 -remove"

搜尋的限制

搜尋Azure DevOps Server有下列限制: