Concepts avancés

Équilibrage de charge du serveur d’impression universel Citrix dans XenApp et XenDesktop 7.9

Comment nous avons testé

Tous les scénarios de test ont été réalisés dans le monde réel et l’impression finale a été la seule composante simulée. Les systèmes de test comprenaient des machines virtuelles XenServer, Windows 2012R2 pour l’infrastructure (DDC, StoreFront et Universal Print Server) et des systèmes VDA XenApp, Windows 10 pour les systèmes VDA XenDesktop et Windows 8.1 pour ICA lancé via Citrix Receiver. Chaque lanceur ICA était connecté à 10 imprimantes sans chevauchement d’imprimantes entre les lanceurs ICA, et des scripts personnalisés ont été utilisés afin que chaque session VDA XenApp soit dotée d’une imprimante aléatoire à utiliser. Les scripts personnalisés contrôlaient également l’impression à l’intérieur de chaque session en utilisant AutoIt pour effectuer des actions d’impression identiques. Enfin, nous avons utilisé un outil développé en interne pour coordonner les lancements de session ICA et collecter des données perfmon pour les tests.

Taille de l’équilibrage de charge du serveur d’impression universel

Comme tous les autres composants de votre environnement, le dimensionnement est essentiel pour que l’équilibrage de charge Universal Print Server fonctionne de manière optimale. Puisque l’impression d’un document volumineux est subjective selon vos besoins, cet article se concentre principalement sur le taux d’impression et utilise ce que nous considérons comme un travail moyen.

Grâce à des tests internes, il a été constaté que vous ne voulez pas trop ou trop peu d’instances Universal Print Server configurées dans l’équilibrage de charge. Et bien qu’il soit vrai, vous pouvez augmenter l’impression avec des instances de serveur d’impression universel supplémentaires, lorsque vous parlez de distribution d’imprimantes, ce n’est pas nécessairement le cas. En particulier, est le cas où vous avez trop d’instances de serveur d’impression universel configurées. Dans ce cas, il y a une inclinaison définitive des utilisateurs vers les premières instances du serveur d’impression universel disponibles.

graphique indiquant le nombre d'utilisateurs par serveur d'impression

Le graphique fait référence à un scénario de test de 3 500 utilisateurs sur 48 serveurs XenApp utilisant 16 instances de serveur d’impression universel. Comme on peut le voir plus haut, les 8 premières instances Universal Print Server ont pris la majorité des connexions et il n’y avait pas de distribution uniforme des connexions. Ce scénario supposait également un faible taux d’impression dont nous discuterons plus tard.

Pour comprendre pourquoi cela se produit, nous devons examiner comment le mécanisme d’équilibrage de charge choisit une instance Universal Print Server. Disons que nous avons 16 instances Universal Print Server (numérotées 1-16) en équilibrage de charge et un seul serveur XenApp avec 10 utilisateurs maximum (un peu exagéré, mais vous verrez pourquoi). Supposons également que les instances du serveur d’impression universel équilibré de charge sont dans l’ordre numérique dans le serveur d’impression universel pour la stratégie d’équilibrage de charge.

Lorsqu’un utilisateur ouvre une session et crée une session (dans XenApp), l’instance Universal Print Server que l’utilisateur reçoit est aléatoire. Il peut s’agir de n’importe quelle instance Universal Print Server disponible et aucune préférence n’est donnée à aucun serveur. Dans cet exemple, disons qu’ils ont reçu le serveur 16 pour leurs connexions. Une fois que ce premier utilisateur est connecté et que sa création de session est terminée, un autre utilisateur se connecte. Cet utilisateur utilisera la première instance Universal Print Server dans la liste de la stratégie, dans ce cas le serveur 1. Un autre utilisateur se connecte et utilise maintenant le serveur 2. Poursuivre cette tendance fournira le chargement du serveur vu ci-dessous. Lorsque les 10 utilisateurs sont connectés, les instances 1 à 9 et 16 du serveur d’impression universel auront des connexions alors que les serveurs restants ne le font pas.

graphique représentant les utilisateurs par serveur d'impression universel

