Architecture NUMA avec vSphere

L’architecture NUMA est sans doute un des concepts que j’ai le plus souvent expliquer à mes clients, j’ai donc décidé d’en faire maintenant un article pour pouvoir y référer directement .

Comment fonctionne le scheduler NUMA d’un ESXi ?

Architecture NUMA d’un serveur ESXi avec 2 sockets de 4 cores

A la mise sous tension d’une VM, le scheduler NUMA assigne la VM à un nœud. Lorsque de la mémoire est allouée à cette VM, l’ESXi l’alloue depuis ce même nœud pour optimiser les performances d’accès.

Lorsque la VM est assignée à un nœud, le scheduler peut la déplacée sur un autre nœud si des contentions sont détectées.

Le client NUMA

L’ESXi groupe les vCPUs et la mémoire dans des unités logiques appelées « clients NUMA ».

C’est donc le client NUMA qui est ensuite placé dans un nœud. Lorsqu’une VM présente des caractéristiques CPU et mémoire inférieures ou égales à la taille d’un nœud NUMA, alors la VM est égale à un client.

Et les Monster VMs ?

Dans le cas où une VM possède plus de vCPUs que le nombre de cœurs dans un nœud NUMA, elle est alors découpée en plusieurs clients NUMA qui seront répartis entre les différents nœuds. On parle alors de « Wide VM »

Prenons le cas d’une VM avec 10 vCPUs, sur un ESXi avec 2 sockets de 8 cœurs chacun (l’hyperthreading n’est pas pris en compte, seuls les cœurs physique servent à déterminer les clients NUMA). La VM va être automatiquement découpée en 2 clients NUMA de 5 vCPU chacun.

Concernant les vSockets, la recommandation de VMware est de toujours laisser le paramètre de Coeur/Socket = 1, ainsi la construction des clients NUMA est facilité pour vSphere.

Si toutefois, pour des raisons de licensing principalement, le nombre de sockets est un problème, il faut bien veiller à respecter l’architecture physique des noeudes NUMA dans le dimensionnement.

Depuis l’exemple ci dessus, si je souhaite passer à seulement deux sockets, il faudra spécifier un nombre de 5 coeurs/sockets pour arriver à ceci :

Considérations mémoire

Seuls les vCPUs comptent dans la création automatique des clients NUMA, que se passe t-il si mo client NUMA à plus de mémoire que son nœud ?

Et bien la VM sera obligée d’accéder à la mémoire d’un autre nœud du même serveur en utilisant « Remote Memory Access« 

Pour des applications à forte utilisation de la mémoire, la latence induite par ce mécanisme peut devenir problématique, il faut alors forcer la construction des clients NUMA pour correspondre à l’architecture physique, pour cela il faut éditer directement le fichier .vmx de la VM et définir le paramètre numa.vcpu.maxPerMachineNode

Dans l’exemple ci-dessus, il convient de créer 2 clients NUMA de chacun 96GB de mémoire , pour cela, on force la répartition des 8 vCPUs en 2 sockets de 4 coeurs : numa.vcpu.maxPerMachineNode = 4

VMware Cloud Foundation 4.2.0 – Part 4 / Le déploiement

La VM Cloud Builder est prête : VMware Cloud Foundation 4.2.0 – Part 1 / Cloud Builder

Les ESXi sont prêts : VMware Cloud Foundation 4.2.0 – Part 2 / Les ESXi

Le fichier de collecte est complété : VMware Cloud Foundation 4.2.0 – Part 3 / La collecte d’informations

C’est le moment de passer aux choses sérieuses, on accède à l’interface web de notre cloud builder

Une fois authentifié, on accepte l’EULA

Puis on sélectionne le type de déploiement

On passe à nouveau en revue les prérequis, on coche la case, et Next

Ici, pas besoin de cliquer sur Download, nous avons déjà rempli le fichier, Next

Next à nouveau

On upload notre fichier de collecte en cliquant sur Select File, puis Next

La validation du fichier prend quelques minutes, le builder va se connecter aux ESXi et faire différents tests, notamment de connectivité

