Embedded VSAN Cluster

In the nearest future I am planing to update vSAN to 6.0 version on Production. The procedure is not trivial, so I want to try update on test lab. We need to build an entire embedded vsan environment.

Some facts about vSAN 5.5.

Virtual SAN 5.5 requirements:

– a minimum of 3 hosts contributing local disks, at least one SSD and one HDD per host (not all hosts need to contribute)

– ESXi 5.5 or later on each host

– hosts must be managed by vCenter Server 5.5

– 6GB of RAM on each host (10GB for 7 or more disks per host)

– compatbile storage devices listed on the HCL

– SSDs must be in use by Flash Read Cache or formatted with any filesystem

– a 1:10 ratio of SSD capacity to HDD in each host

– an SAS or SATA HBA, or RAID controller that is set up in RAID0 mode or passthrough

– ESXi Dump Collector and Syslog Collector must be configured to redirect memory dumps and logs onto a network server

– all hosts in a VSAN cluster must be part of a VSAN network and must be on the same subnet

– a private 1GbE IPv4 network, preferably 10GbE with at least one physical NIC dedicated to VSAN on each host

– VMkernel port groups must have the VSAN port property activated

DRS and HA supported.

Fault Tolerance, storage DRS, deduplication and Metro Clustering are NOT supported.

Virtual SAN 5.5 maximums:

– 32 hosts in a cluster

– 1 VSAN datastore per cluster

– 5 disk groups per host

– 35 HDDs per host, 7 HDDs per disk group

– 1 SSD per disk group

– 3000 components per host

– 3200 VMs per cluster, 100 VMs per host

– 2TB VMDK size

– 2 dedicated physical networks

– 3 host failures the cluster can tolerate

NOTE: on a cluster with HA, the maximum number of VMs per host is 64 and per cluster 2048.

 

So let’s start to build my test environment.

1. First, I took one of my physical esxi servers. This server  simply had 12 cpus, a few network cards (only need one here) and 96GB of memory. Open-mouthed smile

Typical install, then I used the dcui and changed it's ip to 192.168.95.120/24 and called it esxi.vovando.com.

I used:

Product: VMware ESXi 5.5

Release date: February 5, 2015

Patch: ESXi550-201502001

Build: 2456374

 

2. Then, I connected to my esxi server using the vsphere client from my Windows 8.1. I proceeded to create two new vswitches, called vSwitch2 and vSwitch3. These are internal vswitches, attached to no uplinks. These vswitches eventually were used for the vmotion network and vsan network for the embedded esxi servers.

 

vsan-network-esximain

 

It is CRITICAL to remember to change Promiscous Mode to ACCEPT to allow for internal communication. These switches had VM networks: vMotion-test and vSan-test.

 

promiscuous-mode

 

3. Now, it’s time to create the three embedded esxi servers.  Using the vsphere client, I created three identical esxi servers (esxi1 – 192.168.95.131), (esxi2 – 192.168.95.132) and (esxi3 – 192.168.95.133). I gave each embedded esxi server 2 vcpus, 5 gbs of ram and 3 disks. The 3 disks were 4gbs for the boot disk, 10gbs for the ssd disk   and 100gbs for the HDD to be used by vsan.

emb-esxi-properties

 

4. After the installation of each of the embedded esxi servers, I changed the disk type of each of the future ssd disks using the esxcli command. Here are the commands:

 

$ esxcli storage nmp satp rule add –satp=VMW_SATP_LOCAL –device mpx.vmhba1:C0:T1:L0 –option "enable_local enable_ssd"

$ esxcli storage core claiming unclaim –type=device –device mpx.vmhba1:C0:T1:L0

You need to reboot host after it.

 

5. Now, it was time to create the vcenter server. I used the windows-based vcenter server. Ip address that was 192.168.95.130.

 

7. Connected to the vcenter server with the vsphere client, logged in and I created a datacenter and added the three esxi servers.

8. Using the vsphere client, it was time to create the vmotion network and the vsan network, which can't be created with the vsphere client only.

vmotion

esxi01 – 10.1.0.131

esxi02 – 10.1.0.132

esxi03 – 10.1.0.133

vsan

esxi01 – 10.2.0.131

esxi02 – 10.2.0.132

esxi03 – 10.2.0.133

esxi1-network

