RecreateLHC on multiple servers

MAJ : 04/03/2012
Version 1.1
Adding  64 bits compatibility

—————————————

In this post a small script which makes it possible to make of RecreateLhc on several waiters with a file of log, allowing to check each stage of RecreateLhc on each server.

Using Ctx_RecreateLHC.vbs :

  • Create in the folder where  is located Ctx_RecreateLHC.vbs a file named “servers.txt” and enter the name of the servers where will be recreated the LHC.
  • Double to click on Ctx_RecreateLHC.vbs
  • A file of log to format HTML will be created in the folder of execution of Ctx_RecreateLHC.vbs

The details of the actions of script is contained in the file log (stop service IMA and of its dépendences, checking of the size of the base LHC, dsmaint recreatelhc, checking of the size of base LHC (after RecreateLhc), starting of the dependences of service IMA and service IMA)

Le détails des actions du script est contenu dans le fichier log (arrêt service IMA et de ses dépendences, vérification de la taille de la base LHC, dsmaint recreatelhc, vérification de la taille de la base LHC (après RecreateLhc), démarrage des dépendances du service IMA et du service IMA)

This Script works on XenApp farms 5/6 under Windows 2003/2008 (32/64 bits).

The CTX759510 recommends on its side, to make a recreatelhc on all the servers member of a farm after a DSCHECK /clean (on our side we proceed by wave on servers).

If you must clean the farm data store, using the DSCHECK utility, you should then rebuild the LHC on each of the servers in your farm, once the data store has been cleaned.

Ctx_RecreateLHC.vbs

Post to Twitter

Erreur Dscheck : HostID xxxx has no corresponding MfServer node entry

Suite à un dscheck (dscheck /full servers) sur une de nos fermes (XenApp 5 R06 de 400 serveurs avec un DataStore sql 2005 sur Windows 2003 sp2 ), nous avons remarqué l’erreur suivante :

HostID  xxxx has no corresponding MfServer node entry

Après plusieurs dscheck /full servers /clean l’erreur était toujours présente.

Nous avons lancé un Dsview afin de voir si on pouvait résoudre le HostID 5C80 en cherchant dans la partie ServerNeighborhoods-VotreFerme-MFServers.

Comme nous n’avons rien trouvé dans la partie  ServerNeighborhoods-VotreFerme-MFServers, nous avons orienté notre recherche vers la partie ServerNeighborhoods-VotreFerme-HostIds.

Nous trouvons et remarquons que le HostId 5C80 a des liens avec d’autres HostId (au passage on ne l’a pas vu du premier coup 🙁 ).

 

Retour dans la partie ServerNeighborhoods-VotreFerme-MFServers, et là nous trouvons bien les hostId avec les Hostnames associés.

Après avoir sorti les 4 serveurs de la ferme (bien que ces serveurs ne présentaient visiblement aucun problème), la commande dscheck /full servers /clean a cette fois-ci bien supprimé le HostId récalcitrant (5C80 dans notre cas).
Une fois le Host Id supprimé nous avons pu ré-intégrer les quatres serveurs dans la ferme puis passer un dscheck /full servers qui n’a remonté aucune erreur 🙂 .

On vous passe les différentes étapes de troubleshooting, dsview (mais avec les yeux fermés les premières fois), tentative de lecture du DataStore (mais bon vu que la base n’est pas de type relationnelle on se savait mal parti), import du DS dans une batterie de test et suppression des objets,  etc..etc.. En bref un moumoutage en bonne et due forme 🙂 .

Post to Twitter

Envoi par mail d’un rapport DsCheck

Le script ci-dessous va vous permettre de recevoir par mail le résultat d’une commande DSCHECK au sein de votre ferme.

Il ne reste plus qu’à mettre le script dans une tâche planifiée 😉 .

#DsCheck report V1
$farm = Get-XAFarmConfiguration
$DsCheckReport =  &'C:\Program Files\Citrix\System32\dscheck.exe'

Foreach ($line in $DsCheckReport)
{
if($line -eq "") {} else {$DscheckLine += $line+"`n"}
}

$BodyReport += $DscheckLine
#Send mail "Report DsCheck"
$emailFrom = "DsCheckReport@yourDomain.fr"
$emailTo = "Your Adresse Email"
$subject = "DsCheck Report : "+$Farm
$body = $BodyReport
$smtpServer = "Your SMTP Server"
$smtp = new-object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($emailFrom, $emailTo, $subject, $body)


Le rapport reçu par mail

Post to Twitter