Nous ajoutons maintenant un serveur XenApp supplémentaire au mix, avec le même maximum de 10 utilisateurs. Ce serveur suit la même procédure que l’exemple précédent, à l’exception du fait que le premier utilisateur reçoit aléatoirement le serveur 4 au lieu du serveur 16. Dans ce cas, le même processus pour chaque connexion suivante se produit comme avant, sauf qu’il ignore sur le serveur 4 car il a une connexion établie actuellement. Dans ce cas, les serveurs 1-10 auront des connexions. Vous pouvez voir les utilisateurs supplémentaires en orange dans le graphique ci-dessous, et observer comment il équilibre.

graphique montrant comment les utilisateurs supplémentaires s'équilibrent sur les serveurs d'impression

Continuez à augmenter le nombre de serveurs et l’inclinaison qui se produit peut être clairement observée. En pratique, vous devez disposer d’une quantité d’hôtes XenApp équivalente ou multiple de vos instances Universal Print Server. Il est également conseillé de conserver le nombre de sessions utilisateur en tant que multiples des instances du serveur d’impression universel que vous prévoyez d’utiliser pour un chargement plus optimal. En regardant le scénario ci-dessus de ce point de vue, avec 2 serveurs XenApp et 16 instances Universal Print Server, nous voyons que notre charge utilisateur devrait être d’au moins 16 utilisateurs par serveur XenApp. Une autre façon d’examiner le même problème est que si nous ne prenons en charge que 10 utilisateurs par serveur XenApp, alors pas plus de 10 instances Universal Print Server sont nécessaires. Cela permettra d’assurer un chargement plus équilibré et d’utiliser plus efficacement les ressources disponibles.

Ce qui précède est un regard trop simpliste sur une configuration traitant de l’équilibrage strictement de la connexion utilisateur. Des configurations plus complexes avec beaucoup plus d’utilisateurs par serveur seraient la configuration probable observée. Avec l’augmentation du nombre d’utilisateurs, le taux d’impression mentionné précédemment joue un rôle plus important dans le dimensionnement du serveur d’impression universel. Nous vous recommandons d’utiliser la formule ci-dessous pour déterminer les instances de serveur d’impression universel requises pour votre environnement. Cela vous permettra de déterminer le nombre d’instances de serveur d’impression universel dont vous avez besoin pour l’équilibrage de charge en fonction de votre taux d’impression requis. Dans le but de simplifier le dimensionnement, cette formule peut être utilisée pour fournir des conseils pour une configuration plus idéale afin de fournir un taux d’impression requis. En général, vous serez le plus intéressé par la résolution pour N pour déterminer votre propre nombre de serveurs d’impression.

V\*P/N \< J

Où :

V = Nombre de VDA qui utilisent LB

P = Nombre moyen de travaux d’impression réseau actifs par minute par VDA

N = Nombre de serveurs d’impression équilibrés de charge

J = Nombre maximal de tâches par minute sur Universal Print Server

P peut être observé sur les VDA 7.8 et plus récents en regardant les compteurs perfmon Universal Print Client existants sur le VDA, plus précisément en surveillant la moyenne des tâches créées par minute compteur pour les imprimantes réseau pendant une journée de travail normale sur un VDA avec la stratégie Universal Print Server activée et le réseau mappées en sessions.

J doit être un nombre compris entre 50 et 100, en fonction des performances matérielles des serveurs d’impression et de la taille des documents à imprimer.

La formule ci-dessus est généralisée et dépend fortement des exigences de votre environnement. Il est important de bien comprendre les exigences d’impression de votre environnement avant d’implémenter l’équilibrage de charge Universal Print Server.

Tests 100 travaux par minute (JPM)

L’une des améliorations les plus importantes apportées au nouvel équilibrage de charge Universal Print Server est l’augmentation des tâches d’impression simultanées par minute. Le seuil de fréquence d’impression doublé de 100 tâches par minute permet désormais une densité encore plus grande sur une instance de serveur d’impression universel individuelle. La répartition entre plusieurs instances de serveur d’impression universel à charge équilibrée rend cette augmentation plus efficace. Voici la sortie perfmon du compteur Jobs Created per Minute (celui référencé dans la formule) qui se situe en moyenne à ~ 100 jobs par minute pour un cycle de test de 18 heures +.

graphique montrant les travaux créés par minute au cours d'un cycle de test de 18 heures

Randomisation VDI

La méthode d’équilibrage de charge utilisée dans un environnement VDI est une implémentation de la fonction de randomisation uniquement. Comme indiqué précédemment, le processus d’équilibrage de charge se produit uniquement sur le VDA, randomisant la première connexion, puis les connexions suivantes sont équilibrées sur la liste des instances Universal Print Server. Comme une implémentation VDI a un seul utilisateur par VDA, la fonction de randomisation est la seule qui s’applique.

