【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 <var id="GUID-008FC8BA-3A82-4229-9B6C-760DAD536499__varname_DE8719AC187544F7984160290052CE1A" class="keyword varname">https://web_server_name.your_company.com/vc_update_repo </var>进行设置)。

安装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

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

登录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设备并开始数据迁移。

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

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

切换完成。

升级成功。

相关推荐
JUNIOR_MU7 天前
【VMware VCF】使用 VCF Import Tool 将现有 vSphere 环境导入为 VI 域。
esxi·convert·nsx·import·vsphere·vcenter·vsan·vcenter server·vcf·vmware cloud foundation·nsx manager·vi workload domain·sddc manager·vcf import tool·bundle transfer utility·compatibility matrix
JUNIOR_MU3 个月前
【VMware vCenter】VMware vCenter Server(VCSA) 5.5 版本证书过期问题处理过程。
证书·vsphere·vcenter·sts证书
sysin.org3 个月前
VMware vSphere 8.0 Update 3 发布下载 - 企业级工作负载平台
esxi·vmware·vsphere·vcenter
JUNIOR_MU3 个月前
【VMware vSphere】使用RVTools中的PowerShell脚本创建导出vSphere环境信息的自动化任务。
esxi·powershell·vcenter·rvtools
JUNIOR_MU4 个月前
【VMware vSphere】使用vSphere Lifecycle Manager(vLCM)管理独立主机和集群的生命周期。
esxi·image·vcenter·vlcm
JUNIOR_MU5 个月前
【VMware vCenter】连接和使用vCenter Server嵌入式vPostgres数据库。
postgresql·vcenter·vpostgres
知白守黑V6 个月前
VMware虚拟化平台巡检:详细规范与实操技巧
esxi·vmware·vcenter·系统运维·ntp·虚拟化平台巡检·系统巡检
JUNIOR_MU7 个月前
【VMware vSAN】全新vSAN 8 ESA快速存储架构配置文件服务并创建文件共享。
esxi·nfs·vcenter·esa·vsan·smb·osa·fsvm·vdfs
JUNIOR_MU8 个月前
【VMware vSAN】使用命令行从vSAN集群中移除ESXi主机并加入到新的vSAN集群。
esxi·vcenter·vsan