Loading

【VMware vCenter】使用Reduced Downtime Update (RDU)升级更新vCenter Server。

Reduced Downtime Upgrade (RDU) 减少停机时间更新是用于vCenter Server更新升级的一种新的方式,顾名思义,主要目的就是为了减少在vCenter Server更新升级过程中的维护时间,经过测试验证,最快能够在几分钟之内完成对vCenter Server的更新升级(取决于环境)。

我之前在另外一篇文章中(更新VCSA补丁到8.0 U2,一直卡在93%,最后提示“Failed to perform cleanup”。)提到过这个功能,尽管VMware 知识库(KB 92659)已经把这个说的很明白了,但我还是决定再写一篇文章来介绍这个功能,也算是对RDU的一些个人理解吧(网上关于这个功能的中文介绍较少)。

RDU使用基于迁移的方法将一个vCenter Server更新升级到一个新的vCenter Server,这与我们使用vCenter ISO安装镜像中的升级(6.7->7.0 或7.0 ->8.0)方案很相似,但不完全一样。

我们在使用vCenter ISO跨版本升级的时候,会部署一个新的vCenter Server,在配置过程中勾选将所有vCenter Server上面的数据、日志及配置文件等复制到新的vCenter中,以此来实现主要版本的升级。在这个升级的过程中,我们的现有vCenter不得不停止服务以完成对其配置文件的复制等操作,这个期间vCenter服务会变成不可用状态,并且可能持续很长一段时间(根据配置数据的大小)。而RDU功能与之有些不同,在使用RDU功能进行数据及配置文件的复制过程中,现有的vCenter Server将保持可用状态,用户及管理员可以正常使用vCenter,在RDU完成复制以后,只需要找一个窗口期点击完成对新vCenter和旧vCenter的切换即可,整个切换期间可能只有很少量的数据进行同步,所以可以控制到很短的时间(最快可能几分钟)。

VMware 根据 vCenter ISO进行跨版本升级的工作原理发布了RDU功能,用于实现对vCenter Server的常规补丁升级。以往,常规补丁升级方式需要将 vCenter ISO 挂载到 vCenter Server 虚拟机的 CD-ROM 设备上,然后再跳转到VAMI管理后台,使用“更新”工作流完成对vCenter的升级,或者使用software-packages命令行方式。这种升级方式同样需要停止现有vCenter服务,并且可能持续很长时间。使用RDU,我们只需要将vCenter ISO挂载后,在vSphere Client界面即可对vCenter完成更新,这个两项工作可以在同一界面完成,不需要再进行跳转了。

参考VMware 知识库文章,RDU支持以下源vCenter更新升级到目标vCenter版本:

源vCenter 目标vCenter
8.0 GA 8.0 U2 或之后版本
8.0 U1 8.0 U2 或之后版本
8.0 P02 8.0 U2 或之后版本
8.0 U2 8.0 U2 或之后版本

注意,这里说明一下,根据上表以及知识库中的说明,使用RDU升级分为两类,一类是vCenter 8.0 U2之前的版本升级的8.0 U2,另一类是从vCenter 8.0 U2升级到之后的版本,我详细说一下这两者的区别。

vCenter 8.0 U2这个版本是一个分水岭,使用RDU工作流需要先升级vCenter Life-cycle Manger插件版本(注意,这里说的是插件版本,并不是vCenter的版本。也不是vSphere Lifecycle Manager)。

如果你当前环境是vCenter 8.0 U2之前的版本,如果要使用RDU工作流,只能使用VAMI里面配置的vCenter 更新存储库,就是下面这个地方,并在第三步升级vCenter Life-cycle Manger插件版本后再重新启动工作流使用CD-ROM挂载的镜像进行后续步骤更新。

vCenter 8.0 U2之前版本的更新源只能从更新存储库获取,上面默认的更新存储库是https://vapp-updates.vmware.com/vai-catalog/valm/vmw/8d167796-34d5-4899-be0a-6daade4005a3/8.0.0.10000.latest/(版本不同地址不一样),如果你的vCenter Server能够连接互联网则还好,可以直接使用官方的默认更新存储库,如果不能联网,那就还需要在本地配置离线更新存储库,并在VAMI下图中的地方手动指定,整个过程非常麻烦。

如果你当前环境是vCenter 8.0 U2及之后的版本,那么更新源支持直接从vCenter 虚拟机的CD-ROM光驱设备挂载的vCenter ISO文件上获取(因为vCenter Life-cycle Manger插件已经是vCenter 8.0 U2或之后的版本了)。如下图所示,我们只需要挂载vCenter ISO文件到vCenter Server虚拟机的CD-ROM光驱,然后在RDU升级界面点击检查即可直接进行选择了。

注意,不管是vCenter 8.0 U2之前还是之后的版本,使用RDU更新工作流,挂载到vCenter 虚拟机CD-ROM光驱的vCenter ISO文件不是我们常规补丁升级的ISO包(文件中带patch),而是完整的vCenter ISO安装包。