9.  Using the web client (port 9443), create a cluster for vsan and create the disk groups necessary. If you select manual configuration, you need to create three disk groups (one per host) using the fake ssd disk and the fake HDD disk. By the time you are done, you should have a datastore that is roughly 300gb. While creating the cluster, I also enabled DRS (fully automatic) and HA (which uses the vsan network for heartbeats).

vsan cluster

After that this Cluster can be used for work.

 

10. vSan related commands.

#esxcli vsan

Usage: esxcli vsan {cmd} [cmd options]

Available Namespaces:

  datastore             Commands for VSAN datastore configuration

  network               Commands for VSAN host network configuration

  storage               Commands for VSAN physical storage configuration

  cluster               Commands for VSAN host cluster configuration

  faultdomain           Commands for VSAN fault domain configuration

  maintenancemode       Commands for VSAN maintenance mode operation

  policy                Commands for VSAN storage policy configuration

  trace                 Commands for VSAN trace configuration

 

#esxcli vsan datastore name get

   Name: vsanDatastore

#esxcli vsan network ipv4 add -i vmk2

This VMKernel network interface is already in use. Can't add again. If you want to reconfigure, use 'set' command.

#esxcli vsan network list

Interface

   VmkNic Name: vmk2

   IP Protocol: IPv4

   Interface UUID: 26e84855-f8e9-f3ad-5ff8-005056873a81

   Agent Group Multicast Address: 224.2.3.4

   Agent Group Multicast Port: 23451

   Master Group Multicast Address: 224.1.2.3

   Master Group Multicast Port: 12345

   Multicast TTL: 5

 

# esxcli vsan network list

Interface

   VmkNic Name: vmk2

   IP Protocol: IPv4

   Interface UUID: 26e84855-f8e9-f3ad-5ff8-005056873a81

   Agent Group Multicast Address: 224.2.3.4

   Agent Group Multicast Port: 23451

   Master Group Multicast Address: 224.1.2.3

   Master Group Multicast Port: 12345

   Multicast TTL: 5

# esxcli vsan cluster get

Cluster Information

   Enabled: true

   Current Local Time: 2015-05-07T16:14:52Z

   Local Node UUID: 5548e218-ae75-c834-0331-005056873a81

   Local Node State: BACKUP

   Local Node Health State: HEALTHY

   Sub-Cluster Master UUID: 5548e429-d572-3814-2780-005056872eec

   Sub-Cluster Backup UUID: 5548e218-ae75-c834-0331-005056873a81

   Sub-Cluster UUID: 523a032b-4d44-8fbd-2954-74154216d6b2

   Sub-Cluster Membership Entry Revision: 11

   Sub-Cluster Member UUIDs: 5548e429-d572-3814-2780-005056872eec, 5548e218-ae75-c834-0331-005056873a81, 5548de32-1dc9-573c-6be5-005056877536

   Sub-Cluster Membership UUID: f68c4b55-ec10-02a5-120c-005056872eec

# esxcli vsan storage list

mpx.vmhba1:C0:T2:L0

   Device: mpx.vmhba1:C0:T2:L0

   Display Name: mpx.vmhba1:C0:T2:L0

   Is SSD: false

   VSAN UUID: 52711c36-d9a2-c17b-7b4f-fe6ca685d0e8

   VSAN Disk Group UUID: 52887c5a-12a2-384d-679b-fb9ed6775bfa

   VSAN Disk Group Name: mpx.vmhba1:C0:T1:L0

   Used by this host: true

   In CMMDS: true

   Checksum: 5186061164308225788

   Checksum OK: true

   Emulated DIX/DIF Enabled: false

mpx.vmhba1:C0:T1:L0

   Device: mpx.vmhba1:C0:T1:L0

   Display Name: mpx.vmhba1:C0:T1:L0

   Is SSD: true

   VSAN UUID: 52887c5a-12a2-384d-679b-fb9ed6775bfa

   VSAN Disk Group UUID: 52887c5a-12a2-384d-679b-fb9ed6775bfa

   VSAN Disk Group Name: mpx.vmhba1:C0:T1:L0

   Used by this host: true

   In CMMDS: true

   Checksum: 10790749511316735198

   Checksum OK: true

   Emulated DIX/DIF Enabled: false

#esxcli vsan policy getdefault

Policy Class  Policy Value

————  ——————————————————–

cluster       (("hostFailuresToTolerate" i1))

vdisk         (("hostFailuresToTolerate" i1))

vmnamespace   (("hostFailuresToTolerate" i1))

