Bonjour à tous,
On attaque maintenant le dur :p
Nous allons automatiser le déploiement de JetStress avec le Module DSC xExchange et plus particulièrement les ressources : xExchJetstress & xExchJetstressCleanup
Les étapes seront :
Configuration du LCM (Local Configuration Manager) des serveurs cibles (Exchange)
Installation / Exécution de JetStress
Désinstallation de JetStress
Nous allons donc générer les fichiers de configuration (.MOF) en séparant la partie « générique » du script de la partie « données (config) », cela va permettre de gérer plusieurs environnements différents (lab / prod par exemple) en exécutant les mêmes opérations avec des données différentes.
La partie générique sera en .ps1 et la partie données (config) sera en .psd1
Dans notre exemple nous allons travailler sur un environnement de lab en Push model avec :
1 DAG de 4 serveurs avec 4 copies par DB
1 DB disk + 1 Spare disk
Configuration du LCM (Local Configuration Manager) des serveurs cibles (Exchange)
Cette configuration va nous permettre de mettre en place la sécurisation des credential avec le certificat généré dans la partie 2
Nous allons commencer par le fichier de « données (config) », le fichier s’appellera ExchangeSettings-Lab.psd1
Disponible ici : https://onedrive.live.com/redir?resid=2BAAD2DFF0402075!231975&authkey=!ABZMgWQJmJJg5hs&ithint=folder%2c
Le fichier de données (config) définit une table qui contient la déclaration de nos serveurs cibles avec :
Une partie commune à tous les serveurs cibles : la partie AllNodes / NodeName = ‘*’
Une partie spécifique à chaque serveur cible : la partie AllNodes / NodeName = ‘Nom de la Cible’
Donc ici nous avec les informations liées au certificat utilisé ainsi que pour la suite la configuration pour les DB sur les disques des serveurs cibles et pour finir l’emplacement du binaire d’installation de JetStress
Puis le fichier script générique qui s’appellera ConfigureLCMForDeployment.ps1
Le fichier de script qui va générer le fichier de configuration est constitué de 3 parties
Le block de « configuration » (qui est équivalent à une fonction PowerShell)
Avec à l’intérieur les blocks de configuration des serveurs cibles
Qui définissent les blocks de ressources DSC à utiliser
Donc ici le script contient le block de configuration qui s’appelle « ConfigureLCMForDeployment » avec un block de configuration de Node qui définit la ressource LocalConfigurationManager avec la configuration de 3 propriétés
2 variables seront récupérées dans le fichier de données (config) $Node.Thumbprint et $AllNodes.NodeName
Maintenant que tout est prêt nous allons générer nos fichiers de configurations (.MOF)
Ici dans l’ISE
Pour ceux qui veulent le faire dans PowerShell
cd C:\DSC\Configurations\1-ConfigureLCMForDeployment
.\ConfigureLCMForDeployment.ps1
Le résultat est la génération de 4 fichiers meta.mof (1 par serveur cible définit dans le fichier de données (config))
Maintenant nous pouvons pousser la configuration sur les cibles
Get-DscLocalConfigurationManager -CimSession AC-01-EXCH-01
Ici on voit bien que le CertificateID n’est pas configuré
Set-DscLocalConfigurationManager -Path . -Verbose -ComputerName AC-01-EXCH-01
La configuration c’est bien deroulée nous pouvons l’appliquer à tous les serveurs cibles
Set-DscLocalConfigurationManager -Path . -Verbose -ComputerName AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04
Get-DscLocalConfigurationManager -CimSession AC-01-EXCH-01,AC-01-EXCH-02,AC-01-EXCH-03,AC-01-EXCH-04 | fl PSComputerName,CertificateID
Tous les serveurs sont bien configurés
Passons à l’Installation / Exécution de JetStress
Nous allons préparer notre repository de fichiers sur notre serveur « FileServerBase »
Les fichiers pour Jetstress à placer dans le répertoire « ESEDlls » sont à récupérer sur l’extract de l’install d’Exchange (dans mon exemple le CU 11 d’Exchange 2013 (Exchange2013-x64-cu11.exe))
https://www.microsoft.com/en-us/download/details.aspx?id=50366
setup\serverroles\common\ese.dll
setup\serverroles\common\perf\amd64\eseperf.dll
setup\serverroles\common\perf\amd64\eseperf.hxx
setup\serverroles\common\perf\amd64\eseperf.ini
setup\serverroles\common\perf\amd64\eseperf.xml
Le fichier de configuration JetstressConfig.xml
Et pour finir le binaire d’install 😉 (ici en v15.01.0318.000)
https://www.microsoft.com/en-us/download/details.aspx?id=36849
Tout est disponible ici : https://onedrive.live.com/redir?resid=2BAAD2DFF0402075!231985&authkey=!ABZMgWQJmJJg5hs&ithint=folder%2c
On partage notre repository et on le sécurise en donnant l’accès qu’au groupe d’utilisateurs que l’on souhaite (l’accès au share se fera au travers de credential fournis lors de la compilation de la configuration (dans la variable $FileCopyCreds))
Et maintenant le script générique (la partie données (config) reste la même que pour le LCM)
Ici ça à l’air un peu plus complexe 😉 mais c’est très simple !
Le script contient le block de configuration qui s’appelle « InstallAndRunJetstress » avec un block de configuration de Node qui définit 6 ressources avec la configuration de X propriétés pour chacune
On utilise ici la Ressource DSC xExchange d’où l’import initial « Import-DscResource -Module xExchange » c’est pour les définitions de xExchAutoMountPoint et xExchJetstress
Pour les autres Ressources DSC il n’y pas d’import car ce sont les natives
Au départ on va configurer les points de montages (avec la ressource xExchAutoMountPoint) sur des disques vierges non initialisés (dans mon exemple, chaque serveur Exchange a 2 disques de 4To non initialisés (1 disque qui va contenir 4 DBs+Logs et 1 disque de Spare pour AutoReseed))
Puis on va copier et installer JetStress, copier les fichiers du répertoire ESEDlls ainsi que le fichier de config xml
Pour finalement lancer JetStress à l’aide de la ressource xExchJetstress (dans mon exemple, un reboot aura été nécessaire pour y parvenir)
On génère les fichiers de configurations, puis on déploie
Exemple avec le serveur 2
Start-DscConfiguration -Path . -Verbose -Wait -ComputerName AC-01-EXCH-02
Après le reboot (automatique) JetStress va se lancer (à travers une tache planifiée)
Les 4 DB / Logs seront créés sur notre volume JetStress tourne
Le résultat sera disponible dans
C:\Program Files\Exchange Jetstress\Performance_XXXXX.html
Le test est OK pour notre serveur 2 (bon c’était un lab sur du SDD, mais sur la prod on aura des disques NL-SAS qui ne dépasseront pas 100 IOPs objectif à ateindre)
Et pour finir la désinstallation de JetStress
Start-DscConfiguration -Path . -Verbose -Wait -ComputerName AC-01-EXCH-02 -Force
Et voilà pour cette 3eme partie 🙂
Bonne lecture
Anthony Costeseque