Pour s’assurer que la randomisation fonctionne, un test XenDesktop 500 utilisateurs a été exécuté à l’aide de 16 instances Universal Print Server. Cela correspond à environ 31 sessions par instance Universal Print Server (dans un monde parfaitement équilibré de charge), ce qui permet de déterminer clairement l’efficacité de la randomisation. Voici les connexions d’imprimante créées à la suite de ce test. Il est facile d’observer que les connexions sont attribuées de façon aléatoire à une instance de serveur d’impression universel.

graphique indiquant le nombre de connexions d'imprimante créées pendant les tests

5000 tests utilisateur

XenApp est l’endroit où le plus grand avantage de l’équilibrage de charge Universal Print Server sera réalisé en raison de la densité des serveurs XenApp eux-mêmes. Afin de déterminer dans quelle mesure l’équilibrage de charge Universal Print Server évolue dans un environnement plus grand nombre d’utilisateurs, il a été décidé qu’un essai de 5 000 utilisateurs était suffisamment important pour vérifier l’équilibrage de charge.

graphique montrant comment 5 000 utilisateurs ont été équilibrés de charge entre les serveurs d'impression pendant les tests

Ce qui précède est le résultat du test utilisateur de 5 000, utilisant 48 serveurs XenApp avec 16 instances de serveur d’impression universel. Ce nombre d’utilisateurs correspond à environ 100 utilisateurs par serveur XenApp, ou environ 6,5 utilisateurs par instance de serveur d’impression universel par serveur XenApp. Les résultats montrent l’inclinaison qui a été identifiée plus tôt, car il ne s’agit pas d’un test conçu de façon optimale. En fin de compte, il s’agit d’une démonstration de la fonction d’équilibrage de charge.

Basculement sur incident de l’équilibrage de charge du serveur d’impression universel

Par défaut, une instance de serveur d’impression universel ne sera pas signalée comme ayant échoué pour les années 180s MINIMUM et peut prendre aussi longtemps que 360s pour être considérée comme ayant échoué. Ce délai d’expiration est important à comprendre car cela provoque le basculement ne se produit pas à l’instant d’une défaillance d’instance du serveur d’impression universel. Il sera temps pour l’instance du serveur d’impression universel de tenter de récupérer avant que le basculement ne se produise. Si un basculement plus immédiat est nécessaire, des modifications devront être apportées en fonction de vos besoins environnementaux. Ces modifications peuvent être effectuées via la stratégie Citrix, ainsi que par l’intermédiaire de deux clés de Registre.

Vous trouverez ci-dessous une démonstration du basculement en action. 2 304 utilisateurs sur 48 serveurs XenApp sur 16 instances de serveur d’impression universel ont été utilisés pour illustrer l’équilibrage de charge initial et le ou les basculements ultérieurs. Les valeurs ci-dessus ont été sélectionnées afin qu’il fonctionne à 3 utilisateurs par instance Universal Print Server par serveur XenApp, idéalement.

graphique montrant l'équilibrage de charge et le basculement sur incident

Toutes les instances Universal Print Server sont chargées également et tous les utilisateurs sont connectés. Les instances de serveur d’impression universel UpServer06 et UPServer11 sont soumises à un arrêt forcé (en raison de l’utilisation de PING pour déterminer l’état de disponibilité d’une instance de serveur d’impression universel) au niveau de l’hyperviseur afin qu’elles soient considérées comme ayant complètement échoué. Ci-dessous, les connexions serveur concernées sont mises en surbrillance orange. Ensuite, les connexions au serveur échouées en orange sont redistribuées aux instances du serveur d’impression universel restantes encore en place.

graphique montrant la distribution des connexions au serveur échouées

De nouvelles connexions sont ensuite établies avec les serveurs existants qui sont toujours disponibles. Ci-dessous, vous pouvez voir comment les connexions précédemment échouées sont redistribuées sur les serveurs existants.

graphique montrant la redistribution des connexions ayant échoué

Comme cela a été mentionné précédemment, la connexion existante n’équilibrent pas dynamiquement la charge. L’équilibrage de charge se produit uniquement lors de l’ouverture de session utilisateur. Par conséquent, lorsque les instances du serveur d’impression universel en échec redeviennent disponibles, aucun rééquilibrage ou retour arrière ne se produira. Cela peut être vu ci-dessous où les instances du serveur d’impression universel qui ont échoué sont remises en ligne, mais ne prennent aucune connexion existante.