综上所述,当前环境是vCenter 8.0 U2之前的版本,需要通过官方更新存储库或自定义离线更新存储库,在RDU更新工作流第三步将vCenter Life-cycle Manager 插件更新到vCenter 8.0 U2或之后的版本后,再通过vCenter 虚拟机CD-ROM挂载的vCenter ISO镜像进行后续更新;当前环境是vCenter 8.0 U2及之后的版本,那么可以直接使用vCenter 虚拟机CD-ROM挂载的vCenter ISO镜像进行RDU工作流更新。

所以,如果当前环境是vCenter 8.0 U2之前的版本,建议还是使用以前的常规补丁升级方式升级到vCenter 8.0 U2或之后版本(大多数vCenter环境不能连接互联网,而且配置离线更新存储库非常麻烦,并且有bug,看下面),如果是vCenter 8.0 U2及之后版本那可以选择使用RDU工作流进行更新升级。

下面演示一下上面说的两种场景,vCenter 8.0 U2之前的版本升级到vCenter 8.0 U2或之后版本 vCenter 8.0 U2及之后版本升级到更新的版本

一、vCenter 8.0 升级到 vCenter 8.0 U2a

我这边准备了vCenter 8.0 (内部版本号20519528) 环境,这个版本是vCenter初始发布的8.0 GA正式版本,关于vCenter Server 产品版本和内部版本号的对应关系可以看我的另一篇文章(VMware by Broadcom 产品版本和内部版本号)。

由于大多数vCenter环境都是不能连接互联网的,所以,在使用RDU工作流之前,我们需要参考VMware vSphere 文章“配置基于 URL 的修补”配置离线更新存储库。(注意,这篇文章的中文翻译有误。)

参考文章,这个离线更新存储库仅支持HTTPS或FTPS的URL链接方式,所以,我们需要在本地搭建一个基于https的web文件服务器(例如nginx),再登录 VMware Customer Connect 下载vCenter的ZIP包修补程序并上传到这个web文件服务器。在web文件服务器的根目录创建一个存储库目录(例如vc_update_repo),将vCenter 修补程序解压到这个存储库目录当中,最后将https://web_server_name.your_company.com/vc_update_repo 存储库链接到 VAMI 的更新配置里面手动指定即可(或者登录vcenter appliancesh使用命令update.set --currentURL https://web_server_name.your_company.com/vc_update_repo 进行设置)。

安装nginx并配置https。nginx的安装有很多种方式,可以参考下面使用yum在线安装,环境是centos 7。

rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
yum list nginx --showduplicates
yum install -y nginx-1.24.0
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
setenforce 0
systemctl start nginx
systemctl enable nginx

配置文件服务器,https配置可以参考这篇文章。修改文件后,需重新启动nginx服务。确保能通过https访问文件服务器。

vim /etc/nginx/nginx.conf
systemctl restart nginx
nginx.conf
 user  nginx;
worker_processes  auto;

