安裝和設定搜尋

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

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

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

必要條件

硬體建議

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

提示

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

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

  • 在伺服器上具有搜尋的少於 250 位使用者, (通常用於示範和試用用途) :
    • 四核心處理器,最小) RAM (16 GB
    • CPU 使用率因數小於 50%
    • 固態硬碟支援的快速硬碟 (SSD) 儲存體
  • 個別伺服器上具有搜尋的少於 500 位使用者:
    • 雙核心處理器,最小) RAM (8 GB
    • 固態硬碟支援的快速硬碟 (SSD) 儲存體
  • 個別伺服器上具有搜尋的少於 1,000 位使用者:
    • 四核心處理器,最小) RAM (16 GB
    • 固態硬碟支援的快速硬碟 (SSD) 儲存體
  • 位於 不同伺服器上的搜尋超過 1,000 位使用者:
    • 四核心處理器,最小) RAM (16 GB
    • 固態硬碟 (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 Runtime Environment (JRE) 的運作安裝,則會提供下載並安裝最新支援版本的選項。 需要網際網路連線才能下載。 如果目標伺服器沒有網際網路連線,您必須先手動下載並安裝 JRE,才能嘗試安裝搜尋。
  • Azure DevOps Server使用Oracle Server JAVA Runtime Environment之前的搜尋版本。 在 Azure DevOps Server 中,預設 JRE 為Azul Zulu OpenJDK
  • 在安裝期間,精靈會將 JAVA_HOME 環境變數設定為指向 JRE 安裝資料夾。 如果設定精靈未正確設定,或 JAVA_HOME 設定指向搜尋所需的舊版,則設定精靈可能不會偵測到現有的 JRE 安裝。

注意

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

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

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

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

    • 在未安裝 JAVA 的伺服器上,使用搜尋延伸模組安裝Azure DevOps Server。 我們不建議針對超過 250 位使用者或大於 50% 或多個 AT 的 CPU 使用率採取此動作)
    • 與 Azure DevOps Server 不同的伺服器上安裝 Search 和 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 和更新版本。
  • TFS 2018 Update 2 和更新版本提供 Wiki 搜尋。
  • 工作專案和 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 的伺服器上執行 生產前升級 ,您必須再次完整重新設定 Search,以避免損毀生產實例。 沒有選項可將搜尋設定為生產前升級的一部分。 相反地,請在生產前升級完成之後進行設定。 您可以在設定期間取消核取 [自動安裝和設定所有現有和新集合的程式碼搜尋 ]。 相反地,在設定完成之後,請只為其中一或兩個集合安裝搜尋延伸模組

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

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

    • 如果 [搜尋] 位於與Azure DevOps Server不同的伺服器上,您必須在 [伺服器設定精靈] 中選取[安裝和設定搜尋],然後選取[使用現有的搜尋實例],並提供現有搜尋實例的 URL 來完成搜尋設定
    • 如果在舊伺服器上的Azure DevOps Server實例旁邊設定 [搜尋],您必須在 [伺服器設定精靈] 中選取 [安裝和設定搜尋]。 然後,如果您想要繼續共同裝載搜尋並Azure DevOps Server,請再次在新伺服器上選取 [安裝新的搜尋實例]。 所有集合的所有搜尋索引都會重新建立,視每個集合的大小而定,可能需要一些時間
  • 如果您要將集合與一個Azure DevOps Server實例中斷連結,以將其附加至另一個實例,請執行下列步驟:

    1. 從來源Azure DevOps Server實例卸離集合
    2. 如果尚未完成) ,請在目標Azure DevOps Server實例上設定搜尋 (
    3. 將集合附加至目標Azure DevOps Server
    4. 從本機資源卸載集合的搜尋延伸模組,例如 Code、Work 專案或 Wiki,Azure DevOps Server
    5. 從目標Azure DevOps Server實例流覽至該集合,以從本機資源庫安裝搜尋延伸模組

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

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

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

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

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

    個別的伺服器安裝

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

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

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

搜尋服務使用已修改版本的Elasticsearch (「搜尋」和「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 的伺服器上防火牆規則,以及所有Azure DevOps Server應用層伺服器)
    • 必要條件:Azure DevOps Server必須使用網域帳戶進行設定
    • 遵循要求加密和群組成員資格來隔離伺服器中的步驟
  • TFS 2017 Update 1 包含更新的搜尋元件。

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

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

    • 如果在升級期間已在 TFS 2017 RTM、Update1、Update2 或 TFS 2018 RTM 中設定搜尋服務,搜尋服務元件就會在升級的 TFS 上設定 搜尋服務自動更新。
    • 如果在遠端伺服器上設定搜尋,請遵循 指示 進行更新。

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

  • 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具有下列限制: