【VMware VCF】VMware Cloud Foundation Part 05:部署 SDDC 管理域。
之前文章(“VMware Cloud Foundation Part 03:准备 Excel 参数表。”和“VMware Cloud Foundation Part 04:准备 ESXi 主机。”),我们已经知道了对于部署一个 VMware Cloud Foundation 来说,需要准备部署参数配置文件以及用于部署管理域的 ESXi 主机,这在前期准备当中确实需要花费大量时间和精力,不过等这一切都准备就绪后,到了真正的实施环节,也许几个小时之内就能完成所有部署上线工作,这就是使用 VMware Cloud Foundation 自动化和标准化 SDDC 解决方案所带来的魅力。
话不多说,下面正式进入主题。
一、Cloud Builder 使用技巧
可能有一些小技巧对于 Cloud Builder 工具的使用能带来帮助。工欲善其事,必先利其器。
1)查看 Log 日志文件
在 Cloud Builder 部署 VCF 管理域过程中,有可能会遇到一些报错或者失败的任务,这时可以查看以下 Cloud Builder 中的 Log 日志文件来检查具体错误的原因。SSH 以 admin 用户登录到 Cloud Builder 并切换到 root 用户,执行以下命令。
tail -f /var/log/vmware/vcf/bringup/vcf-bringup.log
tail -f /var/log/vmware/vcf/bringup/vcf-bringup-debug.log
2)开启 History 历史记录
默认情况下,Cloud Builder 虚拟机的 History 命令历史记录功能是关闭的,如果你想查看之前使用过的命令并向上翻阅历史记录,将会失败。如果想开启 History 功能,可以移除关闭历史记录的配置文件。SSH 以 admin 用户登录到 Cloud Builder 并切换到 root 用户,执行以下命令。
mv /etc/profile.d/disable.history.sh .
history
3)重置 Postgres 数据库
当使用 Cloud Builder 部署完成 VCF 管理域以后,最终会显示如下图所示界面。如果你想继续使用 Cloud Builder 重新部署 VCF 管理域或者部署另外一个 VCF 实例,再去访问 Cloud Builder 时始终会停留在下图所示的界面。
要想再次使用 Cloud Builder,可以重置 Postgres 数据库。SSH 以 admin 用户登录到 Cloud Builder 并切换到 root 用户,执行以下命令。
/usr/pgsql/13/bin/psql -U postgres -d bringup -h localhost
delete from execution;
delete from "Resource";
\q
二、vSAN ESA HCL 自定义文件
当你跟我一样使用了嵌套 ESXi 虚拟机来部署 VMware Cloud Foundation 时,如果你选择使用 vSAN OSA 架构来部署 VCF 管理域,那么在部署的时候不会遇到 HCL 兼容性问题,因为不会去检查 HCL JSON 文件;但是,要是你部署 vSAN ESA 架构,并使用官方的 HCL JSON 文件(https://partnerweb.vmware.com/service/vsan/all.json)的话,那一定会遇到兼容性问题,ESXi host vSAN compatibility validation 检查将会失败(Failed to verify HCL status on ESXi Host vcf-mgmt01-esxi01.mulab.local),如下图所示。
1)生成嵌套 ESXi 主机的自定义 HCL JSON 文件
针对上述这个问题,可以使用 VMware 工程师 William Lam 所制作的 PowerCLI 脚本来生成自定义 HCL JSON 文件进行解决,脚本完整内容如下。很有意思的是,这个方法是不是也可以用于嵌套环境中 vSAN ESA 集群的部署和使用基于映像的 vLCM 生命周期管理所遇到的硬件兼容性问题?!注意,你需要安装 PowerCLI 环境,才能执行以下步骤。
# Author: William Lam
# Description: Dynamically generate custom vSAN ESA HCL JSON file connected to standalone ESXi host
$vmhost = Get-VMHost
$supportedESXiReleases = @("ESXi 8.0 U2")
Write-Host -ForegroundColor Green "`nCollecting SSD information from ESXi host ${vmhost} ... "
$imageManager = Get-View ($Vmhost.ExtensionData.ConfigManager.ImageConfigManager)
$vibs = $imageManager.fetchSoftwarePackages()
$storageDevices = $vmhost.ExtensionData.Config.StorageDevice.scsiTopology.Adapter
$storageAdapters = $vmhost.ExtensionData.Config.StorageDevice.hostBusAdapter
$devices = $vmhost.ExtensionData.Config.StorageDevice.scsiLun
$pciDevices = $vmhost.ExtensionData.Hardware.PciDevice
$ctrResults = @()
$ssdResults = @()
$seen = @{}
foreach ($storageDevice in $storageDevices) {
$targets = $storageDevice.target
if($targets -ne $null) {
foreach ($target in $targets) {
foreach ($ScsiLun in $target.Lun.ScsiLun) {
$device = $devices | where {$_.Key -eq $ScsiLun}
$storageAdapter = $storageAdapters | where {$_.Key -eq $storageDevice.Adapter}
$pciDevice = $pciDevices | where {$_.Id -eq $storageAdapter.Pci}
# Convert from Dec to Hex
$vid = ('{0:x}' -f $pciDevice.VendorId).ToLower()
$did = ('{0:x}' -f $pciDevice.DeviceId).ToLower()
$svid = ('{0:x}' -f $pciDevice.SubVendorId).ToLower()
$ssid = ('{0:x}' -f $pciDevice.SubDeviceId).ToLower()
$combined = "${vid}:${did}:${svid}:${ssid}"
if($storageAdapter.Driver -eq "nvme_pcie" -or $storageAdapter.Driver -eq "pvscsi") {
switch ($storageAdapter.Driver) {
"nvme_pcie" {
$controllerType = $storageAdapter.Driver
$controllerDriver = ($vibs | where {$_.name -eq "nvme-pcie"}).Version
}
"pvscsi" {
$controllerType = $storageAdapter.Driver
$controllerDriver = ($vibs | where {$_.name -eq "pvscsi"}).Version
}
}
$ssdReleases=@{}
foreach ($supportedESXiRelease in $supportedESXiReleases) {
$tmpObj = [ordered] @{
vsanSupport = @( "All Flash:","vSANESA-SingleTier")
$controllerType = [ordered] @{
$controllerDriver = [ordered] @{
firmwares = @(
[ordered] @{
firmware = $device.Revision
vsanSupport = [ordered] @{
tier = @("AF-Cache", "vSANESA-Singletier")
mode = @("vSAN", "vSAN ESA")
}
}
)
type = "inbox"
}
}
}
if(!$ssdReleases[$supportedESXiRelease]) {
$ssdReleases.Add($supportedESXiRelease,$tmpObj)
}
}
if($device.DeviceType -eq "disk" -and !$seen[$combined]) {
$ssdTmp = [ordered] @{
id = [int]$(Get-Random -Minimum 1000 -Maximum 50000).toString()
did = $did
vid = $vid
ssid = $ssid
svid = $svid
vendor = $device.Vendor
model = ($device.Model).trim()
devicetype = $device.ApplicationProtocol
partnername = $device.Vendor
productid = ($device.Model).trim()
partnumber = $device.SerialNumber
capacity = [Int]((($device.Capacity.BlockSize * $device.Capacity.Block) / 1048576))
vcglink = "https://williamlam.com/homelab"
releases = $ssdReleases
vsanSupport = [ordered] @{
mode = @("vSAN", "vSAN ESA")
tier = @("vSANESA-Singletier", "AF-Cache")
}
}
$controllerReleases=@{}
foreach ($supportedESXiRelease in $supportedESXiReleases) {
$tmpObj = [ordered] @{
$controllerType = [ordered] @{
$controllerDriver = [ordered] @{
type = "inbox"
queueDepth = $device.QueueDepth
firmwares = @(
[ordered] @{
firmware = $device.Revision
vsanSupport = @( "Hybrid:Pass-Through","All Flash:Pass-Through","vSAN ESA")
}
)
}
}
vsanSupport = @( "Hybrid:Pass-Through","All Flash:Pass-Through")
}
if(!$controllerReleases[$supportedESXiRelease]) {
$controllerReleases.Add($supportedESXiRelease,$tmpObj)
}
}
$controllerTmp = [ordered] @{
id = [int]$(Get-Random -Minimum 1000 -Maximum 50000).toString()
releases = $controllerReleases
}
$ctrResults += $controllerTmp
$ssdResults += $ssdTmp
$seen[$combined] = "yes"
}
}
}
}
}
}
# Retrieve the latest vSAN HCL jsonUpdatedTime
$results = Invoke-WebRequest -Uri 'https://vsanhealth.vmware.com/products/v1/bundles/lastupdatedtime' -Headers @{'x-vmw-esp-clientid'='vsan-hcl-vcf-2023'}
# Parse out content between '{...}'
$pattern = '\{(.+?)\}'
$matched = ([regex]::Matches($results, $pattern)).Value
if($matched -ne $null) {
$vsanHclTime = $matched|ConvertFrom-Json
} else {
Write-Error "Unable to retrieve vSAN HCL jsonUpdatedTime, ensure you have internet connectivity when running this script"
}
$hclObject = [ordered] @{
timestamp = $vsanHclTime.timestamp
jsonUpdatedTime = $vsanHclTime.jsonUpdatedTime
totalCount = $($ssdResults.count + $ctrResults.count)
supportedReleases = $supportedESXiReleases
eula = @{}
data = [ordered] @{
controller = @($ctrResults)
ssd = @($ssdResults)
hdd = @()
}
}
$dateTimeGenerated = Get-Date -Uformat "%m_%d_%Y_%H_%M_%S"
$outputFileName = "custom_vsan_esa_hcl_${dateTimeGenerated}.json"
Write-Host -ForegroundColor Green "Saving Custom vSAN ESA HCL to ${outputFileName}`n"
$hclObject | ConvertTo-Json -Depth 12 | Out-File -FilePath $outputFileName
运行 Powershell,使用 PowerCLI 命令 Connect-VISserver 连接到嵌套 ESXi 主机,并运行自定义 HCL JSON 文件生成脚本。
生成的自定义 HCL JSON 文件内容如下所示。注意,运行上述脚本需要电脑连接互联网,如果不能连网,则需要手动下载官方的 HCL JSON 文件(https://partnerweb.vmware.com/service/vsan/all.json),然后将 timestamp 和 jsonUpdatedTime 字段的值修改为官方的 HCL JSON 文件中的最新值。
{
"timestamp": 1721122728,
"jsonUpdatedTime": "July 16, 2024, 2:38 AM PDT",
"totalCount": 2,
"supportedReleases": [
"ESXi 8.0 U2"
],
"eula": {
},
"data": {
"controller": [
{
"id": 33729,
"releases": {
"ESXi 8.0 U2": {
"nvme_pcie": {
"1.2.4.11-1vmw.802.0.0.22380479": {
"type": "inbox",
"queueDepth": 510,
"firmwares": [
{
"firmware": "1.3",
"vsanSupport": [
"Hybrid:Pass-Through",
"All Flash:Pass-Through",
"vSAN ESA"
]
}
]
}
},
"vsanSupport": [
"Hybrid:Pass-Through",
"All Flash:Pass-Through"
]
}
}
}
],
"ssd": [
{
"id": 25674,
"did": "7f0",
"vid": "15ad",
"ssid": "7f0",
"svid": "15ad",
"vendor": "NVMe",
"model": "VMware Virtual NVMe Disk",
"devicetype": "NVMe",
"partnername": "NVMe",
"productid": "VMware Virtual NVMe Disk",
"partnumber": "f72c2cf6551ae47e000c2968afc4b0ec",
"capacity": 61440,
"vcglink": "https://williamlam.com/homelab",
"releases": {
"ESXi 8.0 U2": {
"vsanSupport": [
"All Flash:",
"vSANESA-SingleTier"
],
"nvme_pcie": {
"1.2.4.11-1vmw.802.0.0.22380479": {
"firmwares": [
{
"firmware": "1.3",
"vsanSupport": {
"tier": [
"AF-Cache",
"vSANESA-Singletier"
],
"mode": [
"vSAN",
"vSAN ESA"
]
}
}
],
"type": "inbox"
}
}
}
},
"vsanSupport": {
"mode": [
"vSAN",
"vSAN ESA"
],
"tier": [
"vSANESA-Singletier",
"AF-Cache"
]
}
}
],
"hdd": [
]
}
}
2)重新另存为 HCL JSON 文件
很奇怪,不知道为什么上面自动生成的 HCL JSON 文件我这边直接使用有问题,我将生成的 HCL JSON 文件通过记事本打开,然后全部复制到另一个记事本中,再另存为 JSON 文件(如 all.json),最后导入到 Cloud Builder 才验证成功。如果你遇到同样的问题,可以尝试这一操作。
3)上传 HCL JSON 文件到 Cloud Builder
使用上面脚本生成了嵌套 ESXi 主机的自定义 HCL JSON 文件后,需要通过 SFTP 将它上传到 Cloud Builder,同时需要在 Excel 参数表中配置 HCL JSON 文件的路径,后续在部署管理域的时候需要使用。
mv /home/admin/all.json /opt/vmware/bringup/tmp/
chmod 644 /opt/vmware/bringup/tmp/all.json
chown vcf_bringup:vcf /opt/vmware/bringup/tmp/all.json
三、NSX Manager 部署技巧
1)增加 NSX Manager 部署的等待时间
VCF 管理域部署期间,在自动部署和配置 NSX 组件的时候花费的时间最长,如果部署环境的硬件性能不好,可能会持续很长时间,最后甚至会失败。可以调整 Cloud Builder 部署 NSX 组件的等待时间,这样也能在超时之前完成部署过程。SSH 以 admin 用户登录到 Cloud Builder 并切换到 root 用户,执行以下命令。
vim /opt/vmware/bringup/webapps/bringup-app/conf/application.properties
增加下面参数:
nsxt.manager.wait.minutes=100 (或者更长)
重启 Cloud Builder 服务。
systemctl restart vcf-bringup
2)修改 NSX Manager 部署节点的数量
默认情况下,部署 NSX Manager 组件的时候会部署 3 个 NSX Manager 节点并配置完整的 NSX 集群。其实,如果只是测试学习,当部署 VCF 环境的宿主机的资源不是很充足的情况下,可以只部署 1 个 NSX Manager 节点,这样还可以大大降低资源的占用。
通过将 Excel 参数表转换成 JSON 配置文件,然后找到 JSON 文件中关于 NSX 的配置,如下所示。
"nsxtSpec":
{
"nsxtManagerSize": "medium",
"nsxtManagers": [
{
"hostname": "vcf-mgmt01-nsx01a",
"ip": "192.168.32.67"
},
{
"hostname": "vcf-mgmt01-nsx01b",
"ip": "192.168.32.68"
},
{
"hostname": "vcf-mgmt01-nsx01c",
"ip": "192.168.32.69"
}
],
"rootNsxtManagerPassword": "Vcf5@password",
"nsxtAdminPassword": "Vcf5@password",
"nsxtAuditPassword": "Vcf5@password",
"vip": "192.168.32.66",
"vipFqdn": "vcf-mgmt01-nsx01",
将另外 2 个 NSX Manager 节点从 JSON 文件中删除,如下所示。这样你就可以只部署 1 个节点了。
"nsxtSpec":
{
"nsxtManagerSize": "medium",
"nsxtManagers": [
{
"hostname": "vcf-mgmt01-nsx01a",
"ip": "192.168.32.67"
}
],
"rootNsxtManagerPassword": "Vcf5@password",
"nsxtAdminPassword": "Vcf5@password",
"nsxtAuditPassword": "Vcf5@password",
"vip": "192.168.32.66",
"vipFqdn": "vcf-mgmt01-nsx01",
3)调整 NSX Manager 默认存储策略
同样的原因,当硬件性能不够时,可以通过调整 vSAN 默认的存储策略,将 FTT 修改为 0,也就是没有任务副本,这样在部署 NSX Manager 组件的时候也可以加快部署,等后续 VCF 管理域部署成功之后,再将 NSX Manager 节点的 vSAN 存储策略调整为 vSAN ESA 默认的存储策略(RAID 5)。注意,这需要在 Cloud Builder 部署 NSX Manager 组件之前登录 vSphere Client 进行调整。
4)修改 NSX Manager 内存预留
同样的原因,当硬件资源不够时,可以将 NSX Manager 节点虚拟机的内存配置中的内存预留修改为“0”,也就是不占用分配的全部内存资源。当然这个可根据需要在 VCF 管理域部署成功之后登录 vSphere Client 进行修改。
四、准备 JSON 配置文件
1)Excel 参数表
下面是针对当前环境准备的 Excel 参数表,大家可以有个直观的了解。License 已经过处理。
- Credentials 参数表
- Hosts and Networks 参数表
- Deploy Parameters 参数表
2)JSON 配置文件
后面将使用 JSON 格式的配置文件导入部署,只保留了 1 个 NSX Manager 节点。License 已经过处理。
{
"subscriptionLicensing": false,
"skipEsxThumbprintValidation": false,
"managementPoolName": "vcf-mgmt01-np01",
"sddcManagerSpec": {
"secondUserCredentials": {
"username": "vcf",
"password": "Vcf5@password"
},
"ipAddress": "192.168.32.70",
"hostname": "vcf-mgmt01-sddc01",
"rootUserCredentials": {
"username": "root",
"password": "Vcf5@password"
},
"localUserPassword": "Vcf5@password"
},
"sddcId": "vcf-mgmt01",
"esxLicense": "00000-00000-00000-00000-00000",
"taskName": "workflowconfig/workflowspec-ems.json",
"ceipEnabled": false,
"fipsEnabled": false,
"ntpServers": ["192.168.32.3"],
"dnsSpec": {
"subdomain": "mulab.local",
"domain": "mulab.local",
"nameserver": "192.168.32.3"
},
"networkSpecs": [
{
"networkType": "MANAGEMENT",
"subnet": "192.168.32.0/24",
"gateway": "192.168.32.254",
"vlanId": "0",
"mtu": "1500",
"portGroupKey": "vcf-mgmt01-vds01-pg-mgmt",
"standbyUplinks":[],
"activeUplinks":[
"uplink1",
"uplink2"
]
},
{
"networkType": "VMOTION",
"subnet": "192.168.40.0/24",
"gateway": "192.168.40.254",
"vlanId": "40",
"mtu": "9000",
"portGroupKey": "vcf-mgmt01-vds01-pg-vmotion",
"includeIpAddressRanges": [{"endIpAddress": "192.168.40.4", "startIpAddress": "192.168.40.1"}],
"standbyUplinks":[],
"activeUplinks":[
"uplink1",
"uplink2"
]
},
{
"networkType": "VSAN",
"subnet": "192.168.41.0/24",
"gateway": "192.168.41.254",
"vlanId": "41",
"mtu": "9000",
"portGroupKey": "vcf-mgmt01-vds02-pg-vsan",
"includeIpAddressRanges": [{"endIpAddress": "192.168.41.4", "startIpAddress": "192.168.41.1"}],
"standbyUplinks":[],
"activeUplinks":[
"uplink1",
"uplink2"
]
},
{
"networkType": "VM_MANAGEMENT",
"subnet": "192.168.32.0/24",
"gateway": "192.168.32.254",
"vlanId": "0",
"mtu": "9000",
"portGroupKey": "vcf-mgmt01-vds01-pg-vm-mgmt",
"standbyUplinks":[],
"activeUplinks":[
"uplink1",
"uplink2"
]
}
],
"nsxtSpec":
{
"nsxtManagerSize": "medium",
"nsxtManagers": [
{
"hostname": "vcf-mgmt01-nsx01a",
"ip": "192.168.32.67"
}
],
"rootNsxtManagerPassword": "Vcf5@password",
"nsxtAdminPassword": "Vcf5@password",
"nsxtAuditPassword": "Vcf5@password",
"vip": "192.168.32.66",
"vipFqdn": "vcf-mgmt01-nsx01",
"nsxtLicense": "33333-33333-33333-33333-33333",
"transportVlanId": 42,
"ipAddressPoolSpec": {
"name": "vcf-mgmt01-tep01",
"description": "ESXi Host Overlay TEP IP Pool",
"subnets":[
{
"ipAddressPoolRanges":[
{
"start": "192.168.42.1",
"end": "192.168.42.8"
}
],
"cidr": "192.168.42.0/24",
"gateway": "192.168.42.254"
}
]
}
},
"vsanSpec": {
"licenseFile": "11111-11111-11111-11111-11111",
"vsanDedup": "false",
"esaConfig": {
"enabled": true
},
"hclFile": "/opt/vmware/bringup/tmp/all.json",
"datastoreName": "vcf-mgmt01-vsan-esa-datastore01"
},
"dvsSpecs": [
{
"dvsName": "vcf-mgmt01-vds01",
"vmnics": [
"vmnic0",
"vmnic1"
],
"mtu": 9000,
"networks":[
"MANAGEMENT",
"VMOTION",
"VM_MANAGEMENT"
],
"niocSpecs":[
{
"trafficType":"VSAN",
"value":"HIGH"
},
{
"trafficType":"VMOTION",
"value":"LOW"
},
{
"trafficType":"VDP",
"value":"LOW"
},
{
"trafficType":"VIRTUALMACHINE",
"value":"HIGH"
},
{
"trafficType":"MANAGEMENT",
"value":"NORMAL"
},
{
"trafficType":"NFS",
"value":"LOW"
},
{
"trafficType":"HBR",
"value":"LOW"
},
{
"trafficType":"FAULTTOLERANCE",
"value":"LOW"
},
{
"trafficType":"ISCSI",
"value":"LOW"
}
],
"nsxtSwitchConfig": {
"transportZones": [
{
"name": "vcf-mgmt01-tz-vlan01",
"transportType": "VLAN"
}
]
}
},
{
"dvsName": "vcf-mgmt01-vds02",
"vmnics": [
"vmnic2",
"vmnic3"
],
"mtu": 9000,
"networks":[
"VSAN"
],
"nsxtSwitchConfig": {
"transportZones": [ {
"name": "vcf-mgmt01-tz-overlay01",
"transportType": "OVERLAY"
},
{
"name": "vcf-mgmt01-tz-vlan02",
"transportType": "VLAN"
}
]
}
}
],
"clusterSpec":
{
"clusterName": "vcf-mgmt01-cluster01",
"clusterEvcMode": "intel-broadwell",
"clusterImageEnabled": true,
"vmFolders": {
"MANAGEMENT": "vcf-mgmt01-fd-mgmt",
"NETWORKING": "vcf-mgmt01-fd-nsx",
"EDGENODES": "vcf-mgmt01-fd-edge"
}
},
"pscSpecs": [
{
"adminUserSsoPassword": "Vcf5@password",
"pscSsoSpec": {
"ssoDomain": "vsphere.local"
}
}
],
"vcenterSpec": {
"vcenterIp": "192.168.32.65",
"vcenterHostname": "vcf-mgmt01-vcsa01",
"licenseFile": "22222-22222-22222-22222-22222",
"vmSize": "small",
"storageSize": "",
"rootVcenterPassword": "Vcf5@password"
},
"hostSpecs": [
{
"association": "vcf-mgmt01-datacenter01",
"ipAddressPrivate": {
"ipAddress": "192.168.32.61"
},
"hostname": "vcf-mgmt01-esxi01",
"credentials": {
"username": "root",
"password": "Vcf5@password"
},
"sshThumbprint": "SHA256:PYxgi8oEfK3j263pHx3InwL1xjIY1rAYN6pR607NWjc",
"sslThumbprint": "FF:A2:88:5B:C3:9A:A0:14:CE:ED:6D:F7:CE:5C:55:B6:2B:6D:35:E8:60:AE:79:79:FD:A3:A7:6C:D7:C1:5C:FA",
"vSwitch": "vSwitch0"
},
{
"association": "vcf-mgmt01-datacenter01",
"ipAddressPrivate": {
"ipAddress": "192.168.32.62"
},
"hostname": "vcf-mgmt01-esxi02",
"credentials": {
"username": "root",
"password": "Vcf5@password"
},
"sshThumbprint": "SHA256:h6HfTvQi/HJxFq48Q4SQH1TevWqNvgEQ1kWARQwpjKw",
"sslThumbprint": "70:1A:62:4F:B6:A9:A2:E2:AC:6E:4D:28:DE:E5:A8:FE:B1:F3:B0:A0:3F:26:93:86:F1:66:B3:A6:44:50:1F:AE",
"vSwitch": "vSwitch0"
},
{
"association": "vcf-mgmt01-datacenter01",
"ipAddressPrivate": {
"ipAddress": "192.168.32.63"
},
"hostname": "vcf-mgmt01-esxi03",
"credentials": {
"username": "root",
"password": "Vcf5@password"
},
"sshThumbprint": "SHA256:rniXpvC4JmiXVq7nd+FkjMrX+oTKCM+CgkvglKATgEE",
"sslThumbprint": "76:84:9E:03:BB:C5:10:FE:72:FC:D3:24:84:71:F5:85:7B:A7:0B:55:7C:7B:0F:BB:83:EA:D7:4F:66:3E:B1:8D",
"vSwitch": "vSwitch0"
},
{
"association": "vcf-mgmt01-datacenter01",
"ipAddressPrivate": {
"ipAddress": "192.168.32.64"
},
"hostname": "vcf-mgmt01-esxi04",
"credentials": {
"username": "root",
"password": "Vcf5@password"
},
"sshThumbprint": "SHA256:b5tRZdaKBbMUGmXPAph5s6XdMKQ5Mh0pjzgM0A16J/g",
"sslThumbprint": "97:83:39:DE:C0:D3:99:06:49:FF:1C:E8:BA:76:60:C6:C1:45:19:BD:C9:10:B0:C2:58:AC:71:12:C8:21:A9:BF",
"vSwitch": "vSwitch0"
}
]
}
五、部署 SDDC 管理域
在准备以上所有环境后,现在正式进入 SDDC 管理域的部署。通过跳板机访问到 Cloud Builder 并完成登录。
选择 VMware Cloud Foundation 平台。
确定接受,点击 NEXT。
已准备好参数配置文件,点击 NEXT。
上传 JSON 配置文件,点击 NEXT。
完成配置文件检查,点击 NEXT。
点击确定部署 SDDC。
开始 SDDC Bringup 构建过程。
可以去吃个饭喝杯咖啡,然后完成部署。
部署过程的全部任务(之前截图)。
DOWNLOAD 部署报告,用了 2 小时。
点击 FINISH,访问 SDDC Manager。
跳转到 vCenter Server 并输入密码登录。
查看 VMware Cloud Foundation 版本。
六、SDDC 管理域相关信息
1)SDDC Manager
- SDDC Manager 仪表盘
- SDDC Manager 清单中所有工作负载域
- vcf-mgmt01 管理工作负载域摘要
- vcf-mgmt01 管理工作负载域中的主机
- vcf-mgmt01 管理工作负载域中的集群
- vcf-mgmt01 管理工作负载域组件证书
- SDDC Manager 清单中的所有主机
- SDDC Manager 中所包含的发行版本
- SDDC Manager 中所创建的网络池
- SDDC Manager 配置备份
- SDDC Manager 中组件密码管理
2)NSX Manager
- NSX 系统配置概览
- NSX 节点设备
- NSX 传输节点
- NSX 配置文件
- NSX 传输区域
- NSX 配置备份
3)vCenter Server
- VCF 管理域的主机和集群
- VCF 管理域 vSAN ESA 存储架构
- VCF 管理域相关组件虚拟机
- VCF 管理域所使用的 vSAN 存储
- VCF 管理域的分布式交换机配置
- VCF 管理域 ESXi 主机的网络配置
【VMware VCF】VMware Cloud Foundation Part 05:部署 SDDC 管理域。的更多相关文章
- VMware Cloud Foundation 4.2 发布 - 领先的混合云平台
VMware Cloud Foundation 4.2 | 09 FEB 2021 | Build 17559673 VMware Cloud Foundation 4.1 | 06 OCT 2020 ...
- vmware vSphere client中,选择文件->部署OVF模板,报错处理方法
在vmware vSphere client中,选择文件->部署OVF模板,选择指定的OVA文件,按步骤进行,则会出现这样的错误:此OVF软件包使用了不受支持的功能.OVF软件包需要不支持的硬件 ...
- Docker Harbor私有仓库部署与管理 (超详细配图)
Docker Harbor私有仓库部署与管理 1.Harbor 介绍 2.Harbor部署 3.Harbor管理 1.Harbor 介绍: 什么是 Harbor ? Harbor 是 VMware 公 ...
- Spring Cloud Config整合Spring Cloud Kubernetes,在k8s上管理配置
1 前言 欢迎访问南瓜慢说 www.pkslow.com获取更多精彩文章! Kubernetes有专门的ConfigMap和Secret来管理配置,但它也有一些局限性,所以还是希望通过Spring C ...
- 使用Cloudera部署,管理Hadoop集群
Hadoop系列之(三):使用Cloudera部署,管理Hadoop集群 http://www.cnblogs.com/ee900222/p/hadoop_3.html Hadoop系列之(一):Ha ...
- Redis Cluster部署、管理和测试
背景: Redis 3.0之后支持了Cluster,大大增强了Redis水平扩展的能力.Redis Cluster是Redis官方的集群实现方案,在此之前已经有第三方Redis集群解决方案,如Twen ...
- JBOSS EAP 6 系列五 Managed domains 管理域最主要的功能是“统一部署,统一配置”
摘要 本文首先介绍Managed Domain的概念,管理域最主要的功能是"统一部署,统一配置".接下来通过一个实例在"统一配置"部分实现一个双机配置起来的域, ...
- ASP.NET Core在Azure Kubernetes Service中的部署和管理
目录 ASP.NET Core在Azure Kubernetes Service中的部署和管理 目标 准备工作 注册 Azure 账户 AKS文档 进入Azure门户(控制台) 安装 Azure Cl ...
- 微服务下的容器部署和管理平台Rancher
Rancher是什么 Rancher是一个开源的企业级容器管理平台.通过Rancher,企业再也不必自己使用一系列的开源软件去从头搭建容器服务平台.Rancher提供了在生产环境中使用的管理Docke ...
- kubernetes有状态集群服务部署与管理
有状态集群服务的两个需求:一个是存储需求,另一个是集群需求.对存储需求,Kubernetes的解决方案是:Volume.Persistent Volume .对PV,除了手动创建PV池外,还可以通过S ...
随机推荐
- go encoding/json 替代者
https://github.com/json-iterator/go 可以替代官方包encoding/json 提升json编码和解码效率
- 使用 Microsoft Edge WebDriver 自动执行和测试 WebView2 应用 Selenium
https://learn.microsoft.com/zh-cn/microsoft-edge/webview2/how-to/webdriver
- docker安装Kafka(windows版)
windows环境安装docker参考安装docker桌面版(Windows) 这一步如果出现报错的话可以直接输入wsl -l -v命令来查看当前Ubuntu的wsl版本 安装Kafka需要先安装 z ...
- uniapp 判断当前是保存还是修改操作
步骤分析: 首先得确定你进入表单后传入了id或者整个对象[这里使用id来进行讲解]其次就是两个请求:POST(保存的) 和 PUT(修改的)最后就是通过传入的id是否存在进行判断即可 POST 请求 ...
- Vue学习:6.认识计算属性
计算属性是 Vue.js 提供的一种特殊属性,用于在模板中动态计算和返回数据.计算属性使得在模板中使用动态计算的数据变得非常简洁和方便,同时又能保持响应式更新的特性,提高了代码的可读性和可维护性. 与 ...
- postman Could not get any response 无法请求
外网访问接口地址,刚开始考虑到是阿里云服务器上面的ECS网络安全策略拦截,添加了白名单, 首先在浏览器中回车访问,页面有反应. 但是在postman中请求,仍然返回 Could not get any ...
- 多个if查询及case when 语句
concat( if(t2.`flow_flag`=1 and t1.`field_source`= '06','支付宝账号1',''),if(t2.`flow_flag`=0 and t1.`fie ...
- JAVA日期当天0点0分0秒
LocalDateTime LocalDateTime ldt = LocalDateTime.now(); LocalDateTime todayZero = LocalDateTime.of(ld ...
- python 使用pandas修改数据到excel,报“SettingwithCopyWarning A value is trying to be set on a copy of a slice from a DataFrame”的解决方法
场景: 通过pandas模块,将测试数据回写到excel,测试数据有写到excel文件,但控制台输出警告信息如下 警告: SettingwithCopyWarning A value is tryin ...
- AtCoder Beginner Contest 302 H. Ball Collector 题解 可撤销并查集
为了更好的阅读体验,请单击这里 AtCoder Beginner Contest 302 H. Ball Collector 题意跳过. 可以视作将 \(a_i, b_i\) 之间连了一条边,然后 \ ...