error_log  /var/log/nginx/error.log notice;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
    server { 
    listen       80;
    server_name  localhost;     

    listen 443 ssl;
    ssl_certificate     /usr/local/ssl/server-nopassword.crt;
    ssl_certificate_key /usr/local/ssl/server-nopassword.key;
 
    location / {
    root /data;
    autoindex on;
    autoindex_exact_size off;
    autoindex_localtime on;
    charset utf-8;
    }
    }



    include /etc/nginx/conf.d/*.conf;
}

创建存储库目录(vc_update_repo),最终的目录结构(包括修补程序解压后的子目录 manifest 和 package-pool)。

/data
└── vc_update_repo
    ├── manifest
    └── package-pool

vCenter的修补程序文件上传至web服务器并解压,解压出了两个目录 manifest 和 package-pool

unzip VMware-vCenter-Server-Appliance-8.0.2.00100-22617221-updaterepo.zip

如果一切顺利,你现在应该已经准备好了vCenter 离线更新存储库。

登录VAMI 后台(https://vcsa-ip:5480),展开“更新”- “设置”,在存储库设置中指定URL地址,取消勾选证书检查。

点击保存后,系统会自动检测更新并发现存储库中的修补程序。

现在,登录vSphere Client,展开更新,可以看到更新存储库已经从VMware 默认存储库变成自定义存储库了。

点击选择版本,选择可用的更新并确定。

选择更新后,会检测当前vCenter的环境是否可以升级到目标版本。提示我当前vCenter Server未进行备份。

产品互操作性检测,只有加入CEIP以后该检查才有用。直接忽略点击下一步。

注意,如果是生产环境一定要提前做好vCenter 备份,我这里就忽略了。

更新vCenter Life-Cycle Manager,提示报错“Failed to load repository manifest data for the configured upgrade.”,这个问题在vCenter Sever 8发行说明中一直存在并且没有得到修复,这是使用具有 VMware Certificate Authority (VMCA) 不信任的自签名证书的自定义更新存储库导致的, vCenter Lifecycle Manager 无法从此类存储库下载文件。上面配置的离线更新库的web服务器确实配置的是自签名ssl证书,参考 KB 89493 中的解决方案,并没有得到解决(如果有人成功了,请告诉我)。其实vCenter本身不就是一个CA吗,能不能直接在vCenter上为web服务器颁发一个证书?(没有试过)

配置离线存储库失败。所以重新换回官方的在线更新存储库(需要互联网连接)。在VAMI里面重新修改为默认存储库即可。

修改为默认存储库后,重新选择更新的版本,还是选择vCenter 8.0 U2a(22617221)。

备份vCenter Server。

使用默认更新存储库后没有报错,确定更新的版本是否正确。

点击“更新插件”。

更新完成,页面自动刷新。页面顶部会出现下面的内容显示。

已成功取消部署插件 VMware vCenter Server Lifecycle Manager:8.0.0.10000。请刷新浏览器以将其移除。
已成功部署插件 VMware vCenter Server Lifecycle Manager:8.0.2.100。请刷新浏览器以启用插件。

同时出现下面的错误。提示vCenter 虚拟机的CD-ROM没有检测到ISO文件。

An error occurred while mounting the ISO file. Verify if the device attached to the CDROM is a vCenter Server ISO file.

注意,如果在线更新插件出现“Update 8.0.x.xxxxxx for component vlcm is not found”错误,请参照KB 94779进行处理。

将vCenter ISO镜像文件(完整安装包)挂载到vCenter 虚拟机的CD-ROM设备。

重新到vCenter 更新页面,重新检测ISO 文件,提示如下报错。

Upgrade to target version 8.0.2.00100 using this feature is not supported for vCenter Servers that do not manage their own ESXi host and VM.

由于vCenter是我部署的一个测试环境,运行vCenter虚拟机所在的主机并没有被vCenter所纳管,所以会提示你上面的错误,也就说,使用RDU工作流升级,需要vCenter纳管自身VM虚拟机所在的ESXi主机,否则不受支持。将vCenter 虚拟机所在的主机加入vCenter后,重新连接vCenter ISO镜像文件即可。

重新到vCenter 更新页面,重新检测ISO 文件,检测正常。

备份vCenter Server。

升级vCenter Server Life-Cyle Manager插件。

配置目标vCenter设备。点击“配置目标设备”。

接受协议。

是否加入CEIP。

配置目标vCenter的存放位置。可以选择设置一个新的位置。

目标vCenter 配置设置。可以选择与源vCenter相同的配置,或者选择“详细配置”进行自定义配置。

选择详细配置以自定义设置。配置目标vCenter存储的文件夹。

配置目标vCenter计算资源。

配置目标vCenter的虚拟机名称和临时密码。可以是源vCenter名称或者设置新名称。

配置目标vCenter设备的部署大小。注意,部署大小不能低于源vCenter的部署大小。比如源vCenter是小型,那部署大小不能选择微型。

配置目标vCenter的数据存储位置。

配置目标vCenter的临时网络。用于连接源vCenter进行数据迁移。

配置完成。

点击下一步后,点击“启动升级”。

启动升级后,会创建一个目标vCenter虚拟机。在这个过程中,你也可以点击“取消升级”。

等待一段时间后,升级完成。此升级过程,源vCenter将保持可用状态,直到你在合适的窗口时间点击“切换”按钮以完成vCenter的更新。

切换期间,源vCenter服务将会停止,直到目标vCenter接管服务,此过程的时间多少取决于不同的环境,最块切换时间几分钟内即可完成。

点击“切换”。将在独立的窗口(https://vcenter.mulab.local/lcm-ui/?view=standaloneUi)执行这一过程。

完成切换。

登录vSphere Client,查看vCenter Server已更新至目标版本。

注意,源vCenter已被关机,如果源vCenter重新启动,则目标vCenter会被删掉。建议在源vCenter配置里面将网卡开机自动连接取消掉。

二、vCenter 8.0 U2a 升级到 vCenter 8.0 U2b

第二种类型,使用RDU工作流从vCenter 8.0 U2 及之后的版本升级到更新的版本(例如vCenter 8.0 U2b)同样非常简单,过程跟上面的基本差不多。

将vCenter ISO镜像文件(完整安装包)挂载到vCenter虚拟机的CD-ROM光驱。

转到vCenter更新,可以看到已自动检测到目标vCenter版本。

备份vCenter Server。

升级vCenter Server Lifecycle Manager 插件。

更新完成,提示刷新浏览器。

配置目标vCenter设备。

接受协议。

是否加入CEIP。

目标vCenter的部署位置。

目标vCenter配置。选择源vCenter相同配置。

目标vCenter虚拟机名称和临时root密码。

目标vCenter临时网络设置。

完成配置。

点击升级。同样会创建目标vCenter设备并开始数据迁移。

等待一段时间后,准备升级完成。

如果时间合适,点击“切换”。

切换完成。

升级成功。

posted @ 2024-04-12 20:38  JUNIOR_MU  阅读(643)  评论(0编辑  收藏  举报