graphique montrant la distribution des connexions lorsque les serveurs défaillants sont de nouveau en ligne

Pour illustrer que ces instances de serveur d’impression universel sont à nouveau disponibles et acceptent les connexions, il est nécessaire d’ouvrir une session d’utilisateurs supplémentaires ou de forcer une défaillance d’autres instances du serveur d’impression universel. Ci-dessous, les instances Universal Print Server UpServer08 et UpServer10 ont été soumises à une défaillance forcée et leurs connexions respectives sont surlignées en orange.

graphique montrant la distribution des serveurs défaillants

Avec l’échec, il peut être vu en conséquence que les connexions sont migrées vers d’autres serveurs. Dans ce cas, ils seront migrés vers les deux serveurs qui ont échoué précédemment, maintenant disponibles pour reprendre les connexions. Comme ces serveurs sont les moins chargés (pas de charge), ils prennent la majeure partie des connexions.

Ajout de plusieurs serveurs d’impression

Plusieurs instances de serveur d’impression universel peuvent être ajoutées à la stratégie d’équilibrage de charge de deux manières : via l’interface graphique de stratégie Citrix ou via les applets de commande PowerShell. L’interface graphique de stratégie Citrix est explicite dans son utilisation. Voici une méthode d’utilisation de PowerShell pour ajouter plus rapidement plusieurs instances de serveur d’impression universel à la stratégie d’équilibrage de charge.

  1. Add-PSSnapin Citrix.Common.GroupPolicy
  2. New-PSDrive –PSProvider CitrixGroupPolicy –Name Site –Root \ -Controller localhost
  3. Site CD : Ordinateur
  4. CD à la stratégie que vous souhaitez modifier (le nom de la stratégie qui contient votre stratégie UPSLB)
  5. CD Settings\ICA\Printing\UniversalPrintServer\LoadBalancedPrintServers
  6. Utiliser New-Item pour ajouter de nouvelles imprimantes à la liste

image montrant l'exécution du script PowerShell

Il y a cependant quelques mises en garde avec l’utilisation de cette méthode. Tout d’abord, assurez-vous que vous entrez les informations correctement. Vous pouvez ajouter manuellement quelques imprimantes à la stratégie et afficher la façon dont elles sont présentées via l’écran PowerShell pour vous assurer que vous les ajoutez correctement. Deuxièmement, puisque vous évitez l’interface utilisateur de stratégie, il n’y a pas de validation des serveurs d’impression effectuée.

Compteurs Universal Print Server

Comme mentionné dans la section de dimensionnement, il existe de nouveaux compteurs perfmon qui peuvent être utilisés pour déterminer les informations sur les conditions actuelles d’impression. Des compteurs uniques existent à la fois sur l’instance Universal Print Server et sur les systèmes XenApp/XenDesktop.

Les compteurs pertinents pour l’instance globale du serveur d’impression universel seront situés sur l’instance du serveur d’impression universel correspondant, tels que le compteur de tâches créées par minute précédemment mentionné (ces compteurs sont uniquement pour cette instance de serveur d’impression universel et ne sont pas cumulatifs sur plusieurs ). Des compteurs pertinents pour l’équilibrage de charge Universal Print Server existent sur chaque système XenApp/XenDesktop (l’équilibrage de charge se produit au niveau du VDA individuel), tels que le compteur Connexions actuelles.

Les compteurs spécifiques UPClient (composant VDA) peuvent être configurés pour capturer des données pour une instance Universal Print Server spécifique, toutes les instances Universal Print Server ou en tant que total pour toutes les instances Universal Print Server sur un VDA. Ces compteurs peuvent être vus directement via perfmon ou peuvent être scriptés via PowerShell. Les compteurs suivants seront disponibles sous la section Citrix Printing Load Balancing de perfmon. Ces compteurs peuvent également être sélectionnés en sélectionnant un total (_loadbalancers_total) pour le VDA ou en sélectionnant une instance de serveur d’impression universel (nom d’instance du serveur d’impression universel) disponible sur ce VDA spécifique.

Compteur de connexions d’imprimante actives : Performance\Citrix Printing Load Balancer (SELECTION)\Active Printer Connections

Compteur de connexions d’imprimante créées : Performance\Citrix Printing Load Balancer (SELECTION)\Created Printer Connections

