With the release of VMware Cloud Foundation 4.4, we now support 2-node clusters.
The requirements are as follows:
• vSphere Lifecycle Management Images must be used. vLCM Baseline mode is not supported.
• Principal storage must be one of the following: VMFS on FC, vVol or NFS.
vSAN is not supported for 2-node clusters.
You can deploy a 2-node cluster in a new workload domain, or to an existing workload domain. The vSphere Lifecycle Management mode is determined on a workload domain level, which means that if there is an existing workload domain using vLCM Baseline (“VUM”) mode, it can not host 2-node clusters.
Below is a graphical how-to, if you want the code for an API based deployment you can skip to the end of this post, or by clicking here.
How-to
Start by commissioning additional hosts, if you already have unassigned hosts you may skip this step.
![](https://www.martingustafsson.com/wp-content/uploads/2022/02/2-commission-hosts-1-1024x576.png)
Once the hosts are in an unassigned state, you can start the VI Workload Domain deployment workflow. I’m going to use NFS in my lab.
![](https://www.martingustafsson.com/wp-content/uploads/2022/02/3-create-vi-wld-1024x576.png)
Enter the Virtual Infrastructure Name and Organization Name and tick the box to use vLCM Images for this workload domain.
![](https://www.martingustafsson.com/wp-content/uploads/2022/02/4-select-vlcm-1024x576.png)
Give the cluster a name and select which vLCM Image to use for this cluster.
![](https://www.martingustafsson.com/wp-content/uploads/2022/02/5-select-vlcm-image-1024x576.png)
Specify the NSX-T networking details. For the purpose of this exercise I will re-use an existing NSX Instance. Otherwise, enter the DNS records for the three NSX-T Managers, the VIP and the VLAN ID for the overlay network.
![](https://www.martingustafsson.com/wp-content/uploads/2022/02/6-specify-nsxt-networking-1024x576.png)
Select the hosts to use for this new 2-node cluster.
![](https://www.martingustafsson.com/wp-content/uploads/2022/02/7-specify-hosts-1024x576.png)
Specify the datastore information.
![](https://www.martingustafsson.com/wp-content/uploads/2022/02/8-specify-datastore-1024x576.png)
Select the licenses to apply.
![](https://www.martingustafsson.com/wp-content/uploads/2022/02/9-specify-licenses-1024x576.png)
Review the object names. When deploying using the SDDC Manager UI, you can not control the object names. An API based deployment must be used in order to control these.
![](https://www.martingustafsson.com/wp-content/uploads/2022/02/10-review-object-names-1024x576.png)
Review the summary and press finish.
![](https://www.martingustafsson.com/wp-content/uploads/2022/02/11-review-summary-1024x576.png)
Once the task succeeds, we can see that we have a new workload domain deployed, with a single cluster consisting of 2 nodes.
![](https://www.martingustafsson.com/wp-content/uploads/2022/02/12-completed-deployment-1-1024x576.png)
View from vSphere Client
![](https://www.martingustafsson.com/wp-content/uploads/2022/02/13-vsphere-client-1024x576.png)
API Based Deployment
If you’d rather do an API based deployment, you can use this json to deploy a new Workload Domain with a 2-node cluster:
{
"domainName": "sfo-w01",
"orgName": "rainpole",
"vcenterSpec": {
"name": "sfo-w01-vc01",
"networkDetailsSpec": {
"ipAddress": "172.16.11.64",
"dnsName": "sfo-w01-vc01.sfo.rainpole.io",
"gateway": "172.16.11.1",
"subnetMask": "255.255.255.0"
},
"rootPassword": "vcenter_server_root_password",
"datacenterName": "sfo-w01-dc01"
},
"computeSpec": {
"clusterSpecs": [{
"clusterImageId": "guid_of_vlcm_image",
"name": "sfo-w01-cl01",
"hostSpecs": [{
"id": "guid_of_esxi_host",
"licenseKey": "vsphere_esxi_license_key",
"hostNetworkSpec": {
"vmNics": [{
"id": "vmnic0",
"vdsName": "sfo-w01-cl01-vds01"
}, {
"id": "vmnic1",
"vdsName": "sfo-w01-cl01-vds01"
}]
}
},
{
"id": "guid_of_esxi_host",
"licenseKey": "vsphere_esxi_license_key",
"hostNetworkSpec": {
"vmNics": [{
"id": "vmnic0",
"vdsName": "sfo-w01-cl01-vds01"
}, {
"id": "vmnic1",
"vdsName": "sfo-w01-cl01-vds01"
}]
}
}
],
"datastoreSpec": {
"nfsDatastoreSpecs": [{
"nasVolume": {
"serverName": ["10.0.0.250"],
"path": "/nfs_mount/my_read_write_folder",
"readOnly": false
},
"datastoreName": "sfo-w01-cl01-ds-nfs01"
}]
},
"networkSpec": {
"vdsSpecs": [{
"name": "sfo-w01-cl01-vds01",
"isUsedByNsxt": true,
"portGroupSpecs": [{
"name": "sfo-w01-cl01-vds01-pg-mgmt",
"transportType": "MANAGEMENT"
},
{
"name": "sfo-w01-cl01-vds01-pg-vmotion",
"transportType": "VMOTION"
}
]
}],
"nsxClusterSpec": {
"nsxTClusterSpec": {
"geneveVlanId": 1634
}
}
}
}]
},
"nsxTSpec": {
"nsxManagerSpecs": [{
"name": "sfo-w01-nsx01a",
"networkDetailsSpec": {
"ipAddress": "172.16.11.76",
"dnsName": "sfo-w01-nsx01a.sfo.rainpole.io",
"gateway": "172.16.11.1",
"subnetMask": "255.255.255.0"
}
},
{
"name": "sfo-w01-nsx01b",
"networkDetailsSpec": {
"ipAddress": "172.16.11.77",
"dnsName": "sfo-w01-nsx01b.sfo.rainpole.io",
"gateway": "172.16.11.1",
"subnetMask": "255.255.255.0"
}
},
{
"name": "sfo-w01-nsx01c",
"networkDetailsSpec": {
"ipAddress": "172.16.11.78",
"dnsName": "sfo-w01-nsx01c.sfo.rainpole.io",
"gateway": "172.16.11.1",
"subnetMask": "255.255.255.0"
}
}
],
"vip": "172.16.11.75",
"vipFqdn": "sfo-w01-nsx01.sfo.rainpole.io",
"licenseKey": "nsxt_datacenter_enterprise_license_key",
"nsxManagerAdminPassword": "nsxt_manager_admin_password"
}
}
If you only want to deploy a 2-node cluster to an existing Workload Domain:
{
"domainId": "guid_of_workload_domain",
"computeSpec": {
"clusterSpecs": [{
"clusterImageId": "guid_of_vlcm_image",
"name": "sfo-w01-cl02",
"hostSpecs": [{
"id": "guid_of_esxi_host",
"licenseKey": "vsphere_esxi_license_key",
"username": "root",
"hostNetworkSpec": {
"vmNics": [{
"id": "vmnic0",
"vdsName": "sfo-w01-cl02-vds01"
}, {
"id": "vmnic1",
"vdsName": "sfo-w01-cl02-vds01"
}]
}
}, {
"id": "guid_of_esxi_host",
"licenseKey": "vsphere_esxi_license_key",
"username": "root",
"hostNetworkSpec": {
"vmNics": [{
"id": "vmnic0",
"vdsName": "sfo-w01-cl02-vds01"
}, {
"id": "vmnic1",
"vdsName": "sfo-w01-cl02-vds01"
}]
}
}],
"datastoreSpec": {
"nfsDatastoreSpecs": [{
"nasVolume": {
"serverName": ["10.0.0.250"],
"path": "/nfs_mount/my_read_write_folder",
"readOnly": false
},
"datastoreName": "sfo-w01-cl02-ds-nfs01"
}]
},
"networkSpec": {
"vdsSpecs": [{
"isUsedByNsxt": true,
"name": "sfo-w01-cl02-vds01",
"portGroupSpecs": [{
"name": "sfo-w01-cl02-vds01-pg-mgmt",
"transportType": "MANAGEMENT"
}, {
"name": "sfo-w01-cl02-vds01-pg-vmotion",
"transportType": "VMOTION"
}]
}],
"nsxClusterSpec": {
"nsxTClusterSpec": {
"geneveVlanId": 1634
}
}
},
"advancedOptions": {
"evcMode": "",
"highAvailability": {
"enabled": true
}
}
}],
"skipFailedHosts": false
}
}
Good stuff. Version 4.3.1 supports 2-node clusters as well but only as an API based deployment.
Any changes happened for this in VCF 4.5 or 5.0? i.e. support for 2-node in baseline-based workload-domains?
Hi Andre,
There are no changes in VCF 5 in regards to this. vLCM image mode is still required. vLCM Baseline mode is actually deprecated in vSphere 8, you can read about it in the vSphere 8 release notes; https://docs.vmware.com/en/VMware-vSphere/8.0/rn/vmware-vsphere-80-release-notes/index.html
Work is ongoing to only use image mode with VCF.