centos停服 遷移centos7.3系統到新搭建的openEuler

背景

=================

最近在做的事,簡單來講,就是一套系統差不多有10多臺虛擬機,都是centos系統,版本主要是7.3、7.6、7.9,現在centos停止維護了,轉為了centos stream,而centos stream的定位是:Red Hat Enterprise Linux (RHEL) 開發之前持續交付的發行版,作為rhel的上游,更新迭代比較頻繁,不穩定,對于生產系統來說是無法接受的。

那就只能轉其他系統,具體轉哪種呢,選擇是很多的,簡單列幾個我了解到的,和centos兼容性比較好,操作習慣也基本相同的操作系統,以下部分內容來自于大模型。

國際上來說的話,免費的主要有rocky linux、alma linux,這兩個我看網頁提到的比較多;有錢的話,可以直接買RHEL。

  • Rocky Linux

? 完全兼容RHEL: 由原 CentOS 創始人發起,與Red Hat Enterprise Linux(RHEL)實現100%二進制兼容,無縫遷移原有CentOS應用環境134。

? 長期支持:提供長達10年的更新周期(如Rocky Linux 9支持至2032年),社區驅動確保維護透明性259。

  • AlmaLinux

? RHEL克隆版:與RHEL完全兼容,由CloudLinux公司贊助,承諾長期維護(如AlmaLinux 9支持至2029年)128。

