Zum Thema VSAN gibt es einige sehr schöne Demos zum Durchklicken unter
https://storagehub.vmware.com/#!/vmware-vsan/vmware-vsan-demonstrations
TBD https://via.vmw.com/tchzcoreno1848 https://youtu.be/nvrCShwWMWY
Im vSAN Cluster kann es dazu kommen, dass die einzelnen Nodes partitioniert sind. Meist ist nur eine einzelne Node weg, manchmal aber auch alle Auch wenn auf den vSAN Kernelport alle Hosts sich sehen können, finden sich die Partitions nicht zusammen.
Im schlimmsten Fall sieht das so aus.
Erst mal sollte man alle vSAN Ports testen, ob die sich untereinander pingen lassen.
[root@esx-4:~] vmkping -d -s 7000 -I vmk2 192.168.4.11 PING 192.168.4.11 (192.168.4.11): 7000 data bytes 7008 bytes from 192.168.4.11: icmp_seq=0 ttl=64 time=0.615 ms 7008 bytes from 192.168.4.11: icmp_seq=1 ttl=64 time=0.854 ms 7008 bytes from 192.168.4.11: icmp_seq=2 ttl=64 time=0.765 ms --- 192.168.4.11 ping statistics --- 3 packets transmitted, 3 packets received, 0% packet loss round-trip min/avg/max = 0.615/0.745/0.854 ms
Was sagt der Cluster?
[root@esx-4:~] esxcli vsan cluster get Cluster Information Enabled: true Current Local Time: 2020-11-15T12:18:22Z Local Node UUID: 5d0cc03c-de7b-b94f-b016-54b2031c0494 Local Node Type: NORMAL Local Node State: MASTER Local Node Health State: HEALTHY Sub-Cluster Master UUID: 5d0cc03c-de7b-b94f-b016-54b2031c0494 Sub-Cluster Backup UUID: Sub-Cluster UUID: 52c9d6db-b533-a36c-6030-98d37f927e6a Sub-Cluster Membership Entry Revision: 2 Sub-Cluster Member Count: 1 Sub-Cluster Member UUIDs: 5d0cc03c-de7b-b94f-b016-54b2031c0494 Sub-Cluster Member HostNames: esx-4.schubi.local Sub-Cluster Membership UUID: af16b15f-9a9b-99f7-989e-54b2031c0494 Unicast Mode Enabled: true Maintenance Mode State: OFF Config Generation: 27b68356-c3e0-4c64-ab66-3b80741ab493 14 2020-10-19T20:29:54.524
Sieht auf jedem Cluster so aus. Jeweils nur ein Member. Aber sie “fühlen” sich dem gleichen Cluster zugehörig.
Überall ist Sub-Cluster UUID: 52c9d6db-b533-a36c-6030-98d37f927e6a
gleich.
Mal sehen wir die UniCast Agenten sich fühlen. Da gibts bei mir eine Überraschung
[root@esx-1:~] esxcli vsan cluster unicastagent list NodeUuid IsWitness Supports Unicast IP Address Port Iface Name Cert Thumbprint SubClusterUuid ------------------------------------ --------- ---------------- ------------- ----- ---------- ----------------------------------------------------------- -------------- 5d0cc03c-de7b-b94f-b016-54b2031c0494 0 true 192.168.4.232 12321 EB:EF:07:00:20:7B:09:97:AD:EB:34:27:3D:B0:A7:32:8B:CF:57:CE 52c9d6db-b533-a36c-6030-98d37f927e6a 5d0cc5d7-070b-ff59-7be6-54b20319c59c 0 true 192.168.4.149 12321 09:C6:4C:7B:AD:5F:4B:7C:29:7D:BE:DC:4C:95:04:7E:02:32:35:B5 52c9d6db-b533-a36c-6030-98d37f927e6a 5d0ccefe-e4a3-f316-ea35-54b2031bfc15 0 true 192.168.4.151 12321 B6:89:41:DC:9B:20:72:1B:19:E3:8A:C6:F8:49:AC:6D:93:8C:A3:76 52c9d6db-b533-a36c-6030-98d37f927e6a [root@esx-2:~] esxcli vsan cluster unicastagent list NodeUuid IsWitness Supports Unicast IP Address Port Iface Name Cert Thumbprint SubClusterUuid ------------------------------------ --------- ---------------- ------------- ----- ---------- ----------------------------------------------------------- -------------- 5d0cc03c-de7b-b94f-b016-54b2031c0494 0 true 192.168.4.232 12321 EB:EF:07:00:20:7B:09:97:AD:EB:34:27:3D:B0:A7:32:8B:CF:57:CE 52c9d6db-b533-a36c-6030-98d37f927e6a 5d0cca61-c2bb-4270-a20e-54b2031c044c 0 true 192.168.4.219 12321 59:E9:AA:76:F8:14:55:F2:5D:DE:B8:AA:0E:0D:D0:30:4C:39:77:21 52c9d6db-b533-a36c-6030-98d37f927e6a 5d0ccefe-e4a3-f316-ea35-54b2031bfc15 0 true 192.168.4.151 12321 B6:89:41:DC:9B:20:72:1B:19:E3:8A:C6:F8:49:AC:6D:93:8C:A3:76 52c9d6db-b533-a36c-6030-98d37f927e6a [root@esx-3:~] esxcli vsan cluster unicastagent list NodeUuid IsWitness Supports Unicast IP Address Port Iface Name Cert Thumbprint SubClusterUuid ------------------------------------ --------- ---------------- ------------- ----- ---------- ----------------------------------------------------------- -------------- 5d0cc03c-de7b-b94f-b016-54b2031c0494 0 true 192.168.4.232 12321 EB:EF:07:00:20:7B:09:97:AD:EB:34:27:3D:B0:A7:32:8B:CF:57:CE 52c9d6db-b533-a36c-6030-98d37f927e6a 5d0cc5d7-070b-ff59-7be6-54b20319c59c 0 true 192.168.4.149 12321 09:C6:4C:7B:AD:5F:4B:7C:29:7D:BE:DC:4C:95:04:7E:02:32:35:B5 52c9d6db-b533-a36c-6030-98d37f927e6a 5d0cca61-c2bb-4270-a20e-54b2031c044c 0 true 192.168.4.219 12321 59:E9:AA:76:F8:14:55:F2:5D:DE:B8:AA:0E:0D:D0:30:4C:39:77:21 52c9d6db-b533-a36c-6030-98d37f927e6a [root@esx-4:~] esxcli vsan cluster unicastagent list NodeUuid IsWitness Supports Unicast IP Address Port Iface Name Cert Thumbprint SubClusterUuid ------------------------------------ --------- ---------------- ------------- ----- ---------- ----------------------------------------------------------- -------------- 5d0cc5d7-070b-ff59-7be6-54b20319c59c 0 true 192.168.4.149 12321 09:C6:4C:7B:AD:5F:4B:7C:29:7D:BE:DC:4C:95:04:7E:02:32:35:B5 52c9d6db-b533-a36c-6030-98d37f927e6a 5d0cca61-c2bb-4270-a20e-54b2031c044c 0 true 192.168.4.219 12321 59:E9:AA:76:F8:14:55:F2:5D:DE:B8:AA:0E:0D:D0:30:4C:39:77:21 52c9d6db-b533-a36c-6030-98d37f927e6a 5d0ccefe-e4a3-f316-ea35-54b2031bfc15 0 true 192.168.4.151 12321 B6:89:41:DC:9B:20:72:1B:19:E3:8A:C6:F8:49:AC:6D:93:8C:A3:76 52c9d6db-b533-a36c-6030-98d37f927e6a
Die haben die aktuellen IOs *.4.11 bis *.4.14 gar nicht “gefressen”. Zum Thema UniCast Agent gibt es einen VMware KB https://kb.vmware.com/s/article/2150303.
Gehen wir mal die Liste durch.
[root@esx-1:~] esxcli vsan network list Interface VmkNic Name: vmk2 IP Protocol: IP Interface UUID: fbf7215f-49cd-05cd-f9d8-54b2031c044c Agent Group Multicast Address: 224.2.3.4 Agent Group IPv6 Multicast Address: ff19::2:3:4 Agent Group Multicast Port: 23451 Master Group Multicast Address: 224.1.2.3 Master Group IPv6 Multicast Address: ff19::1:2:3 Master Group Multicast Port: 12345 Host Unicast Channel Bound Port: 12321 Data-in-Transit Encryption Key Exchange Port: 0 Multicast TTL: 5 Traffic Type: vsan
Überall gut. Die Kernelport IP Config sieht auch gut aus.
[root@esx-1:~] esxcli network ip interface ipv4 get | grep vmk2 vmk2 192.168.4.11 255.255.255.0 192.168.4.255 STATIC 192.168.4.1 false
Für das weitere Vorgehen benötigen wir die UUID.
[root@esx-1:~] cmmds-tool whoami 5d0cca61-c2bb-4270-a20e-54b2031c044c [root@esx-2:~] cmmds-tool whoami 5d0cc5d7-070b-ff59-7be6-54b20319c59c [root@esx-3:~] cmmds-tool whoami 5d0ccefe-e4a3-f316-ea35-54b2031bfc15 [root@esx-4:~] cmmds-tool whoami 5d0cc03c-de7b-b94f-b016-54b2031c0494
Damit unsere folgenden manuellen Änderungen nicht durch ein Update des vCenters gestört wird, ignorieren wir die vCenter Settings temporär.
[root@esx-1:~] esxcfg-advcfg -s 1 /VSAN/IgnoreClusterMemberListupdates Value of IgnoreClusterMemberListUpdates is 1
Wichtig! Niemals auf einem Host die eigene Agent IP hinzufügen! VMware: “When an ESXi host has its own IP address in its Unicast agent list, many networking problems can arise and potentially lead to the host encountering a PSOD.” Also “Augen auf” bei den folgenden Schritten!
Für den esx1 Host müssen 2, 3 und 4 Hinzugefügt werden
esxcli vsan cluster unicastagent add -t node -u 5d0cc5d7-070b-ff59-7be6-54b20319c59c -U true -a 192.168.4.12 -p 12321 esxcli vsan cluster unicastagent add -t node -u 5d0ccefe-e4a3-f316-ea35-54b2031bfc15 -U true -a 192.168.4.13 -p 12321 esxcli vsan cluster unicastagent add -t node -u 5d0cc03c-de7b-b94f-b016-54b2031c0494 -U true -a 192.168.4.14 -p 12321
Ein Check des Hosts bringt noch nicht ganz die 100%ige Überzeugung.
[root@esx-1:~] esxcli vsan cluster unicastagent list NodeUuid IsWitness Supports Unicast IP Address Port Iface Name Cert Thumbprint SubClusterUuid ------------------------------------ --------- ---------------- ------------- ----- ---------- ----------------------------------------------------------- -------------- 5d0cc03c-de7b-b94f-b016-54b2031c0494 0 true 192.168.4.232 12321 EB:EF:07:00:20:7B:09:97:AD:EB:34:27:3D:B0:A7:32:8B:CF:57:CE 52c9d6db-b533-a36c-6030-98d37f927e6a 5d0cc03c-de7b-b94f-b016-54b2031c0494 0 true 192.168.4.14 12321 52c9d6db-b533-a36c-6030-98d37f927e6a 5d0cc5d7-070b-ff59-7be6-54b20319c59c 0 true 192.168.4.149 12321 09:C6:4C:7B:AD:5F:4B:7C:29:7D:BE:DC:4C:95:04:7E:02:32:35:B5 52c9d6db-b533-a36c-6030-98d37f927e6a 5d0cc5d7-070b-ff59-7be6-54b20319c59c 0 true 192.168.4.12 12321 52c9d6db-b533-a36c-6030-98d37f927e6a 5d0ccefe-e4a3-f316-ea35-54b2031bfc15 0 true 192.168.4.151 12321 B6:89:41:DC:9B:20:72:1B:19:E3:8A:C6:F8:49:AC:6D:93:8C:A3:76 52c9d6db-b533-a36c-6030-98d37f927e6a 5d0ccefe-e4a3-f316-ea35-54b2031bfc15 0 true 192.168.4.13 12321 52c9d6db-b533-a36c-6030-98d37f927e6a
Aber zum Glück kann man “überflüssige” Einträge löschen…
esxcli vsan cluster unicastagent remove -a 192.168.4.232 esxcli vsan cluster unicastagent remove -a 192.168.4.149 esxcli vsan cluster unicastagent remove -a 192.168.4.151
So sieht es nun gut aus.
[root@esx-1:~] esxcli vsan cluster unicastagent list NodeUuid IsWitness Supports Unicast IP Address Port Iface Name Cert Thumbprint SubClusterUuid ------------------------------------ --------- ---------------- ------------ ----- ---------- --------------- -------------- 5d0cc03c-de7b-b94f-b016-54b2031c0494 0 true 192.168.4.14 12321 52c9d6db-b533-a36c-6030-98d37f927e6a 5d0cc5d7-070b-ff59-7be6-54b20319c59c 0 true 192.168.4.12 12321 52c9d6db-b533-a36c-6030-98d37f927e6a 5d0ccefe-e4a3-f316-ea35-54b2031bfc15 0 true 192.168.4.13 12321 52c9d6db-b533-a36c-6030-98d37f927e6a
Exemplarisch noch für die weiteren Hosts
ESX2:
esxcli vsan cluster unicastagent add -t node -u 5d0cca61-c2bb-4270-a20e-54b2031c044c -U true -a 192.168.4.11 -p 12321 esxcli vsan cluster unicastagent add -t node -u 5d0ccefe-e4a3-f316-ea35-54b2031bfc15 -U true -a 192.168.4.13 -p 12321 esxcli vsan cluster unicastagent add -t node -u 5d0cc03c-de7b-b94f-b016-54b2031c0494 -U true -a 192.168.4.14 -p 12321
ESX3:
esxcli vsan cluster unicastagent add -t node -u 5d0cca61-c2bb-4270-a20e-54b2031c044c -U true -a 192.168.4.11 -p 12321 esxcli vsan cluster unicastagent add -t node -u 5d0cc5d7-070b-ff59-7be6-54b20319c59c -U true -a 192.168.4.12 -p 12321 esxcli vsan cluster unicastagent add -t node -u 5d0cc03c-de7b-b94f-b016-54b2031c0494 -U true -a 192.168.4.14 -p 12321
ESX4:
esxcli vsan cluster unicastagent add -t node -u 5d0cca61-c2bb-4270-a20e-54b2031c044c -U true -a 192.168.4.11 -p 12321 esxcli vsan cluster unicastagent add -t node -u 5d0cc5d7-070b-ff59-7be6-54b20319c59c -U true -a 192.168.4.12 -p 12321 esxcli vsan cluster unicastagent add -t node -u 5d0ccefe-e4a3-f316-ea35-54b2031bfc15 -U true -a 192.168.4.13 -p 12321
Danach natürlich wieder Kontrolle mit
esxcli vsan cluster unicastagent list
und ggf. Löschen mit
esxcli vsan cluster unicastagent remove -a
Kaum macht man es richtig, schon geht's. Ich habe einen Master, einen Backup, der Rest Agent. Hier mal ein Auszug.
[root@esx-1:~] esxcli vsan cluster get Cluster Information Enabled: true Current Local Time: 2020-11-15T13:10:16Z Local Node UUID: 5d0cca61-c2bb-4270-a20e-54b2031c044c Local Node Type: NORMAL Local Node State: BACKUP Local Node Health State: HEALTHY Sub-Cluster Master UUID: 5d0cc5d7-070b-ff59-7be6-54b20319c59c Sub-Cluster Backup UUID: 5d0cca61-c2bb-4270-a20e-54b2031c044c Sub-Cluster UUID: 52c9d6db-b533-a36c-6030-98d37f927e6a Sub-Cluster Membership Entry Revision: 4 Sub-Cluster Member Count: 4 Sub-Cluster Member UUIDs: 5d0cc5d7-070b-ff59-7be6-54b20319c59c, 5d0cca61-c2bb-4270-a20e-54b2031c044c, 5d0ccefe-e4a3-f316-ea35-54b2031bfc15, 5d0cc03c-de7b-b94f-b016-54b2031c0494 Sub-Cluster Member HostNames: esx-2.schubi.local, esx-1.schubi.local, esx-3.schubi.local, esx-4.schubi.local Sub-Cluster Membership UUID: b216b15f-40f2-2395-1900-54b20319c59c Unicast Mode Enabled: true Maintenance Mode State: OFF Config Generation: 27b68356-c3e0-4c64-ab66-3b80741ab493 20 2020-11-15T12:57:11.0
Zum Schluss nicht vergessen, den Advanced Parameter zu ersetzen:
esxcfg-advcfg -s 0 /VSAN/IgnoreClusterMemberListupdates
/etc/init.d/cmmdsd status && /etc/init.d/epd status && /etc/init.d/clomd status /etc/init.d/cmmdsd restart && /etc/init.d/epd restart && /etc/init.d/clomd restart
/localhost/DC/computers/vSAN-Cluster> table -f name -s name -f state.connection:state.maintenancemode:build:uptime:num.vms:num.poweredonvms:cpuusage:memusage hosts/*
Bei den 970er Evos wird bei neueren vSAN Releases evtl. die Firmware angemeckert.
[root@esx-1:~] esxcli nvme device get -A vmhba1 | egrep "Serial Number|Model Number|Firmware Revision" Serial Number: S4EUNG0M219966P Model Number: Samsung SSD 970 EVO Plus 250GB Firmware Revision: 1B2QEXM7
Richtig wäre hier aber FW EDA7402Q.
Die Firmware findet man unter https://www.samsung.com/semiconductor/minisite/ssd/download/tools/ Aber da ist keine EDA7402Q zu finden Die höchste Version ist 2B2QEXM7. Weitere Infos für den firmware Download können auch unter https://tinkertry.com/ssd-magician-and-firmware-download-limits-exceeded-samsung-seriously gefunden werden. Das ISO findet man unter http://ssd.samsungsemi.com/ecomobile/ssd/update14.do?fname=/Samsung_SSD_960_PRO_2B6QCXP7.iso
Also wird der Healthcheck nach https://www.virten.net/2017/04/how-to-silence-vsan-health-checks/ abgeschaltet. RVC:
vsan.health.silent_health_check_configure -a controllerfirmware .
esxcli network ip interface set -m 9000 -i vmk3 esxcli vsan health cluster list esxcli network ip interface list esxcli vsan network ip add -i vmk0 -T=witness
Durchsatz mit iperf checken:
esxcli network firewall set --enabled false
/usr/lib/vmware/vsan/bin/iperf3.copy -s -B <Kernelport IP>
esxcli network firewall set --enabled false
/usr/lib/vmware/vsan/bin/iperf3.copy -c <Kernelport IP>
esxcli network firewall set --enabled true
https://www.vmware.com/try-vmware/vsan-new-hol-labs.html
https://blogs.vmware.com/virtualblocks/2017/04/05/m-2-ssd-boot-device-vsan/
https://blogs.vmware.com/virtualblocks/2017/01/18/designing-vsan-disk-groups-cache-ratio-revisited/
https://nolabnoparty.com/en/virtual-san-2-node-cluster-installtion-robo-pt1/
https://github.com/equelin/vsanmetrics
https://storagehub.vmware.com/t/vmware-vsan/vsan-poc-performance-checklist/
https://www.virten.net/2017/04/how-to-silence-vsan-health-checks/
https://www.altaro.com/vmware/how-to-generate-vsan-html-report-powercli/
https://blogs.vmware.com/performance/2018/12/hcibench-specific-issues-recommendations-vsan.html
https://storagehub.vmware.com/section-assets/powercli-cookbook-for-vsan
https://storagehub.vmware.com/t/vmware-vsan/vmworld/vmworld-vsan-sessions/1
esxcli system settings advanced set -o /VSAN/ClomRepairDelay -i <value in minutes> /etc/init.d/clomd restart
Ich betrachte hier mal vorrangig eine VSAN Cluster mit zwei Seiten und einer Witness Appliance.
Hintergrund und Konfiguration von Fault Domains ist am einfachsten bei Cormac Hogan nachzulesen.
http://cormachogan.com/2015/04/20/vsan-6-0-part-8-fault-domains/
http://cormachogan.com/2017/03/10/2-node-vsan-topologies-review/
http://cormachogan.com/2015/09/11/a-closer-look-at-the-vsan-witness-appliance/
http://cormachogan.com/2015/09/14/step-by-step-deployment-of-the-vsan-witness-appliance/
In einem Stretched Cluster wird von der lokalen Seite gelesen und auf beiden Seiten geschrieben. Bei Ausfall einer Platte erfolgt:
Ein Ausfall deines Hosts entspricht dem Ausfall einer Disk, nur das wesentlich mehr Componenten betroffen sind HA startet die VMs neu und die Objekte werden neu auf Disks anderer Hosts synchronisiert.
Wenn auf einer Seite Netzwerkprobleme mit ein oder mehreren Hosts auftreten, werden folgende Aktionen durchgeführt:
Wenn eine komplette Seite ausfällt, gibt's folgende Reaktion:
Gibt es einen Netzausfall zwischen den Seiten, aber die Witness ist noch erreichbar, kommt zum ersten mal die “Preferred Site” zum Einsatz.
Wenn die Witness komplett ausfällt oder die Erreichbarkeit über Netz von der primären Seite und der sekundären Seite nicht mehr gegeben ist, hat dies erst einmal keinen direkten Einfluss auf das VSAN.
Was passiert:
Die Witness muss beide Seiten sehen, um in einen VSAN Cluster verbunden zu werden. Erst nach der Aussynchronisation kann eine Seite “fehlen”.
Wenn alle Hosts in einem VSAN Cluster untereinander isoliert sind, passiert folgends:
Wenn das Netz an allen Standorten noch funktioniert, aber zwischen den Standorten nichts mehr geht entsteht ei ähnliche Scenario wir “Alle Hosts sind isoliert”.
$ds = Get-Datastore vsanDatastore $sp = "thickProvisioned" $vms = Get-VM -Datastore $ds foreach ($vm in $vms) { $vm, (Get-HardDisk -VM $vm) | Set-SpbmEntityConfiguration -StoragePolicy $sp }
Um eine Diskgruppe zu löschen, muss die entsprechende Cachedisk gelöscht werden.
esxcli vsan storage remove --ssd=naa.xxxxxxx
esxcli system settings advanced set -o /Net/Vmxnet3HwLRO -i 0 esxcli system settings advanced set -o /Net/UseHwTSO -i 0 esxcli system settings advanced set -o /Net/UseHwTSO6 -i 0 esxcli system settings advanced set -o /Net/TcpipDefLROEnabled -i 0 esxcfg-advcfg -s 2047 /LSOM/heapSize esxcfg-advcfg -s 110000 /LSOM/diskIoTimeout esxcfg-advcfg -s 4 /LSOM/diskIoRetryFactor esxcfg-advcfg -s 512 /VSAN/DomClientheapsize esxcfg-advcfg -s 48 /LSOM/lsomLogCongestionHighLimitGB vsish get /vmkModules/vsan/dom/MaxNumResyncCopyInFlight Default: 50 vsish -e set /vmkModules/vsan/dom/MaxNumResyncCopyInFlight 25 esxcfg-advcfg -s 1 /VSAN/SwapThickProvisionDisabled Value of SwapThickProvisionDisabled is 1