Si des warnings ou erreurs sont remontées, il faut les corriger avant de continuer (on peut voir sur la capture que je m’y suis repris à plusieurs fois, souvent des problèmes de synchronisation du temps entre Cloud Builder et les ESXi, mais également la version des ESXi qui doit correspondre à celle attendue, ici 7.0.1-17551050.

Une fois que tout est ok, Next

Puis Deploy SDDC

Et c’est parti pour environ 3 ou 4H de déploiement automatisé !

Pour suivre d’un peu plus près les actions, et pouvoir troubleshooter les éventuels problèmes, ca se passe sur la VM Cloud Builder dans le fichier de log suivant : /var/log/vmware/vcf/bringup/vcf-bringup.log

Nous voilà donc, 4H plus tard, le déploiement est terminé, on clique sur Finish

La dernière fenêtre apparait alors, nous permettant d’accéder au SDDC Manager

On notera le recommandation pour l’installation de Skyline, qui, au passage, est vraiment génial !

C’est tout pour cette série consacrée à l’installation complète de VCF 4.2, on a pu voir que le produit est plutôt simple à mettre en œuvre, les prérequis sont parfaitement documentés et le fichier de collecte d’informations très simple à remplir.

VMware Cloud Foundation 4.2.0 – Part 3 / La collecte d’informations

La VM Cloud Builder est prête (VMware Cloud Foundation 4.2.0 – Part 1 / Cloud Builder), nos ESXi sont configurés (VMware Cloud Foundation 4.2.0 – Part 2 / Les ESXi), passons au remplissage du fichier Excel de collecte d’informations vcf-ems-deployment-parameter.xlsx

Allez, on commence par l’onglet « Management Workloads« , où l’on va renseigner nos différentes clés de licences pour chaque produit en colonne F

Juste en dessous, on remplit les case en surbrillances concernant la configuration matérielle de nos ESXi

Changement d’onglet, on va renseigner les mots de passe des différents composants de la plateforme dans « Users and Groups« 

Attention aux exigences de complexité qui ne sont pas toujours les mêmes d’un composant à l’autre !

Passons à l’onglet « Hosts and Networks« 

On commence par renseigner les réseaux qui serviront à la création des portgroups sur notre vDS

Juste en dessous, c’est justement le vDS

Trois profils de vDS sont disponibles :

Je vais utiliser le Profile-1 , le plus simple et qui couvre la majorité des cas de figures.

Viens ensuite l’adressage des ESXi, réseau de gestion, vMotion et vSAN

Nous allons maintenant utiliser les informations collectées lors de VMware Cloud Foundation 4.2.0 – Part 2 / Les ESXi, à savoir les empreintes SHA256 des clés SSH et Certificats SSL

Pour le réseau d’overlay des hosts (les TEPs), j’utilise un DHCP sur le VLAN 1001, je sélectionne donc « No » pour le Static IP Pool

Onglet « Deploy Parameters« , on renseigne ici tous les paramètres de personnalisation de notre SDDC.

On termine en passant en revue la checklist du premier onglet « Prerequisite Checklist« , en passant le statut à « Verified » au fur et à mesure.

Concernant les entrées DNS nécessaires, voici le récap pour notre cas (attention à ne pas oublier de créer également les entrées PTR) :

SDDC Managernth-vcf01.virtuoz.lab172.16.0.9
vCenternth-vc01.virtuoz.lab172.16.0.10
ESXi 1vesxi-nth04.virtuoz.lab172.16.0.14
ESXi 2vesxi-nth05.virtuoz.lab172.16.0.15
ESXi 3vesxi-nth06.virtuoz.lab172.16.0.16
ESXi 4vesxi-nth07.virtuoz.lab172.16.0.17
NSX-T Manager VIPnth-nsx01 .virtuoz.lab172.16.0.20
NSX-T Manager anth-nsx01a.virtuoz.lab172.16.0.21
NSX-T Manager bnth-nsx01b.virtuoz.lab172.16.0.22
NSX-T Manager cnth-nsx01c.virtuoz.lab172.16.0.23
Edge Node 1nth-en01.virtuoz.lab172.16.0.24
Edge Node 2nth-en02.virtuoz.lab172.16.0.25

Il ne nous reste plus qu’a soumettre ce fichier à Cloud Builder déployé lors de VMware Cloud Foundation 4.2.0 – Part 1 / Cloud Builder

VMware Cloud Foundation 4.2.0 – Part 2 / Les ESXi

La préparation des ESXi est plutôt simple et rapide. Une configuration de base est requise sur l’ensemble des nœuds pour être conformes aux attentes de VCF.

J’ai donc 4 ESXi, « fresh installed », que nous allons maintenant raccorder et configurer comme suit :

Il est important de noter que seul le port vmnic0 doit être configuré en tant qu’uplink de vSwitch0, cependant vmnic1 doit bien être raccordé au réseau avec les mêmes paramètres de VLAN que vmnic0.

On accède à DCUI sur le premier ESXi.

F2 pour accéder aux paramètres

On accède ensuite à Configure Management Network > Network Adapters pour confirmer que seul vmnic0 est utilisé, autrement on décoche simplement les cases devant les autres cartes avant de valider.

Si besoin, on configure le VLAN, dans mon cas, c’est le VLAN 1000.

Attention, le portgroup de Management et celui des VM Networks doivent êtres sur le même VLAN pour le déploiement avec VCF.

On poursuit avec les paramètres IP et DNS.

Il faut bien faire attention à spécifier le FQDN, cette information est importante pour plus tard avec la génération de certificat SSL de l’hôte.

On termine avec suffixe DNS

Enfin, <ECHAP>, on applique et redémarré le réseau de gestion.

On active maintenant le SSH dans les options de Troubleshooting

<ENTREE> pour activer, puis <ECHAP>

On peut désormais passer au shell ESXi pour régénérer les bons certificats, configurer le VLAN de VM Network le cas échéant.

ALT+F1 depuis l’écran DCUI.

[root@vesxi-nth04:~] /bin/generate-certificates
[root@vesxi-nth04:~] esxcli network vswitch standard portgroup set -v 1000 -p "VM Network"
[root@vesxi-nth04:~] reboot

Enfin, on accède à l’interface web de l’ESXi pour vérifier notre certificat SSL et configurer le service NTP

Tout va bien, le certificat comporte bien le FQDN de notre ESXi.

Dans Gérer > Système > Date et Heure > Modifier les paramètres NTP

La stratégie de démarrage est défini sur « Démarrer et arrêter avec l’hôte »

On démarre le service NTP dans Gérer > Services

Nous allons maintenant collecter quelques informations qui nous serviront à l’étape suivante de collecte d’informations.

Pour cela, on se connecte à l’ESXi en ssh, et on récupère l’empreinte du certificat SSL en SHA256

[root@vesxi-nth04:~] openssl x509 -in /etc/vmware/ssl/rui.crt -fingerprint -sha256 -noout
SHA256 Fingerprint=C4:2A:E2:A1:53:20:D3:83:FA:37:BE:14:3C:49:C6:8A:C4:F0:FA:0A:49:D3:4C:83:F5:C4:E2:C2:F7:29:A4:6E

On lance DCUI depuis le shell

[root@vesxi-nth04:~] dcui

F2 pour accéder aux paramètres, puis View Suppport Information

Ici, on récupère l’empreinte de la clé SSH RSA (y compris le début de la chaine SHA256:).

C’est terminé pour le premier ESXi, il ne reste plus qu’a répéter l’opération pour les suivant.

Prochaine étape, le remplissage du fichier de collecte d’informations, VMware Cloud Foundation 4.2.0 – Part 3 / La collecte d’informations

VMware Cloud Builder Reset DB

Il se peut que lors d’un déploiement VCF bring-up rencontre une erreur, il devient alors impossible de relancer le déploiement.

Heureusement il suffit de réinitialiser 2 tables de la base de données.

On se connecte en SSH sur l’appliance, puis, en fonction de la version de VCF.

VCF 3.7

sudo psql -U postgres -d bringup -h /home/postgresql/
delete from execution;
delete from "Resource";
\q

VCF 3.8 and later

sudo psql -U postgres -d bringup -h localhost
delete from execution;
delete from "Resource";
\q

https://kb.vmware.com/s/article/75172

VMware Cloud Foundation 4.2.0 – Part 1 / Cloud Builder

La première étape de notre déploiement VCF consiste à mettre en route l’appliance virtuelle Cloud Builder.

Il s’agit d’une appliance tout en un, qui va piloter intégralement le déploiement VCF.

L’appliance pèse son poids, en effet, elle intègre tout ce qu’il faut pour notre SDDC (vCenter, NSX, SDDC Manager …)

On en profite pour récupérer le fichier XLS de collecte d’informations qui correspond à notre déploiement (dans notre cas, ce n’est pas du VxRail)

La mise en place de l’OVA est tout à fait classique, on renseigne les paramètres habituels d’authentification et de mise en réseau.

Bien sur, Cloud Builder doit se trouver sur un réseau à partir duquel il pourra communiquer avec les futurs ESXi à configurer.
Les paramètres de DNS et NTP sont important et doivent bien correspondre aux réglages des ESXi

On patiente sagement pendant le déploiement de l’OVA en buvant un délicieux moka d’Ethiopie.

Quelques minutes plus tard le Cloud Builder est prêt, on peut démarrer la VM.

C’est maintenant l’heure de préparer nos ESXi : VMware Cloud Foundation 4.2.0 – Part 2 / Les ESXi