共计 3698 个字符,预计需要花费 10 分钟才能阅读完成。
背景
由于 CentOS 7 项目生命周期终止,已于 2024年6月30日 停止维护。我司现在提出计划,调研 openEuler 是否可替代 CentOS。
openEuler 介绍
是什么
- 基本定义
- openEuler是一个开源的Linux发行版
- 由华为主导开发并捐赠给开放原子开源基金会
- 是一个开源社区,同时也是一个操作系统
- 技术特点
- 多架构支持
- x86_64架构
- ARM64架构
- RISC-V架构
- 性能优化
- 支持多样性计算
- 提供A-Tune智能优化系统
- 针对云计算场景优化
- 安全特性
- 提供安全加固方案
- 支持国密算法
- 完整性保护机制
- 主要应用场景
- 服务器环境
- 云计算平台
- 边缘计算
- 嵌入式系统
- 个人桌面系统
- 核心优势
- 开源开放
- 完全开源的代码
- 开放的社区治理
- 支持社区贡献
- 自主可控
- 支持国产化硬件
- 适配国产软件生态
- 安全可信
- 高性能
- 优化的系统性能
- 支持云原生架构
- 智能调优能力
- 版本策略
- LTS版本
- 每2年发布一次
- 提供4年支持期
- 适合稳定性要求高的环境
- 创新版本
- 每半年发布一次
- 提供6个月支持期
- 包含最新特性
- 生态系统
- 软件包支持
- 提供丰富的软件仓库
- 支持主流开发语言
- 兼容主流应用程序
- 开发工具
- 提供完整的开发环境
- 支持容器化部署
- 提供API和SDK
- 社区支持
- 技术支持
- 文档资源
- 问题解答
- 技术培训
- 社区协作
- 代码贡献
- 问题反馈
- 特性建议
- 主要特性
- iSula容器引擎
- A-Tune智能优化系统
- StratoVirt虚拟化平台
- secGear安全框架
- 鲲鹏加速引擎
- 发展目标
- 打造安全可靠的操作系统
- 建设活跃的开源社区
- 推动产业生态发展
- 支持数字化转型
- 使用场景示例
- 政府部门
- 金融机构
- 电信运营商
- 互联网企业
- 科研教育机构
发展历史
- 起源(2019年)
- 2019年12月31日,openEuler正式开源,华为捐赠源代码
- 这标志着openEuler社区正式成立
- 早期发展(2020年)
- 2020年3月:发布openEuler 20.03 LTS版本
- 这是第一个长期支持版本
- 支持周期为4年
- 面向服务器场景
- 2020年9月:发布openEuler 20.09创新版本
- 引入更多新特性
- 支持多样性计算
- 稳步推进(2021年)
- 2021年3月:发布openEuler 21.03创新版本
- 增加了对树莓派的支持
- 优化ARM架构支持
- 2021年9月:发布openEuler 21.09创新版本
- 引入A-Tune智能优化系统
- 增强云原生特性
- 快速发展(2022年)
- 2022年3月:发布openEuler 22.03 LTS版本
- 第二个LTS版本
- 支持周期为4年
- 全面支持多样性计算
- 2022年9月:发布openEuler 22.09创新版本
- 增强边缘计算能力
- 优化云原生体验
- 最新进展(2023年)
- 2023年3月:发布openEuler 23.03创新版本
- 提供更好的桌面体验
- 增强安全特性
- 2023年9月:发布openEuler 23.09创新版本
- 进一步优化性能
- 增强生态兼容性
版本命名规则:
- 版本号格式:YY.MM
- YY表示年份
- MM表示月份
- 版本类型:
- LTS版本:长期支持版本,每两年发布一次,支持期4年
- 创新版本:每半年发布一次,支持期6个月
主要特点:
- 发布周期稳定
- LTS版本:每2年发布一次
- 创新版本:每半年发布一次
- 版本支持策略清晰
- LTS版本提供4年支持
- 创新版本提供6个月支持
- 持续创新
- 创新版本引入新特性
- LTS版本注重稳定性
测试
上文是由AI生成,不保真但是与我浏览文档看到的出入不大。
本次测试其实不涉及太多环节,仅仅是从华为云创建 ECS 并修改ansible playbook 适配 openEuler。
华为云提供了 Huawei Cloud EulerOS 镜像
support.huaweicloud.com/productdesc-hce/hce_01_0001.html
其中 1.1 版本 100% 兼容 CentOS 7.9,实现了 BUG 级兼容。但是后续版本并不保证 100% 兼容,不过仍是基于 rhel 的发行版。
2.0 版本基于 openEuler 22.03 LTS,而 22.03 主要兼容 CentOS 8,采用了 dnf 作为包管理器。
创建服务器过程略过不谈,下面以 Huawei Cloud EulerOS 2.0 为例。
操作系统版本信息:
# cat /etc/os-release
NAME="Huawei Cloud EulerOS"
VERSION="2.0 (x86_64)"
ID="hce"
VERSION_ID="2.0"
PRETTY_NAME="Huawei Cloud EulerOS 2.0 (x86_64)"
ANSI_COLOR="0;31"
内核版本:
# uname -a
Linux openeuler-test 5.10.0-182.0.0.95.r2220_156.hce2.x86_64 #1 SMP Sat Sep 14 02:34:54 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
包管理器:
# rpm -q dnf yum
dnf-4.10.0-3.r18.hce2.noarch
yum-4.10.0-3.r18.hce2.noarch
SeLinux 默认关闭:
# getenforce
Disabled
python版本 3.9.9:
# python --version
Python 3.9.9
glibc版本:
# ldd --version
ldd (GNU libc) 2.38
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Written by Roland McGrath and Ulrich Drepper.
上面是一些简单信息展示,基本与 CentOS 8 差别不大。
之前的 ansible 初始化剧本,简单改改就成功运行:
# CentOS 7
$ tree centos/
centos/
├── files
│ ├── atop.service
│ ├── Centos-7.repo
│ ├── elrepo-release-7.el7.elrepo.noarch.rpm
│ ├── elrepo.repo
│ └── RPM-GPG-KEY-elrepo.org
└── tasks
├── atop.yml
├── kernel.yml
├── main.yml
├── ntp.yml
├── selinux.yml
├── test.hosts
└── yum.yml
$ cat centos/tasks/main.yml
---
- import_tasks: selinux.yml
- import_tasks: yum.yml
- import_tasks: atop.yml
- import_tasks: ntp.yml
- import_tasks: kernel.yml
# openEuler
$ tree openeuler/
openeuler/
├── files
│ ├── atop.service
│ ├── Centos-7.repo
│ ├── elrepo-release-7.el7.elrepo.noarch.rpm
│ ├── elrepo.repo
│ └── RPM-GPG-KEY-elrepo.org
└── tasks
├── atop.yml
├── kernel.yml
├── main.yml
├── ntp.yml
├── selinux.yml
├── test.hosts
└── yum.yml
# 由于selinux默认关闭了,不需要再调整。内核版本也比较新,不执行更新。
$ cat openeuler/tasks/main.yml
---
#- import_tasks: selinux.yml
#- import_tasks: yum.yml
- import_tasks: yum.yml
- import_tasks: atop.yml
- import_tasks: ntp.yml
#- import_tasks: kernel.yml
# 将yum改为dnf模块
$ cat openeuler/tasks/yum.yml
---
# 添加源
- name: Dnf | Install Epel Repo
shell: dnf config-manager --add-repo https://repo.openeuler.org/openEuler-22.03-LTS-SP2/update/x86_64 && dnf clean all && dnf makecache
args:
warn: false
# 安装基础包
- name: Dnf | Install Basic Package
dnf:
name: "{{ item }}"
#state: latest
loop:
- wget
- telnet
- lsof
- net-tools
- bind-utils
- htop
- nfs-utils
- iftop
- atop
- tree
- traceroute
- mtr
- nc
- ntpdate
- lrzsz
总结
本文没有实际部署业务进行测试。事实上我司存量有上千台 CentOS 服务器,想完成验证、测试、替换的周期可能需要几年。
对于不同的服务类型,测试验证的办法也不同,内核参数或各种其他系统配置都需要经过时间检验,任重而道远。