針對 Azure DevOps 內部部署,將一個硬體移動或複製到另一個硬體

Azure DevOps Server 2022 |Azure DevOps Server 2020 |Azure DevOps Server 2019

您可以移動或複製 Azure DevOps Server 軟體的部署。 您可以將 Azure DevOps Server 從一部計算機移至另一部計算機,方法是將它還原至稱為還原型移動) 的新硬體 (。 例如,您可能想要將 Azure DevOps Server 移至具有更高容量或改善處理速度的伺服器。 當您移至新的伺服器時,不會遺失任何專案歷程記錄。

若要複製 Azure DevOps Server 部署,您可以執行與移動相同的步驟,再加上一些額外的步驟。

當您計劃停止使用原始硬體並 Azure DevOps Server 部署時,您會執行移動。 當您想要繼續使用原始 Azure DevOps Server 實體時,您會執行複製。

重要

在某些情況下,您可能會想要變更 Azure DevOps Server 部署的網域及其硬體。 變更網域是以環境為基礎的移動方式,因此,您絕不能合併這兩種移動類型。 請先完成硬體移動,再變更環境。

檢查您的權限

若要成功移動 Azure DevOps Server,您必須是兩組硬體 (舊版和新) 的系統管理員。 此外,您必須是系統管理員 (,或具有 Azure DevOps Server 的對等許可權) ,以及部署所依賴的所有軟體:SQL Server、報告,以及部署互操作的任何其他軟體,例如 Project Server。

請確定您是下列群組的成員

  • 伺服器:系統管理員 (本機 Administrators 群組或對等群組)
  • Azure DevOps Server:Team Foundation 系統管理員和 管理員 主控台使用者
  • SQL Server:sysadmin

如果您不是其中一或多個群組的成員, 請立即取得許可權

備份資料庫和加密金鑰

  1. 開啟 [Azure DevOps Server 的管理控制台],然後在 [排程備份] 頁面上,進行完整備份。 您在備份計劃中設定備份的所有項目皆會進行備份,但是會立即執行,而不會遵循計劃中排程的時間。 如果您的部署使用報告功能,您可以將加密金鑰備份為此備份組的一部分。

    您可以在工作完成時關閉視窗

    (如果您尚未設定備份,您必須先 建立計劃 ,才能進行完整備份。)

  2. 一旦完成份,請確認備份是否可用於儲存裝置或網路共用,以及您是否可從新硬體存取此備份。

在新的資料層伺服器上安裝及設定 SQL Server

  • 在新伺服器上安裝 SQL Server,並確定其運作正常。 如果之前的部署使用報告功能,請務必包含 Reporting Services 和 Analysis Services 元件。 您必須安裝先前使用的相同版本,包括 Service Pack 和累計更新層級。

    安裝 SQL Server 2008 R2 - 功能

    或者,您也可以在已安裝相符版本的伺服器上建立 SQL Server 實例,並將 Azure DevOps Server 資料庫還原至該實例,但這需要更多還原後設定。

    如需安裝和設定 SQL Server 選項的詳細資訊,請前往這裡

    在安裝 SQL Server 之後,如果您的部署中含有報告功能,請開啟 SQL Server Management Studio,並移除 ReportServer 和 ReportServerTempDB 資料庫。 否則,您可能無法使用為 Azure DevOps Server 資料庫建立的備份還原這些資料庫。

    還原資料庫之前必須先中斷連結現有資料庫

在新應用程式層伺服器上安裝及設定軟體

若要為 Azure DevOps Server 設定新的伺服器或伺服器,您必須先安裝並設定支援它所需的軟體。 此軟體包括下列元件:

  • 部署組態支援的作業系統

  • 如果未預設) 設定 Windows、IIS (,並確定伺服器及其軟體正常運作。 

    如需詳細資訊,請參閱 Azure DevOps Server的系統需求

還原 Azure DevOps Server 資料庫

若要使用還原工具來還原 Azure DevOps Server 資料庫,您必須在新的數據層伺服器上安裝但未設定 Azure DevOps Server,然後在 [排程備份] 節點中使用還原功能。

如果您想要使用 SQL Server 還原工具來手動還原 Azure DevOps Server 資料庫,可以,但這是較難的程式。 此外,您還必須手動結束新部署中資料庫的靜止狀態。 Azure DevOps Server 中的還原精靈會在還原過程中自動為您執行此動作,但該功能不是 SQL Server 還原工具的一部分。

  1. 啟動 Azure DevOps Server 安裝媒體。 在 [Team Foundation Server 安裝程式 ] 頁面上,選擇 [ 安裝]。

  2. 安裝完成時, Team Foundation Server 組態中心隨即 開啟。 將它關閉。

    管理主控台會在未設定的狀態中自動開啟。 這是預期行為。

  3. 若要啟動 [還原精靈],請開啟 Azure DevOps Server 的管理控制台,然後開啟 [排程備份]。

    啟動還原精靈

  4. 指定備份組的路徑,並選擇靜止舊部署之後所建立的備份組。

    選擇網路路徑,然後選擇要還原的備份組

  5. 完成精靈並將資料庫還原至新的 SQL Server 執行個體。

    資料庫已還原至新伺服器

(複製選項) 重新設定伺服器 ID 並重新對應資料庫

注意

PrepareClone 在建立新的 Azure DevOps Server 部署之前,建議先使用已在另一部伺服器上生產環境的資料庫備份來建立新的部署。 不再需要此命令,因為我們已將其功能併入設定精靈中的生產階段前升級和複製案例中。

如果您想要繼續使用原始 Azure DevOps Server 實例,請在新的應用層伺服器上執行下一組步驟。 這些是避免一或兩個部署都損毀之風險的必要步驟。 如果這兩部伺服器都處於實時狀態,您最後可能會發生損毀,特別是當它們指向相同的報告資源時。

  1. 以系統管理員身分開啟 [命令提示字元] 視窗,並將目錄變更為 Drive:%programfiles%\TFS 12.0\Tools。 開啟命令提示字元視窗,輸入:

  2. 執行 TFSConfig PrepareClone 命令,以移除排程備份和報告資源的相關信息。

    TFSConfig PrepareClone /SQLInstance:ServerName /DatabaseName:DatabaseName /notificationURL: ApplicationTierURL
    
  3. 執行 TFSConfig ChangeServerID 命令,以變更與資料庫相關聯的伺服器 GUID。 GUID 在部署 Azure DevOps Server 內必須是唯一的。

    TFSConfig ChangeServerID /SQLInstance:ServerName] /DatabaseName:ConfigurationDatabaseName [/ProjectCollectionsOnly] [/ConfigDBOnly] [/usesqlalwayson]
    
  4. 執行 TFSConfig RemapDBs 命令,將複製的 Azure DevOps Server 重新導向至其資料庫。

    TFSConfig RemapDBs /DatabaseName:ServerName;DatabaseName /SQLInstances:ServerName1,erverName2 [/AnalysisInstance:ServerName] [/AnalysisDatabaseName:DatabaseName] [/review] [/continue] [/usesqlalwayson]
    

