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

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

您可以移動或複製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

更新所有服務帳戶

您必須更新 TFSService) Azure DevOps Server (的服務帳戶,以及 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 中的服務帳戶和服務帳戶和相依性

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

  • 登入伺服器,並使用 ClientService Web 服務強制用戶端更新快取來追蹤工作專案和 Azure DevOps 版本控制。

    http://ServerName:8080/tfs/WorkItemTracking/v3.0/ClientService.asmx
    

    如需詳細資訊,請參閱 重新整理用戶端電腦上的資料快取

    如果您想要在下一次登入時重新整理所有使用者的整個快取,請使用 witadmin rebuildcache 命令。

    注意

    如果您將資料庫還原到不同的時間點,您也必須重新整理版本控制快取,如 重新整理用戶端電腦上的資料快取中所述。

通知使用者

既然您已移動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。 您可以在這裡深入瞭解Azure DevOps Server與 Project Server 的整合。