Office Servers and Services

"La connaissance ne vaut que si elle est partagée" / "An effective Knowledge is a shared one"

Exchange + DSC = xExchange partie 3

Posted by Anthony Costeseque sur janvier 8, 2016


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

Laisser un commentaire

Choisissez une méthode de connexion pour poster votre commentaire:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s

 
%d blogueurs aiment cette page :