VMware Cloud Foundation 管理域部署要求至少准备 4 台 ESXi 主机作为最小计算单元,如果采用整合部署(管理域和 VI 工作负载域合并),还需要根据实际情况适量增加 ESXi 计算主机。但是,对于测试学习来说,我们不需要准备这么多物理主机,可以采用嵌套虚拟化部署的方式来完成实验目的。
虽然嵌套虚拟机的确可以很容易的部署我们所需要的环境,但是要部署一套完整的 VMware Cloud Foundation 解决方案,对嵌套虚拟机所在的物理宿主机的配置和性能要求可不低,这在一定程度上增加了学习和使用的门槛。所以,要是当前没有条件的小伙伴,不妨可以先试试 VMware Hands-on Labs 体验一下官方的模拟环境。
一、准备嵌套 ESXi 主机环境
1)物理 ESXi 主机信息
本次准备用于部署 VCF 嵌套实验环境的物理宿主机的配置信息如下图所示。其实,部署 VCF 环境主要对内存的大小要求比较高,部署完整的管理域相关组件下来差不多就要占用 200 GB左右内存,而对 CPU 和存储的需求可以根据实际情况适当进行分配。

2)物理 ESXi 主机网络配置信息
VCF 部署要求不同的网络流量类型使用不同的 VLAN 进行隔离,这对于有物理交换机的环境来说可以很方便的进行配置,但是如果没有这种环境,那可以参考下面这种方法在 ESXi 主机上创建一个没有连接网卡的标准交换机,然后在这个标准交换机上面再创建端口组来模拟实现相同的效果。
如下图所示,在物理宿主机上面创建了一个标准交换机 vSwitch2,并且没有连接任务物理适配器。在 vSwitch2 下面创建了两个主要的端口组 vcf-mgmt-vmotion 和 vcf-nsx-vsan,之前文章(VMware Cloud Foundation Part 03:准备 Excel 参数表。)中了解了 VCF 将按照 Excel 参数表中所选择的 Profile 配置文件,并根据 Profile 配置文件对 ESXi 主机所用于 VCF 网络流量的网卡进行分配,比如 Profile-2 配置文件将 ESXi 主机的 vmnic0 和 vmnic1 网卡用作管理网络和 vMotion 网络,将 vmnic2 和 vmnic3 网卡用于 NSX Overlay 网络和 vSAN 网络,而这里所创建的两个端口组的可以达到分离的目的;另外四个端口组分别用于这几种网络类型的虚拟网关。

关于这个 vSwitch2 标准交换机的设置,请在"安全"配置下将混杂模式、MAC 地址更改以及伪传输的功能调整为"接受"。

网络端口组 vcf-mgmt-vmotion 用于 VCF 管理网络和 vMotion 网络的流量传输,当然除了分配给嵌套 ESXi 主机以外,用于部署 VCF 管理域的 Cloud Builder(vcf-builder) 也连接到这个网络,还有提供 VCF 管理相关组件外部服务的 DNS 和 NTP 服务器(同一虚拟机 vcf-dns)也连接了该端口组,最后还有一个跳板机(vcf-win11)也连接到了该端口组,由于无法从外部访问到该交换机上面的网络,所以需要一个同属于该网络上面的跳板机去访问 Cloud Builder 工具并部署 VCF 管理域以及后续的管理。

关于这个 vcf-mgmt-vmotion 端口组的设置,请一定要将 VLAN ID 配置为"全部(4095)",并在"安全"配置下将混杂模式、MAC 地址更改以及伪传输的功能调整为"接受"。

网络端口组 vcf-mgmt-vmotion 用于 VCF 的 NSX Overlay 网络和 vSAN 网络,主要分配给嵌套 ESXi 主机使用。

关于这个 vcf-nsx-vsan 端口组的设置,请一定要将 VLAN ID 配置为"全部(4095)",并在"安全"配置下将混杂模式、MAC 地址更改以及伪传输的功能调整为"接受"。

其他 VMkernel 端口组是用于 VCF 几种网络类型的虚拟网关,这是可选项,没有网关只会提示警告并不会影响 VCF 管理域的部署。

关于这几个 VMkernel 端口组的设置,请根据不同网络类型的设定配置不同 VLAN ID ,并在"安全"配置下将混杂模式、MAC 地址更改以及伪传输的功能调整为"接受"。

3)虚拟机汇总信息
创建了一个 vcf 虚拟机文件夹,在这个文件夹下面创建了 mgmt workload domain 和 vi workload domain 文件夹分别用于放置不同工作负载域的嵌套 ESXi 主机,如下图所示。在 vcf 文件夹下面有用于部署 VCF 管理域的 Cloud Builder 虚拟机(vcf-builder)、DNS 和 NTP 服务器(vcf-dns)以及跳板机(vcf-win11)。在 mgmt workload domain 文件夹下面创建了用于部署 VCF 管理域的嵌套 ESXi 虚拟机(vcf-mgmt01-esxi01~vcf-mgmt01-esxi04),vi workload domain 文件夹后续可能会用于放置部署 VI 管理域的嵌套 ESXi 虚拟机。

4)嵌套 ESXi 虚拟机配置信息
关于创建用于部署 VCF 管理域的嵌套 ESXi 虚拟机(vcf-mgmt01-esxi01~vcf-mgmt01-esxi04)的配置信息,如下图所示。