vmswap        (("hostFailuresToTolerate" i1) ("forceProvisioning" i1))

vmem          (("hostFailuresToTolerate" i1) ("forceProvisioning" i1))

#grep -i vsan /etc/vmware/esx.conf

/net/vmkernelnic/child[0002]/portgroup = "vSAN"

/net/vswitch/child[0002]/portgroup/child[0000]/name = "vSAN"

/firewall/services/vsanvp/enabled = "true"

/firewall/services/vsanvp/allowedall = "true"

/vsan/faultDomainVersion = "2"

/vsan/hostDecommissionVersion = "0"

/vsan/faultDomainName = ""

/vsan/subClusterUuid = "523a032b-4d44-8fbd-2954-74154216d6b2"

/vsan/autoClaimStorage = "true"

/vsan/enabled = "true"

/vsan/hostDecommissionMode = "decom-mode-none"

/vsan/hostDecommissionState = "decom-state-none"

/vsan/datastoreName = "vsanDatastore"

/vsan/network/child[0000]/ttl = "5"

/vsan/network/child[0000]/vmknic = "vmk2"

/vsan/network/child[0000]/masterPort = "12345"

/vsan/network/child[0000]/masterGroup = "224.1.2.3"

/vsan/network/child[0000]/ifaceUuid = "26e84855-f8e9-f3ad-5ff8-005056873a81"

/vsan/network/child[0000]/agentGroup = "224.2.3.4"

/vsan/network/child[0000]/agentPort = "23451"

/adv/Misc/HostName = "esxi02-vsan6"

#esxcfg-advcfg -l | grep -i vsan

/VSAN/ClomRepairDelay [Integer] : Minutes to wait for absent components to come back before starting repair (REQUIRES clomd RESTART!)

/VSAN/ClomMaxComponentSizeGB [Integer] : Maximum component size used for new placements (REQUIRES clomd RESTART!))

/VSAN/DomLongOpTraceMS [Integer] : Trace ops that take more than the specified value in milliseconds

/VSAN/DomLongOpUrgentTraceMS [Integer] : Urgent trace ops that take more than the specified value in milliseconds

/VSAN/DomBriefIoTraces [Integer] : Enables a brief set of per-IO DOM traces for debugging

/VSAN/DomFullIoTraces [Integer] : Enables full set of per-IO DOM traces; if disabled, IO op traces go to the per-op trace table

/VSAN/TraceEnableDom [Integer] : DOM tracing enabled

/VSAN/TraceEnableDomIo [Integer] : DOMIO tracing enabled

/VSAN/TraceEnableLsom [Integer] : LSOM tracing enabled

/VSAN/TraceEnableCmmds [Integer] : CMMDS/CMMDSResolver tracing enabled

/VSAN/TraceEnableRdt [Integer] : RDT tracing enabled

/VSAN/TraceEnablePlog [Integer] : PLOG tracing enabled

/VSAN/TraceEnableSsdLog [Integer] : SSDLOG tracing enabled

/VSAN/TraceEnableVirsto [Integer] : Virsto tracing enabled

/VSAN/VsanSparseEnabled [Integer] : Enable auto-creation of vsanSparse instead of vmfsSparse redologs, for VSAN 2.0 datastore only

/VSAN/VsanSparseCacheThreshold [Integer] : Maximum number of entries in single VsanSparse cache

/VSAN/VsanSparseCacheOverEvict [Integer] : Percentage of VsanSparseCacheThreshold to add to eviction

/VSAN/VsanSparseSpeculativePrefetch [Integer] : Number of bytes to add onto each extent interrogation request

/VSAN/VsanSparseMaxExtentsPrefetch [Integer] : Maximum number of extents to fetch during interrogation

/VSAN/VsanSparseParallelLookup [Integer] : Request written extent data from each layer in parallel

/VSAN/TraceEnableVsanSparse [Integer] : VsanSparse tracing enabled

/VSAN/TraceEnableVsanSparseIO [Integer] : VsanSparse per-IO tracing enabled

/VSAN/TraceEnableVsanSparseVerbose [Integer] : VsanSparse very verbose tracing enabled

/VSAN/VsanSparseHeapSize [Integer] : Maximum heap size for VsanSparse snapshot consolidation buffers(in KiB)

 

Next time I will tell you how to upgrade your vSan Cluster to vSAN 6.0.

Stay tuned!