實踐分享:如何安全快速地從 Centos遷移到openEuler
去年年底,Centos 8 停止維護更新的訊息,在業內掀起極大的關注。遷移CentOS也不是一件簡單的事兒;不僅要對作業系統及其上搭載的應用軟體和業務系統進行替代、適配、遷移和重構等,也要綜合考慮其穩定性、安全性和靈活性,還有一些遷移成本、夥伴生態等等。
在進行一些調研後,我們使用了openEuler。其原因在於,首先作業系統openEuler核心源於Linux,支援場景多樣,比較穩定易用。其次,它有比較完善的相容評估與分析工具,減少我們部分工作。再有,它的夥伴生態發展比較不錯,處理器、整機、基礎軟體、應用軟體、行業客戶等都能覆蓋到,也有十來家主流osv基於 openEuler 作業系統釋出了商業發行版。社群開發者也比較活躍,提及的疑問或需求都能給予一些支援。而且openEuler是開源的,從成本到應用,總體感覺比較不錯。
下面,我來分享下從Centos遷移到openEuler的經驗;希望對大家有幫助。
1.遷移概述
1.1 遷移注意事項
遷移關鍵問題:
CentOS到openEuler,無論是核心、基礎軟體包都有了一定的變化。分析認為OS遷移面臨的關鍵問題有三個:
- 已有軟體是否可以在新系統執行,包括軟體安裝與功能是否存在問題
- 硬體與新OS是否相容
- 已經做過的相關配置是否可以繼承到新OS
遷移實施注意事項:
- 可能對現網業務有影響,請提前規劃時間視窗和資源
- 現網資料請注意備份
- 建議嚴格按照文中描述的流程執行
- 現網業務建議專業人員實施遷移,建議聯絡作業系統廠家運維人員提供技術指導
1.2 遷移方案綜述
作業系統和應用軟體的遷移主要包含如下三步:
① 遷移評估(軟體、硬性、配置)
② 遷移適配(軟體適配、硬性適配、依賴缺失、配置差異)
③ 遷移實施(單機、主備、分散式)
openEuler社群的遷移工具x2openEuler提供了①遷移評估能力,根據評估結果,如果存在相容性問題,參照本文中的②遷移適配指導,適配完成後開展③遷移實施;如果無相容性問題,則直接開展③遷移實施,通用方案包含新增、擴容、原地替換三種場景以及單機、主備、分散式等軟體形態。
2.遷移評估
openEuler社群提供的x2openEuler工具從如下角度分析並生成相容性評估報告:
- 軟體評估
通過識別應用軟體依賴的軟體包清單資訊,對rpm/tar/zip/gzip/jar/py/pyc/sh/bin應用進行掃描評估,並生成.html評估報告。
- 配置收集與評估
支援對使用者環境資料進行收集並生成json格式檔案,支援收集硬體配置、配置介面、核心選項配置引數、系統配置引數(sysctl/proc/sys)、環境變數、服務、程序、埠、命令介面、系統呼叫項和裝置驅動介面等資訊,並完成配置資訊分析評估。
- 硬體評估
評估執行環境的整機(x86/aarch64)、整機板卡(RAID/NIC/FC/IB/GPU/SSD/TPM)是否在openEuler相容性清單。
工具詳細使用方法和功能請參考x2openEuler使用指南
2.1 安裝遷移評估工具x2openEuler
根據架構下載最新版本工具
wget http://repo.oepkgs.net/openEuler/rpm/openEuler-20.03-LTS-SP1/contrib/x2openEuler/x86_64/Packages/x2openEuler-2.0.0-430.x86_64.rpm
安裝x2openEuler工具
yum install x2openEuler-x.x-x.x86_64.rpm
2.2 應用軟體相容性評估
此處以評估read-os-1.0.0-1.el7.aarch64.rpm應用包並輸出軟體評估報告為例,請根據實際情況選擇所需引數並替換為需要掃描的軟體包或軟體包目錄。
x2openEuler scan read-os-1.0.0-1.el7.aarch64.rpm
根據報告提示,存在不相容的依賴包和介面,請參考本文3.1-3.2章節完成適配。
2.3 硬體相容性評估
此處以分析本地硬體資源資訊為例,請根據實際情況選擇分析本地硬體資源資訊或外部匯入硬體資訊資料。
x2openEuler hardware-analyse
根據報告提示,存在不相容的硬體,請參考本文3.3章節完成硬體適配。
2.4 配置相容性評估
此處以評估本地配置資訊為例,可根據實際情況選擇所需引數並替換為需要進行評估的外部匯入資料。
x2openEuler conf-analyse
根據報告提示,存在有變化的配置需要檢查,請參考本文3.4章節完成配置適配。
3.遷移適配
遷移適配工作從分析評估報告展開,針對報告裡的錯誤詳情實施不同的適配動作。
3.1 應用軟體移植
以2.2章節read-os-1.0.0-1.el7.aarch64.rpm評估報告為例,從介面層面可知,呼叫的介面發生了變化,經過分析後該案例由於依賴了“已移除的介面”,
需要聯絡軟體廠家或者自研軟體責任方進行適配。
對於相容的軟體可直接使用。
3.2 OS軟體包適配
以2.2章節read-os-1.0.0-1.el7.aarch64.rpm評估報告為例,發現依賴軟體包中有缺失的包如下,
則需要參考軟體相容性適配流程完成包引入。適配完成後,將軟體包引入至軟體倉庫及根據需要重新整理軟體相容性清單。
對於相容的軟體可直接使用。
3.3 硬體適配
以2.3章節硬體評估報告為例,“是否在相容清單”存在“待確認”的硬體型別
需要參考硬體相容性測試服務,引導硬體廠家或社群開展適配,適配完成後將適配驅動釋出至軟體所倉庫及重新整理相容性清單。
“是否在相容清單”為“是”的硬體表示已經過相容性認證,直接執行下一步。
3.4 配置適配
分析配置評估報告,x2openEuler工具自動將系統配置分成靜態和動態兩種,使用者僅需結合自身實際業務訴求和調優策略不同,對各項差異進行對比,選擇需要修改的配置,編寫自動化指令碼,實現一鍵配置同步。
4.遷移實施(已有系統替換)
遷移實施前,需要提前熟悉軟體部署架構及部署組網,針對性輸出對應場景的遷移方案。目前 openEuler 提供主流場景的遷移方案,如大資料、分散式儲存、虛擬化、容器、資料庫軟體,成功支撐多個行業使用者完成遷移工作,具體遷移專案支撐請聯絡openEuler運維人員提供技術指導。搬遷實施過程主要包括停止業務、備份隔離、系統部署、配置同步、應用部署、業務割接核心步驟。
4.1停止業務
進行搬遷實施前需申請停機視窗和準備工作,根據業務場景和割接難度評估停機維護視窗。針對遷移實施中常見的單機、主備、分散式叢集場景,不同應用軟體可以做到短暫中斷業務或完全不中斷,具體場景需結合應用軟體單獨分析,常見的三種場景情況如下:
-
單機軟體:業務中斷,停機x小時
-
主備軟體:不停機
-
分散式叢集軟體:不停機
4.2備份隔離
為保障搬遷過程業務應用安全性,防止搬遷過程資訊的丟失,建議搬遷前做好備份,隔離是為了防止搬遷過程影響其他正常業務執行。針對不同業務場景執行容災備份、網路隔離等可結合業務軟體具體的特性進行實施,如Mysql資料庫場景可通過xtrabackup等工具進行快速備份還原。
4.3系統部署
系統部署可使用系統部署工具進行自動化批量部署,大幅提升部署效率。部署過程可基於gkit工具搭建pxe伺服器,同步配置檔案後可快速完成安裝過程:
-
配置pxe伺服器資訊
-
匯入配置的模板,點選安裝,自動配置pxe伺服器
-
確認Pxe服務狀態為綠色,表示pxe伺服器搭建完成
-
進入伺服器kvm,設定伺服器從pxe啟動並重啟
-
後續步驟自動完成,同步配置ip,OS安裝完成
4.4配置同步
根據3.4章節完成適配動作,基於x2openEuler整合的配置工具,實現系統引數配置、服務狀態配置等一鍵同步,確保基礎執行環境及狀態資訊同步移植,保證業務搬遷後系統執行環境狀態一致。
4.5應用部署
應用部署前可將需要部署的應用打包成RPM包形式,通過編寫應用部署安裝指令碼,在實驗環境上進行驗證,確保部署指令碼的準確性。進行基礎驗證後,將指令碼批量拷貝到待部署的伺服器執行,完成自動化應用部署。針對主流的開源軟體,如大資料、資料庫、虛擬化、容器等,openEuler已提供完備的rpm包,可直接應用和部署。
4.6業務割接
業務割接環節需要考慮應用軟體自身特性,做到儘可能小的中斷業務並高效的平滑搬遷。針對單機、主備、分散式叢集軟體,業務割接過程如下:
- 單機軟體
該類軟體遷移時,涉及到作業系統切換,基本上會中斷業務,需要充分考慮遷移造成的中斷影響,選擇合適的視窗進行遷移,可考慮藉助備用伺服器,割接式遷移。割接完成後保留原節點x天觀察新節點業務執行情況,x天后銷燬原節點。
- 主備軟體
該類軟體遷移時,可不中斷業務,先備後主,基於主備狀態同步機制,平滑遷移。隔離備節點伺服器,在備節點重新部署OS和業務,基於主備同步機制實現主備同步,然後通過主備倒換將升級OS後的備節點倒換成主節點,另一個節點以相同的方式進行OS升級。主備切換後觀察新的主節點業務執行情況,x天后替換備節點。
- 分散式叢集軟體
該類軟體遷移時,不中斷業務,可以基於分散式軟體自帶的伸縮擴容機制,通過滾動替代的方式實現平滑遷移。將需要替換的節點進行隔離,然後重新部署新的OS,再加入到原有叢集中。切換1/3數量節點後觀察新的節點業務執行情況,x天后替換舊節點。
5.遷移實施(新增擴容)
系統部署可使用系統部署工具進行自動化批量部署,大幅提升部署效率。部署過程可基於gkit工具搭建pxe伺服器,同步配置檔案後可快速完成安裝過程:
-
配置pxe伺服器資訊
-
匯入配置的模板,點選安裝,自動配置pxe伺服器
-
確認Pxe服務狀態為綠色,表示pxe伺服器搭建完成
-
進入伺服器kvm,設定伺服器從pxe啟動並重啟
-
後續步驟自動完成,同步配置ip,OS安裝完成
5.2配置同步
根據【遷移適配】章節完成適配動作,基於x2openEuler整合的配置工具,實現系統引數配置、服務狀態配置等一鍵同步,確保基礎執行環境及狀態資訊同步移植,保證業務搬遷後系統執行環境狀態一致。
5.3應用部署
應用部署前可將需要部署的應用打包成RPM包形式,通過編寫應用部署安裝指令碼,在實驗環境上進行驗證,確保部署指令碼的準確性。進行基礎驗證後,將指令碼批量拷貝到待部署的伺服器執行,完成自動化應用部署。針對主流的開源軟體,如大資料、資料庫、虛擬化、容器等,openEuler已提供完備的rpm包,可直接應用和部署。
6.總結
以上便是我的一些經驗與方法,雖然過程中存在很多疑問,但好在社群開發者很熱情,整體來說比較順暢。分享這篇部落格,也是希望能給朋友們帶來一些幫助,一起交流交流。
- 玩轉機密計算從 secGear 開始
- openEuler資源利用率提升之道06:虛擬機器混部OpenStack排程
- openGauss Cluster Manager RTO Test
- JVM 鎖 bug 導致 G1 GC 掛起問題分析和解決【畢昇JDK技術剖析 · 第 2 期】
- 手把手帶你玩轉 openEuler | openEuler 的使用
- 681名學生中選!暑期2021開啟火熱“開源之夏”!
- 手把手帶你玩轉 openEuler | 初識 openEuler
- StratoVirt 中的 PCI 裝置熱插拔實現
- 使用 NMT 和 pmap 解決 JVM 資源洩漏問題
- JNI 中錯誤的訊號處理導致 JVM 崩潰問題分析
- Java Flight Recorder - 事件機制詳解
- 畢昇 JDK 8u292、11.0.11 釋出!
- StratoVirt 中的虛擬網絡卡是如何實現的?
- openEuler結合ebpf提升ServiceMesh服務體驗的探索
- 我的openEuler社群參與之旅
- StratoVirt 的中斷處理是如何實現的?
- 看看畢昇 JDK 團隊是如何解決 JVM 中 CMS 的 Crash
- 使用 perf 解決 JDK8 小版本升級後效能下降的問題【畢昇JDK技術剖析 · 第 1 期】
- 2021年畢昇 JDK 的第一個重要更新來了
- 漏洞盒子 × openEuler | 廣邀白帽共築安全的Linux開放應用生態