继续折腾VCF,目标是把VCF从当前的版本3.8.1升级到3.9。由于VCF涉及的组件比较多,包括SDDC Manger、vCenter、PSC等,因此正好借着这次机会梳理下升级的流程。


由于篇幅有限,这篇文章主要关注如何升级SDDC Manager

当前我们SDDC Manager的版本是3.8.1

🥮8x07 VCF 如何升级SDDC Manager - 图19


VCF升级顺序

=======================

注意:VCF的版本升级是需要按照顺序的,也就是说,如果当前是3.8的版本的话,需要先升级到3.8.1,再升级到3.9。

除此以外,如果用户使用的标准架构的VCF的话(管理域与工作域分开),则要先升级管理域再升级工作域。由于我使用的是整合架构,因此只需要升级一个管理域就可以。



升级之前的准备工作

=======================

在升级之前,需要先完成下面的准备工作,包括给重要虚拟机做快照!(重要),下载升级介质等。另外,需要注意的话,升级前需要确定SDDC manager所在的vSAN集群有足够的空间。(我就遇到了上传升级包的时候vSAN被撑爆的场景)

🥮8x07 VCF 如何升级SDDC Manager - 图20



关于Bundle

========================

VCF支持两种Bundle:

Upgrade Bundle:对原有的组件进行升级,包括SDDC Manager,vCenter、ESXi和PSC。

Install Bundle:在工作域中安装新的产品,例如NSX-T,PKS和VIEW


下载离线升级包

=======================

我们在升级前需要先提前准备好升级包,包括在线下载和离线下载两个方法。由于我的VCF环境无法连接外网,因此选择离线下载升级包(这个方法也是最复杂的)。步骤如下:

1.使用vcf用户SSH登录到SDDC Manager虚拟机,执行如下的命令:

cd /opt/vmware/vcf/lcm/lcm-tools/bin

./lcm-bundle-transfer-util —generateMarker

这个命令会在/home/vcf下产生两个文件markerFile和markerFile.md5

🥮8x07 VCF 如何升级SDDC Manager - 图21



2.把这个两个文件以及/opt/vmware/vcf/lcm/lcm-tools这个目录拷贝到可以联网的“跳板机”(物理机/虚拟机),该跳板机可以是Windows或者Linux操作系统,Java8以上的版本。



3.在跳板机上执行如下的命令:

cd 到上传的lcm-tools里bin目录下

lcm-bundle-transfer-util -download

-outputDirectory C:\Users\administrator.CHANG\Documents #下载路径

-depotUser your_account@vmware.com #myvmware用户名

-markerFile C:\Users\administrator.CHANG\Documents\markerFile #markerFile路径

-markerMd5File C:\Users\administrator.CHANG\Documents\markerFile.md5

#markerFilemd5路径

每个参数含义如下:

🥮8x07 VCF 如何升级SDDC Manager - 图22

执行后会提醒输入MyVMware密码,输入完成后就会出现需要下载的文件列表

🥮8x07 VCF 如何升级SDDC Manager - 图23

注意:再次提醒下下载的日志包会非常大,请确保环境确保有足够的空间(尤其是实验环境)。下载的文件会保存在输出目录的/bundles文件目录下。



上传离线升级包

=======================

1. 下载完成后,现在我们需要把下载的文件上传(例如scp)到SDDC Manager。在SDDC Manager的目录下/nfs/vmware/vcf/nfs-mount/创建一个目录,例如vcf381to39。

一共有三部分文件需要上传到这个文件夹

“跳板机”下载目录里的bundles文件夹-里面包含所有的升级包

“跳板机”下载目录里生成的manifests文件夹

“跳板机”下载目录里生成的两个文件,包括:deltaFileDownloaded和deltaFileDownloaded.md5



🥮8x07 VCF 如何升级SDDC Manager - 图24

(从跳板机上传3部分文件到SDDC Manager)

🥮8x07 VCF 如何升级SDDC Manager - 图25

(上传到SDDC Manager后的状态(创建了新的文件夹vcf381to39))



2. 记得修改这个目录的权限

chmod -R 0777 /nfs/vmware/vcf/nfs-mount/vcf381to39



3. 此时还没有结束,还需要使用lcm-bundle-transfer-util命令把上传的文件放到VCF指定的位置并且进行验证。执行如下的命令:

cd /opt/vmware/vcf/lcm/lcm-tools/bin

./lcm-bundle-transfer-util -upload

-bundleDirectory /nfs/vmware/vcf/nfs-mount/vcf381to39/ #刚才上传文件的目录

🥮8x07 VCF 如何升级SDDC Manager - 图26

(开始上传并且验证)

4. 上传验证完成后,我们在UI界面可以看到如下界面

🥮8x07 VCF 如何升级SDDC Manager - 图27



如何清除错误的bundle信息

=========================

在我操作的过程中,在上述上传验证命令完成后不小心把安装包存放的文件夹删除了,当我尝试重新上传的话,显示如下的报错。这是因为上传时相关的记录的会写到数据库中,此时虽然实际文件已经被删除,但是由于数据库中依旧有记录,所以导致一直显示文件已存在。因此我们需要清除数据库中的相关信息。



🥮8x07 VCF 如何升级SDDC Manager - 图28



我尝试的各种方法访问数据库,最后在同事帮助的下找到一个很好的工具来清除在数据库里bundle相关的信息。

在/opt/vmware/vcf/lcm/lcm-app/bin 下执行

python bundle_cleanup.py 3d8f87a3-d120-443d-a789-184b0b73b7ae

后面是bundle的UUID



升级之前的预检查

====================

上传完成后,我们对VCF进行升级前的预检查

🥮8x07 VCF 如何升级SDDC Manager - 图29

只有确保了所有的检查都通过后才可以进行后续的升级

🥮8x07 VCF 如何升级SDDC Manager - 图30

具体点开可以看到检查失败的原因(例如资源不足)

🥮8x07 VCF 如何升级SDDC Manager - 图31



在我的环境里,由于使用的嵌套ESXi主机,因此vSAN兼容性检查的项目使用无法通过,解决方法如下:

编辑

/opt/vmware/vcf/lcm/lcm-app/conf/application-prod.properties

把vSAN相关的项目修改成false,重启LCM服务即可

🥮8x07 VCF 如何升级SDDC Manager - 图32

重启完成后再检查就可以通过了。

🥮8x07 VCF 如何升级SDDC Manager - 图33

预检查完成后就可以升级了。用户可以选择“现在升级”也可以设置升级时间,开始升级后界面如下:

🥮8x07 VCF 如何升级SDDC Manager - 图34

升级过程状态如下:

🥮8x07 VCF 如何升级SDDC Manager - 图35



升级过程完成后重新登录,就可以SDDC Manager已经成功升级到3.9版本了。

🥮8x07 VCF 如何升级SDDC Manager - 图36



至此,SDDC Manager升级完成。



参考文档:

https://my-sddc.net/upgrading-to-3-8-with-vmware-cloud-foundation/

https://docs.vmware.com/en/VMware-Cloud-Foundation/3.9/vcf-39-upgrade.pdf