安裝和設定搜尋
Azure DevOps Server 2022 - Azure DevOps Server 2019
在本文中,瞭解如何安裝、設定,以及 卸載 在您自己的硬體上執行的 Azure DevOps Server 安全搜尋引擎。 如需詳細資訊,請參閱下列文章:
先決條件
- 若要安裝搜尋延伸模組,需成為組織的專案集合管理員(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 和更新版本開始,使用者可以從其存放庫中排除資料夾,以優化搜尋所耗用的磁碟空間。
軟體相依性
搜尋具有下列依賴項,這些依賴項會作為配置過程的一部分自動安裝:
- Elastic Elasticsearch。
- 搜尋會使用已修改的 Elasticsearch 版本。 它只適用於這個修改的版本。
- 較新版本的 Elasticsearch 隨附於 TFS 2018 Update 2 和更新版本,以及 Azure DevOps Server。 當您從舊版的搜尋結果升級時,所有內容都會在安裝之後重新編製索引。 根據內容量(程序代碼檔案、工作專案和Wiki頁面),重新編製索引可能需要一些時間才能完成。
- Elasticsearch NEST 用戶端。
-
Microsoft OpenJDK 版本 11 的組建。
- Microsoft 提供的 OpenJDK 版本不會自動安裝更新。
- Markdowndeep 由 Topten Software 提供。
- Roslyn 編譯程序平臺。
- ANTLR 語言辨識剖析器。
注意
- 系統或伺服器管理員必須確保伺服器 JRE 會與軟體提供者的建議一致地維護及更新。 另請參閱隨後的 Java 安裝注意事項。
- 定期 檢查更新。
Java 安裝注意事項
如果搜尋設定精靈未偵測到 Java 執行時間環境 (JRE) 的工作安裝,則會提供下載並安裝最新支援版本的選項。 需要因特網連線才能下載。 如果目標伺服器沒有因特網連線,您必須先手動下載並安裝 JRE,才能嘗試安裝搜尋。
在 Azure DevOps Server 之前的版本中,搜尋功能使用了 Oracle Server Java Runtime Environment。 Azure DevOps Server 使用 Elasticsearch 7.17.0 版,其具有 OpenJDK 的配套版本。
在安裝期間,精靈會將 JAVA_HOME 環境變數設定為指向 JRE 安裝資料夾。 如果設定不正確,則設定精靈可能無法偵測到現有的 JRE 安裝,或者如果 JAVA_HOME 設定指向的版本比搜尋所需的版本更舊,也可能無法偵測到。
注意
我們不建議在共用資源的計算機上安裝 Elasticsearch,特別是在具有多個應用層的大型企業環境中。 建議您在個別的專用機器中設定 Elasticsearch。 如此一來,JAVA 環境就不會在其他用途的機器之間共用。
如果 JRE 版本早於搜尋所需的最低版本,且 JAVA_HOME 變數設定為該版本,建議您在 個別的伺服器上安裝 Search。
如果 Server 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 位使用者或大於 50 個% 或多個 AT 的 CPU 使用率執行此動作。
- 在與 Azure DevOps Server 不同的伺服器
上安裝 Search 和 JRE。
注意
如果您使用 Oracle Server JRE 8,這是 TFS 中搜尋的預設值 (Azure DevOps Server 不使用 Oracle Server JRE 8),請注意下列資訊:
- 搜尋不會使用或支援 Server JRE 8 的任何商業功能。 因此,在搜尋設定期間,伺服器 JRE 的商業功能不會啟動或解除鎖定。
- 如果您選擇繼續使用 Oracle JRE,請連絡 Oracle 以取得 Java SE 訂閱,以便繼續接收 JRE 更新。
從 Oracle Server JRE 遷移至 Microsoft OpenJDK 組建
Azure DevOps Server 中的搜尋既支援由 Microsoft 組建的 OpenJDK,也支援 Oracle JRE,讓您可以根據需求在兩者之間進行選擇。
若要變更為由 Microsoft 建置的 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搜尋功能提供於 TFS 2018 Update 2 及其後的版本。
- 工作專案和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 的伺服器上執行 生產升級,並且希望保留 Search,請勾選 Install and Configure Search旁的核取方塊。 精靈會偵測現有的搜尋實例,並自動選取 使用現有的搜尋實例,並預先填入您目前的搜尋服務 URL。 只有當您想要在同一部伺服器上設定新的搜尋實例時,才使用 [安裝新的搜尋實例] 選項。 設定新的實例會導致您的所有程式碼、工作專案和Wiki再次編製索引,視集合的大小而定,可能需要一些時間。 在編製索引期間,使用者可能會看到部分搜尋結果
- 如果您要 將伺服器升級至新的硬體,您有下列兩個選項。 根據先前設定的搜尋方式,從這些選項中選取:
- 如果 Search 位於與 Azure DevOps Server 不同的伺服器上,您必須在 [伺服器設定精靈] 中選取 [安裝及設定搜尋],然後選取 [使用現有的搜尋實例],並提供現有搜尋實例的 URL 來完成搜尋設定
- 如果在舊伺服器上的 Azure DevOps Server 實例中配置了 Search,您必須在伺服器設定精靈中選取 安裝及設定 Search。 然後,如果您想要繼續共置 Search 和 Azure DevOps Server,請在新的伺服器上再次選取 [安裝新的搜尋實例。 所有集合的所有搜尋索引都會重新建立,視每個集合的大小而定,可能需要一些時間
- 如果您要 從一個 Azure DevOps Server 伺服器中分離集合,以將其附上至另一個伺服器,請執行下列步驟:
- 解除來源 Azure DevOps Server 實例的集合連結
- 在目標 Azure DevOps Server 實例上設定搜尋(如果尚未完成)
- 將集合附加至目標 Azure DevOps Server
- 從 Azure DevOps Server 內的 本機資源庫 卸載集合的搜尋擴充套件,例如 Code、工作項目或 Wiki。
- 從目標 Azure DevOps Server 實例瀏覽至 Local Gallery集合,以安裝搜尋擴充功能。
在個別伺服器上安裝或更新搜尋
若要在個別或遠端伺服器上安裝或更新 Search,通常當有超過 250 位使用者時,請執行下列步驟:
- 當您在主伺服器上安裝 Azure DevOps Server 時,請勾選 [安裝並設定搜尋] 複選框。 在 [伺服器設定精靈] 的 [搜尋] 頁面中。
- 選擇選項以 使用現有的搜尋服務。
- 使用精靈中提供的 搜尋服務套件 連結,存取本機電腦上的一組搜尋安裝程序檔案。 然後,將這些檔案複製到遠端伺服器。
- 依照位於安裝程式檔案集的 Readme.txt 檔案中的指示,在遠端伺服器上安裝或更新搜尋服務。
- 安裝完成之後,將產生的搜尋伺服器 URL 複製到在 Azure DevOps Server 實例上執行的組態精靈 搜尋 URL 字段。
- 當兩個安裝都完成時,請為兩部伺服器設定適當的 安全性設定。
安全搜尋
搜尋服務會使用 Elasticsearch的修改版本。 本節其餘部分會交替使用「搜尋」和「Elasticsearch」一詞。 系統管理員必須提供認證,無論搜尋服務位於與 Azure DevOps Server 相同的電腦上,還是位於不同的電腦上。 此動作是透過伺服器或搜尋組態精靈設定搜尋功能的一部分。 這些認證是新的,與任何預先存在的帳戶或伺服器認證無關。 它們可用來設定及連線到搜尋服務。 這些新的認證集合會在搜尋服務中啟用基本身份驗證。
若要從 TFS 2018 Update 1.1 升級至 TFS 2018 Update 3 或搜尋重新設定,只有使用者資訊會自動填入,系統管理員必須提供認證。 系統管理員可以視需要提供不同的認證。 如果搜尋服務位於與 Azure DevOps Server 相同的電腦上,系統管理員可以在 [設定精靈] 中提供一組新的認證,以視需要設定搜尋服務。 不過,如果搜尋服務位於遠端計算機上,系統管理員必須先將新的認證提供給 Search Service 設定腳本。
注意
- 認證值長度應介於8到64個字元之間。
- 搜尋認證只會驗證使用者,並確定未經驗證的用戶無法存取 Elasticsearch 端點。 不過,Elasticsearch 不支援 HTTPS,因此這些認證會透過網路傳送為 Base64 編碼字串。 如果有中繼存取要求的可能性,請根據您的公司安全性和合規性需求設定適當的安全性設定。
- 目的是透過使用IPSec加密,限制特定使用者或使用者群組的搜尋和索引存取,詳情如下所述。
請考慮使用IPSec保護 Windows 伺服器上 Elasticsearch 的下列技術:
使用僅驗證進行安全配置:
- 確保只有授權的使用者才能存取 Elasticsearch 埠。 它只需要服務器端的規則(僅限於執行 Elasticsearch 的伺服器上的防火牆規則)
- 必要條件:Azure DevOps Server 必須使用網域帳戶進行設定
- 請遵循 建立允許 IPsec 保護網路流量的防火牆規則中的步驟
使用驗證、完整性保護和加密設定安全性:
- 確保加密和完整性保護會隨著驗證一起套用。 它需要客戶端和服務端的規則(在運行 Elasticsearch 的伺服器上的防火牆規則以及所有 Azure DevOps 伺服器應用層的防火牆規則)
- 必要條件:Azure DevOps Server 必須使用網域帳戶進行設定
- 請遵循通過要求加密和群組成員資格來隔離伺服器的步驟
升級搜尋功能
TFS 2018 Update 2:包括更新的搜尋元件和Wiki搜尋。
- 如果在 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 的電腦上解除設定搜尋
卸載每個集合的搜尋延伸模組。 移至您的 Azure DevOps Server 實例中每個集合的 管理擴充功能 頁面:
移除搜尋功能:
- 開啟 Azure DevOps Server 管理控制台。
- 選取伺服器的名稱。
- 選擇 [移除功能]。
- 選取 [搜尋服務],然後選擇 [移除]。
移除 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、工作項目或 Wiki 等。
移至 Azure DevOps Server 實例中各個集合的 管理延伸模組 頁面。
移除搜尋功能:
- 在管理控制台中開啟[移除功能]對話框。
- 在左窗格中,選取 Azure DevOps Server 的名稱。
- 在右窗格中,選擇 移除功能。
- 在 [移除功能] 對話框中,選取 [搜尋服務],然後選擇 [移除]。
拿掉 Elasticsearch 服務和數據。
- 以系統管理員身分開啟 PowerShell。
- 開啟 [設定 Search.ps1] 資料夾及遠端安裝 Search 所需的其他檔案。
- 使用 remove 選項再次執行腳本:
"ConfigureTFSSearch.ps1 -remove".
搜尋的限制
在 Azure DevOps Server 上搜尋時有下列限制:
- 如果您執行災害復原 (DR) 作業,並將伺服器移回到較早期的 SQL 資料庫快照時,則應 重新編制您所有集合的索引。
- 搜尋不可延伸,但您可以在 開發人員社群上提交新功能要求。