每个嵌套 ESXi 虚拟机分配了 16 CPU,并开启了硬件虚拟化。

每个嵌套 ESXi 虚拟机分配了 96 GB 内存,VCF 对 ESXi 主机内存的需求比较大,如果配置较低一点的内存应该也能部署成功,不过如果后面要部署 VI 工作负载域并在上面运行 VI 工作负载域管理相关虚拟机,建议分配高一点。

每个嵌套 ESXi 虚拟机分配了一块 60 GB 的硬盘用于安装 ESXi 系统,类型是厚置备延迟置零,并配置单独了 NVMe 控制器。

每个嵌套 ESXi 虚拟机分配了两块 500 GB 的硬盘用于 vSAN ESA 存储,类型是精简置备,并配置单独了 NVMe 控制器。


每个嵌套 ESXi 虚拟机分配了两个 NVMe 控制器分别用于 ESXi 系统和 vSAN 存储,建议将两种类型的存储分开。

每个嵌套 ESXi 虚拟机分配了四张网卡,前面两张网卡用于管理网络和 vMotion 网络,后面两张网卡用于 NSX 网络和 vSAN 网络。

二、规划嵌套 ESXi 主机地址
规划嵌套 ESXi 主机的管理网络,DNS 和 NTP 服务器为同一个,请一定提前在 DNS 服务器上配置好嵌套 ESXi 主机的正反向域名解析。
|-------------------------------|---------------|---------------|----------------|-----------------|
| 主机名 | IP 地址 | 子网掩码 | 网关 | DNS/NTP 服务器 |
| vcf-mgmt01-esxi01.mulab.local | 192.168.32.61 | 255.255.255.0 | 192.168.32.254 | 192.168.32.3 |
| vcf-mgmt01-esxi02.mulab.local | 192.168.32.62 | 255.255.255.0 | 192.168.32.254 | 192.168.32.3 |
| vcf-mgmt01-esxi03.mulab.local | 192.168.32.63 | 255.255.255.0 | 192.168.32.254 | 192.168.32.3 |
| vcf-mgmt01-esxi04.mulab.local | 192.168.32.64 | 255.255.255.0 | 192.168.32.254 | 192.168.32.3 |
三、配置嵌套 ESXi 主机信息
关于嵌套 ESXi 主机系统的安装过程,直接就跳过了,有需要可以查阅官方文档,所以从 ESXi 主机的配置开始,下面将以一台主机的配置为例,请根据这些步骤执行相同的操作,这里就不再赘述。
1)配置 ESXi 地址
安装完 ESXi 系统后,通过 DCUI 配置 ESXi 主机的地址信息。按 F2 输入安装过程设置的 Root 密码进入配置界面。

选择"Configure Management Network"选项,配置管理网络。

网卡和 VLAN 默认即可,选择"IPv4 Configuration"选项配置 ESXi 主机管理地址。

选择静态 IPv4 地址并输入之前规划好的 ESXi 主机 IP 地址、子网掩码和网关。

选择"DNS Configuration"选项配置 ESXi 主机的 DNS 服务器和主机名。

选择"Custom DNS Suffixes"选项配置 ESXi 主机的 DNS 后缀。

按 ESC 退出并选择 YES 保存配置。

2)配置 NTP 服务
通过 ESXi 主机的管理地址访问并登录到 ESXi Host Client 管理界面。

导航到主机->管理->系统->时间和日期,点击"编辑 NTP 设置",输入 NTP 服务器的地址并选择随主机启动和停止。

导航到主机->管理->服务,找到 ntpd 服务,点击"启动"服务。

3)配置 SSL 证书
ESXi 主机安装完系统后,导航到主机->管理->安全和用户->证书,可以看到主机 SSL 证书默认是以 localhost.localdomain 域名进行签发的,需要将 SSL 证书重新生成我们配置的主机名。

导航到主机->管理->服务,找到 SSH 服务,点击"启动"服务。

通过 SSH 以 Root 用户登录到 ESXi 主机的命令行,使用以下命令重新生成新的 SSL 证书。
/sbin/generate-certificates
/etc/init.d/hostd restart && /etc/init.d/vpxa restart

如果你不想一个一个 SSH 登录到 ESXi 主机,也可以运行下面的 Powershell 脚本(管理员身份)来重新生成新的 SSL 证书。
# Install the Posh-SSH module if not already installed
Install-Module -Name Posh-SSH -Force
# Define the ESXi host details
$esxiHost = "192.168.32.62"
$username = "root"
$password = "Vcf5@password"
# Convert the password to a secure string
$securePassword = ConvertTo-SecureString $password -AsPlainText -Force
# Create the credential object
$credential = New-Object System.Management.Automation.PSCredential ($username, $securePassword)
# Establish the SSH session
$session = New-SSHSession -ComputerName $esxiHost -Credential $credential
# Run the command to regenerate certificates
Invoke-SSHCommand -SessionId $session.SessionId -Command '/sbin/generate-certificates'
# Restart the hostd service
Invoke-SSHCommand -SessionId $session.SessionId -Command '/etc/init.d/hostd restart && /etc/init.d/vpxa restart'
# Close the SSH session
Remove-SSHSession -SessionId $session.SessionId

执行上述步骤后,重新登录到 ESXi ,导航到主机->管理->安全和用户->证书,可以看到主机 SSL 证书已经变成主机名。