其他我看到的提到的,還有oracle linux(https://www.oracle.com/linux/)、VzLinux、Springdale Linux。

國內來說,免費的話,就是兩個:

  • Anolis OS(龍蜥操作系統)

? 背后是阿里,完全兼容CentOS生態:提供CentOS 7/8到Anolis OS的一鍵遷移工具,支持國產CPU架構(如鯤鵬、飛騰)。

  • openEuler (歐拉)

    背后是華為,高性能與多架構支持:優化內核調度,適配x86、ARM架構,適用于服務器、云計算、邊緣計算。

付費的話,操作系統我比較知道的是麒麟和統信,我們最近兩年上的項目,基本要求從硬件到軟件,都要信創,像服務端操作系統就是用的麒麟V10。

image-20250420101425735

而統信,我了解不多,聽說是一些桌面版操作系統在用,體驗貌似一般。

我之前,有點奇怪,為什么運維同事最終會選擇openEuler,技術上來說,感覺應該都還好,反正都是linux內核,從企業角度來說,為什么不選國外的rocky linux和alma linux,那自然是因為,一方面是信創要求,另一方面,是在出了難以解決的問題時,能尋求到技術支持,有時廠商還能幫忙背下鍋。

選擇國內的,為啥選了openeuler,而不是麒麟v10呢,那是因為麒麟v10是要收費的,能省點就省點唄。

那要免費,怎么選了openeuler而不是阿里龍蜥呢,我在查閱資料的過程中發現,麒麟V10,就是屬于openEuler生態,銀河麒麟V10服務器版基于openEuler社區的開源技術路線開發,其內核直接采用了openEuler的長期支持(LTS)版本。

這個在openeuler的官網就能看到:

https://www.openeuler.org/zh/download/commercial-release/

image-20250420102728051

所以,我估計,運維也是考慮到之前已經用了麒麟V10,大家用著比較習慣了,所以這次就直接選了openeuler。

而在我這一兩周用起來,感覺和用centos是一樣的,感覺和RHEL系兼容還是挺不錯。下面就開始介紹本次是準備怎么做遷移。

openEuler介紹

===========================

openEuler是一款開源操作系統。當前openEuler內核源于Linux,支持鯤鵬及其他多種處理器,適用于數據庫、大數據、云計算、人工智能等應用場景。

目前的版本(2025年4月),有這幾個(https://www.openeuler.org/zh/download/):

openEuler 25.03,這個是社區創新版本,我們一般不選;

然后主要的LTS是下面這幾個:

openEuler 24.03 LTS SP1

openEuler 22.03 LTS SP4

image-20250420105034301

運維組選定的是openEuler 22.03 LTS SP4。

我看了下,白皮書的內容還比較詳細,可以讀一下。

image-20250420104931360

額外說下,22.03就是表示是2022年03月發布的,但SP4不是這個時間發布的。

image-20250420105428330

另外,在白皮書中,可以看到該版本中的linux內核版本是5.10.

https://www.openeuler.org/whitepaper/openEuler 22.03 LTS SP4 技術白皮書.pdf

image-20250420105722769

遷移方式之遷移工具

=========================

openeuler也提供了遷移工具x2openeuler,可以看官網這里。

image-20250420105840171

image-20250420105907274

我畫了個簡單的圖,說明下這個工具的大體架構。這個工具,你可以理解成一個后臺管理系統,帶界面,后臺是python開發的,也帶個數據庫marial db。

image-20250420111038591

工具要對目標主機升級的時候,先把目標節點的ip加進來(以及ssh相關用戶名密碼),

image-20250420111350570

后續,python后臺,就會通過ssh通道,傳一些腳本到目標主機上執行,比如檢查環境是否滿足升級條件等等。

這其中,有個條件比較重要,就是目標主機需要配置一個yum源,其中需要提供openEuler操作系統的相關組件。

比如,我這邊就給目標主機配置了一個yum源:

image-20250420111700544

image-20250420111726390

[openEuler-everything]
name=openEuler-everything
baseurl=https://repo.openeuler.org/openEuler-22.03-LTS-SP4/everything/x86_64/
enabled=1
gpgcheck=1
gpgkey=https://repo.openeuler.org/openEuler-22.03-LTS-SP4/everything/x86_64/RPM-GPG-KEY-openEuler[openEuler-EPOL]
name=openEuler-epol
baseurl=https://repo.openeuler.org/openEuler-22.03-LTS-SP4/EPOL/main/x86_64/
enabled=1
gpgcheck=0[openEuler-2203-lts-sp4-update]
name=openEuler-2203-lts-sp4-update
baseurl=https://repo.openeuler.org/openEuler-22.03-LTS-SP4/update/x86_64/
enabled=1
gpgcheck=0

其他需要注意的,就是升級過程前,會檢查目標主機的磁盤空間是否足夠(因為需要從openEuler源下載各種軟件的rpm),我當時在本地虛擬機測試,磁盤空間小了,檢查一直通不過。

說下為啥最終怎么沒選用工具升級,因為對這個工具的研究還是不太深入,而且時間有點趕。這個工具是原地升級,工具內部怎么實現的,是黑盒;另外,本次測試,升級完成后,我發現,內核參數還是差了很多(這應該很多也是正常的,因為原系統是centos7.3,而openEuler的linux內核都是5.10了,比centos7.3的內核版本高了不少):

image-20250420112156566

當時就是黑盒的感覺比較重,然后時間也比較趕,我們這個服務器上有哪些東西我們也比較清楚(上面還有些源碼編譯的軟件,肯定是要重新裝,沒法遷移的,這個工具應該是只能遷移yum/rpm安裝的軟件)。另外,上線的時候,進行原地升級,我和運維同事認為,風險比較大,不如弄一臺新的機器出來,完全重新部署一遍(當然原地升級,其實也可以在線上對原來的虛擬機先打個快照了再操作,有問題就回滾快照),到時候有問題,流量切回原來的centos主機就行。

最終的升級思路

=======================

  • 計算線上的centos7.3服務器,進行過哪些變更,要盡量覆蓋完全

    那怎么才能知道有哪些差異呢,我們的方式是,我在本地弄了個虛擬機,從網上下載了centos 7.3 1611版本的iso,完全部署了一個全新的原始的centos 7.3.

    然后在原始7.3和線上7.3上,執行各種內核配置、配置文件查看/導出的命令,然后進行對比,就能找出差異項來。

  • 申請全新的機器,部署目標系統openEuler 22.03 LTS SP4,然后對前面計算出來的差異,逐一進行配置:包括操作系統級別、系統軟件級別、業務軟件級別的各種差異。

  • 最終上線時,先把原centos機器的ip(ip1)改成其他的(臨時ip),然后把openEuler的ip改成ip1,看看業務是否正常;如果有問題,就把openeuler機器關了,然后把centos機器的ip改回來,應該就能恢復正常。(可能需要考慮部分機器上有arp緩存)

升級步驟–差異計算

=========================

我們大概整理了這樣的文件(初版,不全),看看需要對哪些差異進行對比。其實,這也是最核心的部分,如果有遺漏,就可能會導致出問題。

當然,我們最終還會提交測試組進行業務測試,只要業務測試能通過,說明大的問題就沒有。

image-20250420113833871

最終整理的,比較全面的一個版本如下,通過對應的命令查看兩邊系統是否有差異,以下也部分涉及如何修改:

os層面

/etc/sysctl.conf

查看是否修改了內核參數。

sysctl -a

Copysysctl -a 這個的差異會比較多,需要仔細看一下。部分差異是正常的,比如本地虛擬機的內存、磁盤空間大小、網卡名稱、cpu個數不一致,都會導致一些內核參數的默認值不一樣

lang/locale

Copyecho $LANG
vim /etc/locale.conf如果有變更,則需要修改,如改成中文:
可先查看支持的中文locale:
[root@localhost ~]# locale -a|grep zh_CN
zh_CN.utf8vim /etc/locale.conf
LANG="zh_CN.utf8"刷新:
source /etc/locale.conf
[root@localhost ~]# echo $LANG
zh_CN.utf8

環境變量

Copy/etc/profile
/etc/bashrc
~/.bashrc

selinux

Copy[root@localhost ~]# getenforce
Enforcing (打開狀態)vim /etc/selinux/config 
修改:
SELINUX=disabled重啟服務器后,再次執行:
[root@localhost ~]# getenforce
Disabled

firewalld

Copysystemctl status firewalld
systemctl stop firewalld
systemctl status firewalldsystemctl disable firewalld

ip、dns

  • 設置ipv4

  • 設置ipv6

  • 設置dns服務器:

    Copyvim /etc/resolv.conf
  • 設置本地hosts

    Copyvim /etc/hosts

cron

Copyvi /etc/crontab

user

Copyvi /etc/passwd
vi /etc/group

內核模塊

查看內核模塊并按字母序排序,方便對比

Copylsmod | tail -n +2 | sort -k1

repo

Copycd  /etc/yum.repos.d/
ll

swap

Copyswapon --show
cat /proc/sys/vm/swappiness

軟件


接下來,我們需要查看原系統通過yum、rpm等方式安裝了哪些軟件。

yum

Copyyum --setopt=history_list_view=commands history list all

image-20250420115609744

rpm -qa --last

Copyrpm -qa --last

image-20250420115642801

systemctl service

Copysystemctl list-unit-files --type=service 

我們在這里發現,運維組后期安裝的很多agent(監控類的),所以這些也需要在新機器重新安裝

ntp

Copy設置時間校準服務

nfs掛載

Copy/etc/fstab 文件是 Linux 系統中用于定義和管理文件系統的掛載信息的配置文件

動態庫路徑

應用軟件,如果涉及到c++相關的代碼,就可能有這部分。我們正好涉及了,有兩個動態庫(so文件),是需要放到/usr/lib64下的,不然就會加載失敗報錯。

像linux下,動態庫的默認路徑有這么幾個,所以大家要有這塊的意識,別漏了:

image-20230812151254735

linux下,有默認值,如上面這幾個路徑;另外,如果有設置LD_LIBRARY_PATH環境變量,那么java.library.path的值就等于默認的幾個路徑(/usr/lib64、/lib64、/lib、/usr/lib) + LD_LIBRARY_PATH的值。

基礎軟件及業務軟件


如jdk、以及一些通過源碼編譯安裝的程序(如nginx、redis這類)

文件、文件夾對比

各種業務軟件,可能還涉及到在某些目錄下寫入了一些文件,可能也需要遷移,這個就大家自己看著弄了。

我們這邊是會把軟件全部在openeuler上再重新部署一遍,包括jdk、servlet容器等等。

差異對比

最終就是上面的各項配置導到不同文件,然后beyond compare對比下。

image-20250420121326264

差異執行

====================

這個沒啥說的了,下載openeuler的iso,安裝,然后分析上述對比出來的哪些差異,需要應用到新的系統中,然后執行就行了,最終執行完,可以重啟下服務器,避免有的改了忘了使其生效。

image-20250420121512467

總結

==================

可以發現,步驟還是比較繁瑣的,而且,這樣也不能保證萬無一失,所以還是要進行充分的測試為宜。選這種方式,也要先做好方案,然后拉會評審,大家認可這樣的方案才行,畢竟這個方案,需要運維、測試的全力配合,工作量也不小。

為什么還是選了這個方案,主要還是這次要升級的是其中接入層的兩臺機器(系統比較重要,上面部署了openresty等接入層服務,這種c程序,反正也要編譯安裝,沒法自動遷移),所以要求穩,對黑盒遷移工具還不夠了解,促使我們做了這個選擇。

老的centos 7.3,運行了很多年了,這次從零開始部署,也能方便大家把相關組件摸清楚,在保證出現問題能及時回退的情況下,我們認為這樣做也值得。后續面對不那么重要的系統,可能也是會用工具來升級。

🔥運維干貨分享

  • 軟考高級系統架構設計師備考學習資料
  • 軟考高級網絡規劃設計師備考學習資料
  • Kubernetes CKA認證學習資料分享
  • AI大模型學習資料合集
  • 信息安全管理體系(ISMS)制度模板分享
  • 免費文檔翻譯工具(支持word、pdf、ppt、excel)
  • PuTTY中文版安裝包
  • MobaXterm中文版安裝包
  • pinginfoview網絡診斷工具中文版
  • Xshell、Xsftp、Xmanager中文版安裝包
  • Typora簡單易用的Markdown編輯器
  • Window進程監控工具,能自動重啟進程和卡死檢測
  • 免費Oracle 數據庫學習資源 零基礎到進階
  • Spring 源碼學習資料
  • 畢業設計高質量畢業答辯 PPT 模板

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/79839.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/79839.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/79839.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

什么是 IDE?集成開發環境的功能與優勢

原文:什么是 IDE?集成開發環境的功能與優勢 | w3cschool筆記 (注意:此為科普文章,請勿標記為付費文章!且此文章并非我原創,不要標記為付費!) IDE 是什么? …

jenkins批量復制Job項目的shell腳本實現

背景 現在需要將“測試” 目錄中的所有job全部復制到 一個新目錄中 test2。可以結合jenkins提供的apilinux shell 進行實現。 測試目錄的實際文件夾名稱是 test。 腳本運行效果如下: [qdevsom5f-dev-hhyl shekk]$ ./copy_jenkins_job.sh 創建文件夾 test2 獲取源…

VisualSVN過期后的解決方法

作為一款不錯的源代碼管理軟件,svn還是有很多公司使用的。在vs中使用svn,大家一般用的都是VisualSVN插件。在30天試用期過后,它就不能被免費使用了。下面給大家講如何免費延長過期時間(自定義天數,可以設定一個很大的值…

硬件工程師筆記——電子器件匯總大全

目錄 1、電阻 工作原理 歐姆定律 電阻的物理本質 一、限制電流 二、分壓作用 三、消耗電能(將電能轉化為熱能) 2、壓敏電阻 伏安特性 1. 過壓保護 2. 電壓調節 3. 浪涌吸收 4. 消噪與消火花 5. 高頻應用 3、電容 工作原理 (…

[圖論]Kruskal

Kruskal 本質:貪心,對邊進行操作。存儲結構:邊集數組。適用對象:可為負權圖,可求最大生成樹。核心思想:最短的邊一定在最小生成樹(MST)上,對最短的邊進行貪心。算法流程:對全體邊集…

vulnhub five86系列靶機合集

five86 ~ VulnHubhttps://www.vulnhub.com/series/five86,272/ five86-1滲透過程 信息收集 # 主機發現 nmap 192.168.56.0/24 -Pn ? # 靶機全面掃描 nmap 192.168.56.131 -A -T4 目錄掃描 dirsearch -u http://192.168.56.131/ /robots.txt提示/ona。 /ona二層目錄掃描。 …

如何高效利用呼叫中心系統和AI語音機器人

要更好地使用呼叫中心系統和語音機器人,需要結合兩者的優勢,實現自動化、智能化、高效率的客戶服務與業務運營。以下是優化策略和具體實踐方法: 一、呼叫中心系統優化 1. 智能路由與IVR優化 智能ACD(自動呼叫分配) …

Nacos安裝及數據持久化

1.Nacos安裝及數據持久化 1.1下載nacos 下載地址:https://nacos.io/download/nacos-server/ 不用安裝,直接解壓縮即可。 1.2配置文件增加jdk環境和修改單機啟動standalone 找到bin目錄下的startup.cmd文件,添加以下語句(jdk路徑根據自己…

【牛客練習賽137 C】題解

比賽鏈接 C. 變化的數組(Easy Version) 題目大意 一個長度為 n n n 的非負數組 a a a,要求執行 k k k 次操作,每次操作如下: 有 1 2 \frac{1}{2} 21? 的概率令 a i ← a i ( a i ? m ) x , ? i ∈ [ 1 , n ] a_i \leftarrow a_…

Redis適用場景

Redis適用場景 一、加速緩存二、會話管理三、排行榜和計數器四、消息隊列五、實時分析六、分布式鎖七、地理位置數據八、限流九、數據共享十、簽到 一、加速緩存 Redis最常見的應用之一是作為緩存層,用于存儲頻繁訪問的數據,從而減輕數據庫的負載。 通過…

【LangChain4j快速入門】5分鐘用Java接入AI大模型,Spring Boot整合實戰!| 附源碼

【LangChain4j快速入門】5分鐘用Java接入AI大模型,Spring Boot整合實戰! 前言:當Java遇上大模型 在AI浪潮席卷全球的今天,Java開發者如何快速擁抱大語言模型?LangChain4j作為專為Java打造的AI開發框架,以…

2025第十七屆“華中杯”大學生數學建模挑戰賽題目B 題 校園共享單車的調度與維護問題完整成品正文33頁(不含附錄)文章思路 模型 代碼 結果分享

校園共享單車運營優化與調度模型研究 摘 要 本研究聚焦校園共享單車點位布局、供需平衡、運營效率及故障車輛回收四大核心問題,通過構建一系列數學模型,系統分析與優化共享單車的運維體系。 針對問題一,我們建立了基于多時段觀測的庫存估算…

Unity游戲多語言工具包

由于一開始的代碼沒有考慮多語言場景,導致代碼中提示框和UI顯示直接用了中文,最近開始提取代碼的中文,提取起來太麻煩,所以拓展了之前的多語言包,降低了操作復雜度。最后把工具代碼提取出來到單獨項目里面,…

.NET MCP 文檔

MCP 概述 MCP(Model Context Protocol)是由 Anthropic 推出的一種開放協議,類似 AI 的 USB-C 擴展塢,用于在大模型和數據源之間建立安全的通信(授權),讓 AI 應用能夠安全地訪問和操作本地或遠程…

【Linux】vim配置----超詳細

目錄 一、插件管理器準備 二、目錄準備 三、安裝插件 一、插件管理器準備 Vim-plug 是一個Vim插件管理器,利用異步并行可以快速地安裝、更新和卸載插件。它的安裝和配置都非常簡單,而且在操作過程中會給出很多易讀的反饋信息,是一個自由、…

PHP實現圖片自動添加水印效果

<?php // 設置原始圖片路徑和水印圖片路徑 $original_image original.jpg; $watermark_image watermark.png;// 創建圖片資源 $original imagecreatefromjpeg($original_image); $watermark imagecreatefrompng($watermark_image);// 獲取圖片尺寸 $original_width im…

檢查新接手LINUX服務器應用的部署情況和正在運行的服務

當接手一臺新的 Linux 服務器時&#xff0c;第一要務就是摸清系統上已經安裝部署了哪些應用和服務。 本文將以 CentOS7為例&#xff0c;詳細介紹如何系統地排查已安裝的應用和服務&#xff0c;包括它們的安裝方式和安裝位置。 1.查看系統基本信息 首先獲取系統整體信息&…

使用注解方式整合ssm時,啟動tomcat掃描不到resource下面的xxxmapper.xml問題,解決方法

解決org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.xxx.mapper.方法 在Spring與Mybatis整合時&#xff0c;可能會遇到這樣的報錯 原因&#xff1a; 其原因為mapper路徑的映射錯誤&#xff0c;表示在嘗試執行某個 Mapper 接口的方法時…

C++11特性補充

目錄 lambda表達式 定義 捕捉的方式 可變模板參數 遞歸函數方式展開參數包 數組展開參數包 移動構造和移動賦值 包裝器 綁定bind 智能指針 RAII auto_ptr unique_ptr shared_ptr 循環引用 weak_ptr 補充 總結 特殊類的設計 不能被拷貝的類 只能在堆上創建…

My SQL 索引

核心目標&#xff1a; 理解 mysql 索引的工作原理、類型、優缺點&#xff0c;并掌握創建、管理和優化索引的方法&#xff0c;以顯著提升數據庫查詢性能。 什么是索引&#xff1f; 索引是一種特殊的數據庫結構&#xff0c;它包含表中一列或多列的值以及指向這些值所在物理行的指…