两步将 CentOS 6.0 原地迁移至 RHEL 7.9 (视频)

OpenShift / RHEL / DevSecOps 汇总目录

说明

  1. 本文介绍如何将一个 CentOS 6.0 的系统升级并转换迁移到 RHEL 7.9。
    在这里插入图片描述
  2. 本文是 “前文”《在离线环境中将 CentOS 7.x 原地更新并迁移至 RHEL 7.9》的阶进篇。
  3. 所有被测软件的验证操作可参见上述前文中对应章节的说明。

准备 CentOS 6.0 及其他被验证软件

下载 CentOS 和 RHEL 的 ISO 介质

下载 CentOS 6.0 、RHEL 6.10、RHEL 7.9 的 ISO 文件。

准备 CentOS 6.0

  1. 在测试 VM 中使用 ISO 安装 CentOS 6.0。注意:VM 磁盘为 100GB,另外还需要安装 X Windows System,并将网卡配置为开机启动。在安装完后的初始启动时配置窗口中关闭防火墙。
  2. 由于在下载被验证软件时很多网站已不支持 CentOS 6.0 的 TLS1.0 和 TLS1.1 协议,因此需要先用 RHEL 6.10 的介质单独更新 openssl。
  3. 先将 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
  1. 执行命令更新 openssl。
$ yum update -y openssl
  1. 将 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

jdk 1.5.0_22 + tomcat 4.1.40

安装

  1. 从以下链接下载 JDK 和 Tomcat 的安装文件到用户的默认目录下。
    https://download.oracle.com/otn/java/jdk/1.5.0_22/jdk-1_5_0_22-linux-amd64.bin
    https://archive.apache.org/dist/tomcat/tomcat-4/v4.1.40/bin/apache-tomcat-4.1.40.tar.gz
  2. 在用户默认目录下安装 JDK 和 Tomcat。
cd ~
./jdk-1_5_0_22-linux-amd64.bin
tar -xvf apache-tomcat-4.1.40.tar.gz
  1. 修改 apache-tomcat-4.1.40/bin/setclasspath.sh 文件,在最前方增加 export JAVA_HOME=/YOUR/PATH/jdk1.5.0_22 的内容。

验证

  1. 启动 Tomcat。
~/apache-tomcat-4.1.40/bin/startup.sh
  1. 打开以下链接访问 Tomcat,可以测试 Examples。
    http://<HOST-IP>:8080/
    在这里插入图片描述

jdk 1.6.0_45 + weblogic 10.3.6

安装

  1. 从以下链接下载 JDK 和 WebLogic 的安装文件到用户的默认目录下。
    https://download.oracle.com/otn/java/jdk/6u45-b06/jdk-6u45-linux-x64.bin
    https://download.oracle.com/otn/nt/middleware/11g/wls/1036/wls1036_generic.jar
  2. 在用户默认目录下安装 JDK 和 WebLogic (WebLogic 安装过程略)。
cd ~
./jdk-6u45-linux-x64.bin
~/jdk1.6.0_45 -jar wls1036_generic.jar

验证

  1. 运行命令,启动 WebLogic 测试 Domain 环境。该 Domain 的管理员/密码是:weblogic/welcome1。
 ~/Oracle/Middleware/wlserver_10.3/samples/domains/medrec/bin/startWebLogic.sh
  1. 打开以下链接访问 WebLogic 上的测试应用。
    http://<HOST-IP>:7011/medrec
    在这里插入图片描述

mysql 5.1.47

  1. 执行命令,安装 CentOS 6.0 内置的 mysql 5.1.47。
yum install mysql
chkconfig mysqld on
service mysqld start
service mysqld status
  1. 参照前文登录 mysql,然后创建数据库、表并添加数据。

postgresql 8.4.4

  1. 执行命令,安装 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
  1. 参照前文登录 postgresql,然后创建用户、数据库、表并添加数据。

mongodb 4.2.25

  1. 执行命令,创建安装 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
  1. 安装 mongodb。
yum install -y mongodb-org
service mongod start
service mongod status
  1. 参照前文向 mongodb 添加数据。

redis 3.2.8

说明:采用编译源码方式安装 redis。

  1. 安装编译环境。
yum install make gcc tcl -y
  1. 下载 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
  1. 使用默认配置安装 redis。
cd utils
./install_server.sh
service redis_6379 status
redis-cli --version
  1. 参照前文向 redis 添加数据。

rabbitmq 3.7.10

  1. 下载并安装 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_64
 
wget 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.rpm
 
wget 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
  1. 启动 rabbitmq。
service rabbitmq-server start
service rabbitmq-server status
  1. 安装 rabbitmq 的管理控制台,并初始化用户。
rabbitmq-plugins enable rabbitmq_management
rabbitmqctl add_user admin password
rabbitmqctl set_user_tags admin administrator
  1. 参照前文访问 rabbitmq 控制台。

Oracle 12.1.0.2

  1. 安装必要的依赖环境。
yum groupinstall 'X Window System' -y
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
  1. 准备必要的用户、目录并分配权限。
groupadd oinstall
groupadd dba
useradd -g oinstall -G dba oracle
passwd oracle
 
mkdir /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
  1. 如果不用 DNS 解析,执行以下命令将主机名和 IP 添加到 /etc/hosts 中。
