安裝和設定搜尋
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 實例中斷連結以附加至另一個實例,請執行下列步驟:
- 從來源 Azure DevOps Server 實例中斷連結集合
- 在目標 Azure DevOps Server 實例上設定搜尋(如果尚未完成)
- 將集合附加至目標 Azure DevOps Server
- 從 Azure DevOps Server 內的本機資源庫卸載您的搜尋延伸模組,例如 Code、Work 專案或 Wiki。
- 從您的目標 Azure DevOps Server 實例流覽至集合,以安裝本機資源庫的搜尋延伸模組
在個別伺服器上安裝或更新搜尋
若要在個別或遠端伺服器上安裝或更新 Search,通常當有超過 250 位使用者時,請執行下列步驟:
- 當您在主伺服器上安裝 Azure DevOps Server 時,請設定 [ 安裝和設定搜尋 ] 複選框。 在 [伺服器組態精靈] 的 [搜尋] 頁面中。
- 選取 [使用現有 搜尋服務 的選項。
- 使用精靈中提供的 搜尋服務 套件連結,存取本機計算機上的一組搜尋安裝程序檔案。 然後,將這些檔案複製到遠端伺服器。
- 請依照位於安裝程式檔案集的 Readme.txt 檔案中的指示,在遠端伺服器上安裝或更新 搜尋服務。
- 安裝完成之後,將產生的搜尋伺服器 URL 複製到在 Azure DevOps Server 實例上執行之設定精靈的 [搜尋 URL ] 字段。
- 當兩個安裝都完成時,請為這兩部伺服器設定適當的 安全性設定 。
安全搜尋
搜尋服務 使用已修改的 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 的電腦上取消設定搜尋
卸載每個集合的搜尋延伸模組。 移至 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"
在個別伺服器上取消設定搜尋
請執行下列步驟,以取消設定每個集合的搜尋,例如 Code、Work 專案或 Wiki。
移至 Azure DevOps Server 實例中每個集合的 [ 管理延伸模組 ] 頁面。
移除搜尋功能:
- 開啟 [移除功能] 對話框,管理員 istration Console。
- 在左窗格中,選取 Azure DevOps Server 的名稱。
- 在右窗格中,選擇 [ 移除功能]。
- 在 [移除功能] 對話框中,選取 [搜尋服務],然後選擇 [移除]。
拿掉 Elasticsearch 服務和數據。
- 以管理員身分開啟 PowerShell。
- 開啟 [設定 Search.ps1] 資料夾,以及遠端安裝 Search 所需的其餘檔案。
- 使用 remove 選項再次執行文稿:
"ConfigureTFSSearch.ps1 -remove".
搜尋的限制
搜尋 Azure DevOps Server 有下列限制:
- 如果您執行災害復原 (DR) 作業,並將伺服器移回先前的 SQL 資料庫快照集,請重新編制所有集合 的索引。
- 搜尋不可延伸,但您可以在 開發人員社群 上提交新功能要求。