設定應用層伺服器

  1. 從 Azure DevOps Server 的管理控制台中,選擇 [設定已安裝的功能] 以啟動組態中心。

  2. 啟動 [僅限 Application-Tier 精靈],然後在 [資料庫] 中指定您還原 Azure DevOps Server 資料庫的新 SQL Server 實例。 從清單中選擇 Tfs_Configuration 資料庫。

    選取 SQL Server 和資料庫備份組

  3. 在關閉精靈的最後一頁之前,請尋找 “i” 符號。 這表示可供您日後參考的資訊。 最後一頁也包含組態記錄檔的位置。

    注意所有問題和記錄檔的位置

更新 Azure DevOps Server URL

  1. 移至應用層節點,並查看通知和入口網站 URL。 請注意,這些資訊仍然指向舊部署的位置。 請更新資訊。

    通知和 Web URL 都已過期

  2. 在以新伺服器名稱更新 URL 後,請檢閱資訊以確認資訊正確無誤。

    伺服器 URL 仍然使用 localhost

更新所有服務帳戶

您必須更新 Azure DevOps Server (TFSService) 的服務帳戶,以及 TFSReports) (數據源帳戶。 即使這些帳戶未變更,您還是必須更新資訊,以確保帳戶的身分識別和格式適用於新伺服器。

  1. 以系統管理員身分開啟命令提示字元視窗,並將目錄變更為 Drive:\%programfiles%\TFS 12.0\Tools。

  2. 在命令提示字元中,輸入下列命令以新增 Azure DevOps 的服務帳戶,其中 DatabaseName 預設為組態資料庫的名稱 (,TFS_Configuration) :

    TfsConfig 帳戶 /add /AccountType:ApplicationTier /account:AccountName/SQLInstance:ServerName/DatabaseName:DatabaseName

  3. 在命令提示字元中輸入下列命令,即可加入資料來源帳戶:

    TfsConfig 帳戶 /add /AccountType:ReportingDataSource /account:AccountName/SQLInstance:ServerName/DatabaseName:DatabaseName

    如需詳細資訊,請參閱 Accounts Command

更新組建伺服器

現在您必須將組建伺服器重新導向,以指向已移動 Azure DevOps Server 部署。

  1. 在每部組建伺服器上,開啟管理主控台,並停止組建服務。

  2. 在組建服務的屬性中,更新通訊屬性。

    停止服務,然後進行變更

設定 Reporting Services 和 Analysis Services

如果您的部署使用報表伺服器,您必須將 Azure DevOps Server 重新導向至其位置、重新啟動倉儲,然後手動重建 Analysis Services 的資料庫。 如果您不使用報告功能,請略過此程序。

  1. 移至 [報告] 節點。 列出的報表伺服器值是舊的,而不是新的,因此請編輯這些值。

    報表仍然指向舊的伺服器

  2. 將三個索引標籤上的值全數變更為指向新伺服器。 務必在新部署中提供正確的資料來源帳戶資訊。

    確定 3 個索引標籤中的資訊都正確無誤

  3. 選擇 [啟動作業 ] 以重新啟動報告。

  4. 選擇 [開始重建 ] 以重建倉儲。

確認使用者、群組和服務帳戶的使用權限

當您移至新的硬體之後,請確定部署的所有使用者、群組和服務帳戶都已設定在每一部伺服器上正確運作所需的權限。 有些使用權限 (例如 SQL Server 或本機電腦中的其他使用權限) 無法自動移轉。 例如,Azure DevOps 系統管理員必須是應用層伺服器上的本機 Administrators 群組成員,才能開啟管理控制台,因此您必須手動將它們新增至該群組。

  • 登入伺服器,並確定使用者、群組和服務帳戶已設定操作所需的權限。 在專案群組和小組中手動抽查成員資格,並確認這些群組和小組具有您預期的使用權限。

  • 流覽至專案集合,並確定該集合中的所有專案都如預期般出現,而且這些專案中的使用者可以適當地存取其工作專案。

  • 開啟入口網站,並確認小組網站和小組如預期般出現。

不確定有哪些群組和使用權限嗎? 如需詳細資訊,請參閱將使用者新增至專案設定專案集合的系統管理員許可權設定 Azure DevOps Server 的系統管理員許可權,以及 Azure DevOps Server 中的服務帳戶和服務帳戶和相依性

重新整理用戶端電腦上的資料快取

通知使用者

既然您已移動 Azure DevOps Server,您必須告訴使用者如何連線到已移動的部署。 具體來說,您需要為其提供下列資訊:

  • 入口網站的新伺服器名稱和 URL,以便重新連線到其專案

  • 如果報告是部署的一部分,則為報告的新資料庫名稱

  • 如果他們是使用 Git 的項目成員,則如何針對該專案的每個存放庫更新本機複製的指示。 具體來說,它們必須對每項複製品執行下列命令:

    git remote set-url <remote name> <new URL>
    

    使用者可以從 [總管] 索引標籤瀏覽專案,以查看每個複製的URL。

    複製要在其中手動複製儲存機制的 URL

設定備份

雖然您已排定舊部署的備份時間,已排程的備份不會變更為備份您所移動的部署。 您必須設定它們。

  • 在管理控制台中,移至 [排程備份] 節點,然後重新設定排程備份,以備份新伺服器上的 Azure DevOps Server 資料庫。 如需詳細資訊,請參閱 建立備份排程和計劃

問答集

問:我想要變更網域,而非實體伺服器。 可以這麼做嗎?

答:可以。 這稱為環境型移動,您可以 在這裡找到這些步驟。 您不該嘗試合併「以環境為基礎的移動」與「以硬體為基礎的移動」。 請先完成硬體移動,再變更環境。

問:我剛發現在移至新硬體之後,想要繼續使用舊 Azure DevOps Server。 可以這麼做嗎?

答: 是,但請務必立即執行其他步驟。 在理想情況下,您應該已在移動或複製步驟中執行這些步驟。 這是避免一或兩個部署都損毀之風險的最佳方法。 如果這兩部伺服器都處於實時狀態,您最終可能會損毀,特別是當它們指向相同的報告資源時。

若要修正這個問題:

  1. 在新伺服器上執行 TFSConfig PrepareClone 命令

  2. 在新伺服器上執行 TFSConfig ChangeServerID 命令

  3. 在新伺服器上執行 TFSConfig RemapDBs 命令

問:我的部署與 Project Server 整合在一起。 我是否需要執行任何額外的步驟,才能使用已移動的 Azure DevOps Server?

答:是,完成硬體移動之後,您必須使用 TFSAdmin ProjectServer/RegisterPWA 命令搭配 /tfs/force/pwa 選項,以重新向 Project Server 註冊 Azure DevOps Server。 您可以在這裡深入瞭解與 Project Server 的整合 Azure DevOps Server。