Compteur de connexions d’imprimante supprimées : Performance\Citrix Printing Load Balancer (SELECTION)\Deleted Printer Connections

Comme il s’agit de compteurs perfmon standard, l’applet de commande Get-Counter intégrée à PowerShell peut être utilisée comme suit pour obtenir des informations à partir d’un VDA spécifique.

Get-Counter -Counter \\\\VDAName\\Citrix Printing Load Balancer(SELECTION)\\COUNTER

La commande ci-dessus récupère les informations COUNTER (Active/Created/Deleted Printer Connections) souhaitées à partir du VDAName souhaité (Nom, FQDN ou adresse IP du VDA) pour le SELECTION (nom de l’instance du serveur d’impression universel ou_loadbalancers_total). Cela fournira une liste complète de l’objet compteur.

image montrant la sortie de l'objet de compteur PowerShell

Si vous n’êtes concerné que par la valeur réelle, vous devrez diriger cette commande dans une autre commande pour récupérer la valeur cuite (ou simplement la valeur des connexions). Pour ce faire, nous allons ajouter cette commande à la fin de la précédente : | Foreach-Object {$_.CounterSamples.CookedValue [0]}

image montrant la valeur retournée uniquement

Environnement de test

L’environnement de test consistait en trois ensembles distincts de matériels regroupés exécutant XenServer 6.2 et 6.5. Il existait un seul pool XenServer 6.2 qui contenait les composants d’infrastructure Citrix (DDC, StoreFront, ICA Launchers, collection de métriques) et deux pools 6.5 contenant les instances Universal Print Server et les VDA de test RDS. Deux référentiels de stockage centralisés distincts ont été utilisés pour les tests (un pour chaque version de pool) et toutes les machines virtuelles de test y étaient situées. Tous les logiciels utilisés étaient les plus à jour au moment des essais effectués. Tous les essais ont été effectués avec les mêmes versions du conducteur et du conducteur pour s’assurer que les résultats sont uniformes. D’autres conducteurs ont été testés ; les résultats individuels varient en fonction du conducteur utilisé.

Serveurs physiques XenServer 6.2 (x10)

  • 2 x Intel Xeon E5620 à 2,40 GHz (4 cœurs HyperThreaded) — 16 processeurs
  • 64 Go de mémoire
  • Stockage NFS

Serveurs physiques XenServer 6.5 (x25)

  • 2 x Intel Xeon E5-2640 à 2,50 GHz (6 cœurs HyperThreaded) — 24 processeurs
  • 256 Go de mémoire
  • Stockage NFS

VM du serveur d’impression universel

  • 16 vCPU (16 socket x 1 core)
  • 16 Go de vRAM
  • 75 Go de stockage
  • Windows Server 2012 R2

RDS VM

  • 16 vCPU (16 socket x 1 core)
  • 16 Go de vRAM
  • 75 Go de stockage
  • Windows Server 2012 R2

VM du lanceur ICA

  • 2 vCPU (2 socket x 1 cœur)
  • 4 Go de vRAM
  • 60 Go de stockage
  • Windows 8.1 x64 Entreprise

Stratégies Citrix Universal Print Server

ICA\Impression

  • Préférence du pilote universel : XPS ; EMF ; PCL5c ; PCL4 ; PS
  • Utilisation du pilote d’impression universel — Utiliser l’impression universelle uniquement
  • Serveur d’impression universel activé — Activé sans repli sur l’impression à distance native de Windows
  • Attendez la création des imprimantes — Activé
  • Serveurs d’impression universels pour l’équilibrage de charge — Liste des serveurs d’impression

Universal Print Server et les machines virtuelles RDS/VDA ont été conservées dans les mêmes serveurs physiques groupés matériels afin de s’assurer que les tests étaient effectués sur des configurations matérielles cohérentes. Les serveurs DDC et StoreFront n’ont pas été inclus dans ce qui précède car ils n’ont pas d’impact sur l’équilibrage de charge du serveur d’impression universel, à l’exception de la propagation des stratégies à partir du DDC. Des stratégies minimales ont été utilisées dans le domaine, et le site XenDesktop/XenApp était une installation par défaut avec des stratégies par défaut, à l’exception des stratégies Universal Print Server et Load Balancing mentionnées ci-dessus.

Équilibrage de charge du serveur d’impression universel Citrix dans XenApp et XenDesktop 7.9