《OpenShift / RHEL / DevSecOps 汇总目录》
说明
-
本文介绍如何将一个 CentOS 6.0 的系统升级并转换迁移到 RHEL 7.9。
-
本文是《在离线环境中将 CentOS 7.X 原地升级并迁移至 RHEL 7.9》阶进篇。
-
所有被测软件的验证操作可参见上述前文中对应章节的说明。
准备 CentOS 6.0 及其他被验证软件
下载 CentOS 和 RHEL 的 ISO 介质
下载 CentOS 6.0 、RHEL 6.10、RHEL 7.9 的 ISO 文件。
准备 CentOS 6.0
- 在测试 VM 中使用 ISO 最小化安装 CentOS 6.0。注意:将网卡配置为开机启动,并在安装完后的初始启动时配置窗口中关闭防火墙。
- 由于在下载被验证软件时很多网站已不支持 CentOS 6.0 的 TLS1.0 和 TLS1.1 协议,因此需要先用 RHEL 6.10 的介质单独升级 openssl。
- 先将 RHEL 6.10 的 ISO 分配给 VM 的第一个 IDE 光驱设备,然后再执行命令挂载 RHEL 6.10 到指定目录,最后创建 RHEL 6 的 Yum Repo。
$ mkdir /mnt/rhel6
$ mount /dev/sr0 /mnt/rhel6
$ cat > /etc/yum.repos.d/rhel6-local.repo << EOF
[rhel6-local-repo]
name = rhel6 local repo
baseurl=file:///mnt/rhel6
enabled=1
gpgcheck=0
EOF
- 执行命令升级 openssl。
$ yum update -y openssl
- 将 CentOS 6.0 的 ISO 挂载到主机中,然后依此创建 CentOS 6 的 Yum Repo。
$ umount /mnt/rhel6
$ mkdir /mnt/centos6
$ mount /dev/sr0 /mnt/centos6
$ cat > /etc/yum.repos.d/centos6-local.repo << EOF
[centos6-local-repo]
name = centos6 local repo
baseurl=file:///mnt/centos6
enabled=1
gpgcheck=0
EOF
docker 1.7.1
注意:由于 CentOS 6.0 发布的时间在 2011 年,因此没有找到 CentOS 6.0 上可用的 docker 安装包。以下 Docker 1.7.1 可在稍晚的 CentOS 6.x 中作为验证环境。
执行以下命令,安装 Docker 环境。
wget https://mirrors.aliyun.com/docker-engine/yum/repo/main/centos/6/Packages/docker-engine-1.7.1-1.el6.x86_64.rpm --no-check-certificate
rpm -ivh docker-engine-1.7.1-1.el6.x86_64.rpm
service docker start
service docker status
mysql 5.1.47
- 执行命令,安装 CentOS 6.0 内置的 mysql 5.1.47。
yum install mysql
chkconfig mysqld on
service mysqld start
service mysqld status
- 参照前文登录 mysql,然后创建数据库、表并添加数据。
postgresql 8.4.4
- 执行命令,安装 CentOS 6.0 内置的 postgresql 8.4.4。
yum -y install postgresql postgresql-libs postgresql-plperl postgresql-plpython postgresql-server
service postgresql initdb
chkconfig postgresql on
service postgresql start
service postgresql status
- 参照前文登录 postgresql,然后创建用户、数据库、表并添加数据。
mongodb 4.2.25
- 执行命令,创建安装 mongodb 用的 Repo。
$ cat > /etc/yum.repos.d/mongodb.repo << EOF
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=0
enabled=1
EOF
- 安装 mongodb。
yum install -y mongodb-org
service mongod start
service mongod status
- 参照前文向 mongodb 添加数据。
redis 3.2.8
说明:采用编译源码方式安装 redis。
- 安装编译环境。
yum install make gcc tcl -y
- 下载 redis 源码,然后编译。
wget http://download.redis.io/releases/redis-3.2.8.tar.gz
tar -xvzf redis-3.2.8.tar.gz
cd redis-3.2.8
make
make install
- 使用默认配置安装 redis。
cd utils
./install_server.sh
service redis_6379 status
redis-cli --version
- 参照前文向 redis 添加数据。
rabbitmq 3.7.10
- 下载并安装 rabbitmq 及其依赖包。
wget --content-disposition "https://packagecloud.io/rabbitmq/erlang/packages/el/6/erlang-21.3.8.18-1.el6.x86_64.rpm/download.rpm?distro_version_id=27"
rpm -ivh erlang-21.3.8.18-1.el6.x86_64wget https://www.rpmfind.net/linux/dag/redhat/el6/en/x86_64/dag/RPMS/socat-1.7.1.3-1.el6.rf.x86_64.rpm --no-check-certificate
rpm -ivh socat-1.7.1.3-1.el6.rf.x86_64.rpmwget https://github.com/rabbitmq/rabbitmq-server/releases/download/v3.7.10/rabbitmq-server-3.7.10-1.el6.noarch.rpm --no-check-certificate -O rabbitmq-server-3.7.10-1.el6.noarch.rpm
rpm -ivh rabbitmq-server-3.7.10-1.el6.noarch.rpm
- 启动 rabbitmq。
service rabbitmq-server start
service rabbitmq-server status
- 安装 rabbitmq 的管理控制台,并初始化用户。
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl add_user admin password
rabbitmqctl set_user_tags admin administrator
- 参照前文访问 rabbitmq 控制台。
Oracle 12.1.0.2
- 安装必要的依赖环境。
yum install compat-libstdc++-33 gcc gcc-c++ glibc glibc-devel ksh libgcc libstdc++ libstdc++-devel libaio libaio-devel libXext libXtst libXau libxcb libXi make sysstat unixODBC unixODBC-devel compat-libcap1 -y
- 准备必要的用户、目录并分配权限。
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oraclemkdir /u01
mkdir /u02
chown -R oracle:oinstall /u01
chown -R oracle:oinstall /u02
chmod -R 775 /u01
chmod -R 775 /u02
chmod g+s /u01
chmod g+s /u02
- 如果不用 DNS 解析,执行以下命令将主机名和 IP 添加到 /etc/hosts 中。
ifconfig | grep eth -A 2|grep "inet addr" | cut -d: -f2 | awk '{ print $1 "\t" "'''$HOSTNAME'''"}' >> /etc/hosts
- 准备安装介质。
unzip ~/V46095-01_1of2.zip -d /stage/
unzip ~/V46095-01_2of2.zip -d /stage/
chown -R oracle:oinstall /stage/
- 安装数据库并创建实例。说明:具体安装步骤可参见《在离线环境中将 CentOS 7.X 原地升级并迁移至 RHEL 7.9》的相关章节。
$ su - oracle
$ export DISPLAY=<CLIENT-HOST-IP>:0.0
$ /stage/database/runInstaller
- 参照前文访问 Oracle 实例,并查询测试表数据。
CentOS 6.0 到 RHEL 6.10 升级转换
安装 conver2rhel
- 下载并安装 convert2rhel 依赖包。由于部分依赖包不在 CentOS 6.0 中,因此可以从 https://access.redhat.com/downloads/content/69/ver=/rhel—6/6.10/x86_64/packages 网站下载以下离线包,然后安装。
rpm -ivh ~/conver2rhel/python-six-1.9.0-2.el6.noarch.rpm
rpm -ivh ~/conver2rhel/virt-what-1.11-1.3.el6.x86_64.rpmrpm -ivh ~/conver2rhel/m2crypto-0.20.2-7.el6.x86_64.rpm
rpm -ivh ~/conver2rhel/pexpect-2.3-6.el6.noarch.rpm
rpm -ivh ~/conver2rhel/python-decorator-3.0.1-3.1.el6.noarch.rpm
rpm -ivh ~/conver2rhel/python-dmidecode-3.10.12-1.el6.x86_64.rpm
- 下载并安装 convert2rhel。注意:由于 CentOS 6 已经停更,因此较新版的 convert2rhel 已不支持 CentOS 6 迁移转换了,为此本文使用了较早版本的 convert2rhel。另外较早的 convert2rhel 还支持一步操作完成 CentOS 版本升级 + RHEL 迁移转换。
wget https://github.com/oamg/convert2rhel/releases/download/v0.18/convert2rhel-0.18-1.el6.noarch.rpm -O ~/conver2rhel/convert2rhel-0.18-1.el6.noarch.rpm --no-check-certificate
rpm -ivh ~/conver2rhel/convert2rhel-0.18-1.el6.noarch.rpm
CentOS 6.0 到 RHEL 6.10 升级转换
- 将 RHEL 6.10 的 ISO 分配给 VM 的第一个 IDE 光驱设备,然后将其挂载到 /mnt/rhel6。
umount /mnt/centos6
mount /dev/sr0 /mnt/rhel6
- 查看升级转换前系统中各软件包的供应商。注意:convert2rhel 只转换由 CentOS 供应的软件。
rpm -qa --queryformat '%{vendor}:%{name}\n' | sort
- 执行命令将 CentOS 6.0 升级并转换到 RHEL 6.10。
convert2rhel --disable-submgr --enablerepo=rhel6-local-repo --no-rpm-va -y
- 完成后重启系统。
- 查看升级转换后系统中各软件包的供应商,确认 CentOS 都已变为 Red Hat, Inc.
rpm -qa --queryformat '%{vendor}:%{name}\n' | sort
验证
根据《在离线环境中将 CentOS 7.X 原地升级并迁移至 RHEL 7.9》验证各软件是否可正常使用。
注意:由于在准备环境过程中 postgresql 和 mysql 使用的是 CentOS 自带的软件,因此它们也会在 CentOS 升级过程中随之升级(postgresql 升级至 8.4.20,mysql 升级到 5.1.73)。而其他软件使用的是非 CentOS 自带软件,因此它们的版本不受 Linux 升级的影响。
RHEL6.10 到 RHEL7.9 升级
安装原地升级程序
- 从 https://access.redhat.com/downloads/content/69/ver=/rhel—6/6.10/x86_64/packages 下载以下原地升级程序相关的软件包到 ~/rhel6-rhel7-preupgrade/ 目录中。
preupgrade-assistant
preupgrade-assistant-el6toel7
preupgrade-assistant-el6toel7-data
redhat-upgrade-tool
fakeroot
fakeroot-libs
openscap
openscap-engine-sce
openscap-scanner
openscap-utils
pykickstart
redhat-rpm-config
rpm-build
rpmdevtools
- 确保当前只有 RHEL 6.10 的 Repo 有效,然后安装以上软件包。
mount /dev/sr0 /mnt/rhel6
mv /etc/yum.repos.d/centos6-local.repo /etc/yum.repos.d/centos6-local.repo.bak
yum localinstall ~/rhel6-rhel7-preupgrade/*
RHEL 6.10 到 RHEL 7.9 升级
- 将 RHEL 7.9 的 ISO 分配给 VM 的第一个 IDE 光驱设备,然后将其挂载到 /mnt/rhel7,最后创建 rhel7 的 Yum Repo。
umount /mnt/rhel6
mv /etc/yum.repos.d/rhel6-local.repo /etc/yum.repos.d/rhel6-local.repo.bak
mkdir /mnt/rhel7
mount /dev/sr0 /mnt/rhel7
cat > /etc/yum.repos.d/rhel7-local.repo << EOF
[rhel7-local-repo]
name = rhel7 local repo
baseurl=file:///mnt/rhel7
enabled=1
gpgcheck=0
EOF
- 执行预升级。
preupg
- 完成后可在 ~/preupgrade 中查看执行评估生成的相关文件。
ll ~/preupgrade
total 2104
drwxr-xr-x. 5 root root 4096 May 15 08:54 cleanconf
drwxr-xr-x. 2 root root 4096 May 15 08:53 common
drwxr-xr-x. 5 root root 4096 May 15 08:59 dirtyconf
drwxr-xr-x. 3 root root 4096 May 15 08:55 etc
drwxr-xr-x. 2 root root 4096 May 15 08:53 hooks
drwxr-xr-x. 2 root root 4096 May 15 09:00 kickstart
drwxr-xr-x. 2 root root 4096 May 15 08:55 noauto_postupgrade.d
drwxr-xr-x. 2 root root 4096 May 15 08:55 pkgdowngrades
drwxr-xr-x. 2 root root 4096 May 15 08:53 postmigrate.d
drwxr-xr-x. 14 root root 4096 May 15 09:00 postupgrade.d
drwxr-xr-x. 2 root root 4096 May 15 09:00 preupgrade-scripts
-rw-r--r--. 1 root root 642236 May 15 09:00 preupg_results-240515090037.tar.gz
-rw-r--r--. 1 root root 6383 May 15 08:53 README
-rw-r--r--. 1 root root 742570 May 15 09:00 result.html
-rw-r--r--. 1 root root 706045 May 15 09:00 result.xml
drwxr-xr-x. 16 root root 4096 May 15 08:54 RHEL6_7
- 打开 result.html 文件,可查看评估报告详细内容。
- 执行强制升级。
redhat-upgrade-tool --device /mnt/rhel7 --cleanup-post -f
- 升级准备好后系统会自动重启进行升级操作,升级完成后还会重启一次。
验证
根据《在离线环境中将 CentOS 7.X 原地升级并迁移至 RHEL 7.9》验证各软件是否可正常使用。
注意:由于 postgresql 和 mysql 使用的是 CentOS 自带的软件,它们会在 CentOS 升级过程中版本随之升级,因此可能需要进行以下单独处理。而其他软件使用的是非 CentOS 自带软件,因此它们的版本不受 Linux 升级的影响。
mysql
注意:RHEL6.10 内置的 mysql 5.1.73 在升到 RHEL 6.10 后会被升级到社区版 mariadb 5.5.68。
- 启动 mariadb 服务。
systemctl status mariadb
systemctl start mariadb
- 参照前文 mysql 部分,先登录 mariadb 实例,然后查询测试表数据。
postgresql
注意:在从 RHEL 6.10 升级到 RHEL 7.9 后,postgresql 程序的版本会从 8.4.4 升级到 9.2.24。在升级后还需手动对数据库格式进行单独的升级。
- 下载 postgresql 9.2.24 的升级程序包。
wget https://rpmfind.net/linux/centos/7.9.2009/os/x86_64/Packages/postgresql-upgrade-9.2.24-4.el7_8.x86_64.rpm
yum localinstall postgresql-upgrade-9.2.24-4.el7_8.x86_64.rpm
- 对 postgresql 数据库进行升级,然后启动 postgresql 即可。
postgresql-setup upgrade
systemctl start postgresql
systemctl status postgresql
- 参照前文 postgresql 部分,查询测试表数据。