ifconfig | grep eth -A 2|grep "inet addr" | cut -d: -f2 | awk '{ print $1 "\t" "'''$HOSTNAME'''"}' >> /etc/hosts
  1. 准备安装介质。
unzip ~/V46095-01_1of2.zip -d /stage/
unzip ~/V46095-01_2of2.zip -d /stage/
chown -R oracle:oinstall /stage/
  1. 安装数据库并创建实例。说明:具体安装步骤可参见《在离线环境中将 CentOS 7.x 原地更新并迁移至 RHEL 7.9》的相关章节。
$ su - oracle
$ export DISPLAY=<CLIENT-HOST-IP>:0.0
$ /stage/database/runInstaller
  1. X Window System’ 只在安装时用到,安装完后删除掉。
yum groupinstall 'X Window System' -y
  1. 参照前文访问 Oracle 实例,并查询测试表数据。

CentOS 6.0 到 RHEL 6.10 更新转换

安装 conver2rhel

convert2rhel v0.18 支持直接将 CentOS 6.0 更新并转换为 RHEL 6.10。

  1. 下载并安装 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.rpm
 
rpm -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
  1. 下载并安装 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 升级转换

  1. 将 RHEL 6.10 的 ISO 分配给 VM 的第一个 IDE 光驱设备,然后将其挂载到 /mnt/rhel6。
umount /mnt/centos6
mount /dev/sr0 /mnt/rhel6
  1. 查看升级转换前系统中各软件包的供应商。注意:convert2rhel 只转换由 CentOS 供应的软件。
rpm -qa --queryformat "%{VENDOR} = %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH} \n" | sort
  1. 执行命令将 CentOS 6.0 升级并转换到 RHEL 6.10。
convert2rhel --disable-submgr --enablerepo=rhel6-local-repo --no-rpm-va -y
  1. 完成后重启系统。
  2. 查看升级转换后系统中各软件包的供应商,确认 CentOS 都已变为 Red Hat, Inc.
rpm -qa --queryformat "%{VENDOR} = %{NAME}-%{VERSION}-%{RELEASE}.%{ARCH} \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 升级

安装原地升级程序

  1. 从 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
  1. 确保当前只有 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 升级

  1. 将 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
  1. 执行预升级。
preupg
  1. 完成后可在 ~/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
  1. 打开 result.html 文件,可查看评估报告详细内容。
    在这里插入图片描述
  2. 执行强制升级。
$ redhat-upgrade-tool --device /mnt/rhel7 --cleanup-post -f
setting up repos...
upgradedevice                                                                                              | 2.8 kB     00:00 ...
upgradedevice/primary                                                                                      | 2.1 MB     00:00 ...
getting boot images...
vmlinuz-redhat-upgrade-tool                                                                                | 6.5 MB     00:00 ...
initramfs-redhat-upgrade-tool.img                                                                          |  54 MB     00:00 ...
setting up update...
upgradedevice/filelists                                                                                    | 3.1 MB     00:00 ...
upgradedevice/productid                                                                                    | 1.6 kB     00:00 ...
testing upgrade transaction
rpm transaction 100% [===========================================================================================================]
rpm install 100% [===============================================================================================================]
setting up system for upgrade
Finished. Reboot to start upgrade.
[root@c2r-demo ~]# reboot
 
Broadcast message from root@c2r-demo
        (/dev/pts/0) at 8:11 ...
 
The system is going down for reboot NOW!
  1. 升级准备好后系统会自动重启进行升级操作,升级完成后还会重启一次。
    在这里插入图片描述
  2. 查看系统中是否还有 RHEL 6 的 RPM 包。
$ rpm -qa | grep el6 | sort

验证

根据《在离线环境中将 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。

  1. 启动 mariadb 服务。
systemctl enable --now mariadb
systemctl status mariadb
  1. 参照前文 mysql 部分,先登录 mariadb 实例,然后查询测试表数据。

postgresql

注意:在从 RHEL 6.10 升级到 RHEL 7.9 后,postgresql 程序的版本会从 8.4.4 升级到 9.2.24。在升级后还需手动对数据库格式进行单独的升级。

  1. 下载 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
  1. 对 postgresql 数据库进行升级,然后启动 postgresql 即可。
postgresql-setup upgrade
systemctl enable --now postgresql
systemctl status postgresql
  1. 参照前文 postgresql 部分,查询测试表数据。

问题处理

在从 CentOS 6.10 转换到 RHEL 7.9 的过程中,如果没做预检查,转换重启后用户登录可能会遇到以下错误:

grep: error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory

原因请参考 https://access.redhat.com/solutions/5565431。执行以下命令将 grep 的版本降到 2.20-3 即可解决该问题。

$ yum downgrade /mnt/rhel7/Packages/grep-2.20-3.el7.x86_64.rpm

视频

Part1
Part2

参考

https://www.oracle.com/java/technologies/javase/products-doc-jdk8-jre8-certconfig.html
https://www.oracle.com/java/technologies/jdk-jre-7-cs-config.html
https://www.oracle.com/java/technologies/system-configurations.html
https://www.oracle.com/java/technologies/javase/system-configurations.html
https://access.redhat.com/solutions/4976981
https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/8/html/upgrading_from_rhel_6_to_rhel_8/preparing-the-rhel-7-system-for-an-upgrade-to-rhel-8_upgrading-from-rhel-6-to-rhel-8

  • 27
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值