Conceptos avanzados

Equilibrio de carga de Citrix Universal Print Server en XenApp y XenDesktop 7.9

Cómo realizamos las pruebas

Todos los casos de prueba se realizaron en el mundo real y la impresión final fue el único componente simulado. Los sistemas de prueba consistían en máquinas virtuales de XenServer; Windows 2012R2 para infraestructura (DDC, StoreFront y Universal Print Server) y sistemas VDA de XenApp, Windows 10 para sistemas VDA de XenDesktop; y Windows 8.1 para ICA a través de Citrix Receiver. Cada iniciador ICA se conectaba a 10 impresoras sin superposición de impresoras entre los lanzadores ICA y se utilizaban scripts personalizados para que cada sesión de XenApp VDA se proporcionara una impresora aleatoria para usar. Los scripts personalizados también controlaban la impresión dentro de cada sesión mediante AutoIt para realizar acciones de impresión idénticas. Finalmente, se utilizó una herramienta desarrollada internamente para coordinar los lanzamientos de sesión ICA y recopilar datos de perfmon para las pruebas.

Tamaño de equilibrio de carga del servidor de impresión universal

Al igual que cualquier otro componente de su entorno, el dimensionamiento es de vital importancia para que el equilibrio de carga de Universal Print Server funcione de manera óptima. Dado que la impresión de un documento grande es subjetiva en función de sus necesidades, este artículo se centra principalmente en la tasa de impresión y utilizar lo que consideramos un trabajo promedio.

A través de las pruebas internas se ha encontrado que no quiere configurar demasiadas o pocas instancias de Universal Print Server en el equilibrio de carga. Y si bien es cierto que puede aumentar la impresión con instancias adicionales de Universal Print Server, cuando se habla de distribución de impresoras que no es necesariamente el caso. En particular, es el caso en el que tiene demasiadas instancias de Universal Print Server configuradas. En este caso, existe un sesgo definitivo de los usuarios a las primeras instancias de Universal Print Server disponibles.

gráfico que muestra el número de usuarios por servidor de impresión

El gráfico hace referencia a un caso de prueba de 3.500 usuarios en 48 servidores XenApp que utilizan 16 instancias de Universal Print Server. Como se puede ver anteriormente, las primeras 8 instancias de Universal Print Server tomaron la mayoría de las conexiones y no hubo una distribución uniforme de las conexiones. Este caso también supuso una baja tasa de impresión que se discutirá más adelante.

Para entender por qué ocurre esto, tenemos que ver cómo el mecanismo de equilibrio de carga elige una instancia de Universal Print Server. Digamos que tenemos 16 instancias de Universal Print Server (numeradas 1-16) en equilibrio de carga y un único servidor XenApp con un máximo de 10 usuarios (un poco exagerado, pero verá por qué). Supongamos también que las instancias de Universal Print Server con equilibrio de carga están en orden numérico en Universal Print Server para la directiva de equilibrio de carga.

Cuando un usuario inicia sesión y crea una sesión (en XenApp), la instancia de Universal Print Server que recibe el usuario es aleatoria. Podría ser cualquier instancia de Universal Print Server que esté disponible y no se dé preferencia a ningún servidor. En este ejemplo, digamos que recibieron el servidor 16 para sus conexiones. Después de que el primer usuario haya iniciado sesión y su creación de sesión haya finalizado, otro usuario inicia sesión. Este usuario utilizará la primera instancia de Universal Print Server de la lista de la directiva, en este caso el servidor 1. Otro usuario inicia sesión y ahora está utilizando el servidor 2. Continuar con esa tendencia proporcionará la carga del servidor que se muestra a continuación. Cuando los 10 usuarios han iniciado sesión, las instancias 1-9 y 16 de Universal Print Server tendrán conexiones, mientras que los servidores restantes no.

gráfico que representa usuarios por servidor de impresión universal

Ahora agregamos un servidor XenApp adicional a la mezcla, con el mismo máximo de 10 usuarios. Este servidor sigue el mismo procedimiento que el ejemplo anterior, con la excepción de que el primer usuario recibe aleatoriamente el servidor 4 en lugar del servidor 16. En este caso, el mismo proceso para cada inicio de sesión posterior se produce como antes, excepto que se salta sobre el servidor 4 ya que tiene una conexión realizada actualmente. En este caso, los servidores 1-10 tendrán conexiones. Puede ver los usuarios adicionales en naranja en el siguiente gráfico, y observar cómo se equilibra.

gráfico que muestra cómo los usuarios adicionales se equilibran con respecto a los servidores de impresión

Continúe aumentando el número de servidores y se puede observar claramente la inclinación que se produce. En la práctica, debe tener una cantidad de hosts XenApp equivalente o múltiple de las instancias de Universal Print Server. También es una buena idea mantener los recuentos de sesiones de usuario como múltiplos de las instancias de Universal Print Server que planea utilizar para una carga más óptima. Mirando el caso anterior desde este punto de vista, con 2 servidores XenApp y 16 instancias de Universal Print Server, vemos que nuestra carga de usuario debe ser de un mínimo de 16 usuarios por servidor XenApp. Otra forma de ver el mismo problema es que si solo se admiten 10 usuarios por servidor XenApp, no se requieren más de 10 instancias de Universal Print Server. Esto permitirá una carga más equilibrada y utilizará de manera más eficaz los recursos disponibles.

Lo anterior es una mirada demasiado simplista a una configuración que trata estrictamente con el equilibrio de conexión del usuario. Configuraciones más complejas con muchos más usuarios por servidor sería la configuración probable que se viera. Con el aumento de usuarios, la velocidad de impresión que se mencionó anteriormente juega un papel más importante en el tamaño de Universal Print Server. Se recomienda utilizar la fórmula siguiente para determinar las instancias de Universal Print Server necesarias para su entorno. Esto le permitirá determinar el número de instancias de Universal Print Server que necesita en el equilibrio de carga basándose en la velocidad de impresión requerida. Con el fin de ayudar a simplificar el tamaño, esta fórmula se puede utilizar para proporcionar una configuración más ideal para proporcionar una velocidad de impresión requerida. En general, usted estará más interesado en resolver para N para determinar su propio recuento de servidores de impresión.

V\*P/N \< J

Donde:

V = Número de VDA que utilizan LB

P = Número medio de trabajos de impresión de red activos por minuto por VDA

N = Número de servidores de impresión con equilibrio de carga

J = Número máximo de trabajos por minuto en Universal Print Server

P se puede observar en los VDA 7.8 y más recientes mirando los contadores de perfmon de Universal Print Client existentes en el VDA, más específicamente supervisando el promedio de los trabajos Creados por minuto contador para impresoras de red durante un día laboral normal en un VDA que tiene habilitada la directiva Universal Print Server y la red asignadas a sesiones.

J debe ser un número entre 50 y 100, dependiendo del rendimiento del hardware de los servidores de impresión y del tamaño de los documentos que se van a imprimir.

La fórmula anterior es generalizada y depende en gran medida de los requisitos de su entorno. Es importante comprender completamente los requisitos de impresión de su entorno antes de implementar el equilibrio de carga de Universal Print Server.

Pruebas de 100 trabajos por minuto (JPM)

Una de las mejoras más importantes que viene con el nuevo equilibrio de carga de Universal Print Server es el aumento de los trabajos de impresión simultáneos por minuto. El umbral de velocidad de impresión duplicado de 100 trabajos por minuto permite ahora una densidad aún mayor en una instancia individual de Universal Print Server. La distribución a través de múltiples instancias de Universal Print Server equilibradas de carga hace que este aumento múltiplos sea más impactante. A continuación se muestra la salida de rendimiento del contador Trabajos creados por minuto (el que se hace referencia en la fórmula) con un promedio de ~ 100 trabajos por minuto durante un ciclo de prueba de más de 18 horas.

gráfico que muestra los trabajos creados por minuto durante un ciclo de pruebas de 18 horas

aleatorización VDI

El método de equilibrio de carga utilizado en un entorno VDI es una implementación de la función de aleatorización solamente. Como se ha dicho anteriormente, el proceso de equilibrio de carga se produce únicamente en el VDA, aleatorizando la primera conexión y, a continuación, los inicios de sesión posteriores se equilibran la carga en toda la lista de instancias de Universal Print Server. Dado que una implementación de VDI tiene un único usuario por VDA, la función de aleatorización es la única que se aplica.

Para garantizar que la aleatorización funcione, se llevó a cabo una prueba de XenDesktop de 500 usuarios con 16 instancias de Universal Print Server. Esto funciona en aproximadamente 31 sesiones por instancia de Universal Print Server (en un mundo perfectamente equilibrado de carga), lo que permite una determinación clara de la efectividad de la aleatorización. A continuación se muestran las conexiones de impresora creadas como resultado de esta prueba. Se puede observar fácilmente que las conexiones se asignan aleatoriamente a una instancia de Universal Print Server.

gráfico que muestra el número de conexiones de impresora creadas durante la prueba

5000 pruebas de usuario

XenApp es donde se obtendrá el mayor beneficio del equilibrio de carga de Universal Print Server debido a la densidad de los propios servidores XenApp. Para determinar qué tan bien escala el equilibrio de carga de Universal Print Server en un entorno de recuento de usuarios más grande, se decidió que una ejecución de prueba de 5000 usuarios era suficientemente grande para verificar el equilibrio de carga.

gráfico que muestra el equilibrio de carga de 5000 usuarios en los servidores de impresión durante las pruebas

Lo anterior es el resultado de la prueba de 5000 usuarios, que utiliza 48 servidores XenApp con 16 instancias de Universal Print Server. Este recuento de usuarios funciona para aproximadamente 100 usuarios por servidor XenApp, o aproximadamente 6,5 usuarios por instancia de Universal Print Server por servidor XenApp. Los resultados muestran el sesgo que se identificó anteriormente, ya que esta no es una prueba diseñada de manera óptima. En última instancia, se pretende que sea una demostración de la función de equilibrio de carga.

conmutación por error de equilibrio de carga de Universal Print Server

De forma predeterminada, una instancia de Universal Print Server no se reportará como un error durante 180 s MÍNIMO, y puede tardar hasta 360 en considerarse un error. Este tiempo de espera es importante entender, ya que esto hace que la conmutación por error no ocurra el instante en que se produce un error de instancia de Universal Print Server. Habrá tiempo para que la instancia de Universal Print Server intente recuperarse antes de que se produzca la conmutación por error. Si se requiere una conmutación por error más inmediata, habrá que realizar modificaciones en función de sus necesidades ambientales. Estas modificaciones se pueden realizar a través de Citrix Policy y también a través de dos claves del Registro.

A continuación se muestra una demostración de la conmutación por error en acción. Se utilizaron 2.304 usuarios de 48 servidores XenApp en 16 instancias de Universal Print Server para ilustrar el equilibrio de carga inicial y los failover posteriores. Los valores anteriores se seleccionaron para que funcionara a 3 usuarios por instancia de Universal Print Server por servidor XenApp, idealmente.

gráfico que muestra el equilibrio de carga y la conmutación por error

Todas las instancias de Universal Print Server están igualmente cargadas y todos los usuarios han iniciado sesión. Las instancias de Universal Print Server UPServer06 y UPServer11 están sujetas a un apagado forzado (debido a que se utiliza PING para determinar el estado de disponibilidad de una instancia de Universal Print Server) en el nivel del hipervisor para que se vean como un error completo. A continuación, las conexiones del servidor afectadas se resaltan en naranja. A continuación, las conexiones de servidor fallidas en naranja se redistribuyen a las instancias restantes de Universal Print Server que aún están activas.

gráfico que muestra la distribución de conexiones de servidor fallidas

A continuación, se realizan nuevas conexiones a los servidores existentes que todavía están disponibles. A continuación se puede ver cómo las conexiones previamente fallidas se redistribuyen a los servidores existentes.

gráfico que muestra la redistribución de conexiones fallidas

Como se ha mencionado anteriormente, la conexión existente no equilibran dinámicamente la carga. El equilibrio de carga se produce únicamente en el inicio de sesión del usuario. Como tal, cuando las instancias de Universal Print Server fallidas vuelvan a estar disponibles, no se producirá ningún reequilibrio o conmutación por error. Esto se puede ver a continuación, donde las instancias de Universal Print Server que habían fallado se vuelven a poner en línea, pero no toman ninguna conexión existente.

gráfico que muestra la distribución de las conexiones cuando los servidores fallidos vuelven a estar en línea

Para ilustrar que estas instancias de Universal Print Server vuelven a estar disponibles y aceptarán conexiones, es necesario iniciar sesión en usuarios adicionales o forzar un error en otras instancias de Universal Print Server. A continuación, las instancias de Universal Print Server UPServer08 y UPServer10 se vieron sometidas a una falla forzada y sus respectivas conexiones resaltadas en naranja.

gráfico que muestra la distribución de los servidores con errores

Con la falla se puede ver en consecuencia que las conexiones se migran a otros servidores. En este caso, se migrarán de nuevo a los dos servidores que habían fallado anteriormente, ahora disponibles para tomar conexiones de nuevo. Como estos servidores son los menos cargados (sin carga), tomarán la mayor parte de las conexiones.

Agregar varios servidores de impresión

Se pueden agregar varias instancias de Universal Print Server a la directiva de equilibrio de carga de dos maneras: A través de la interfaz gráfica de usuario de Citrix Policy o a través de cmdlets de PowerShell. La interfaz gráfica de usuario de Citrix Policy se explica por sí misma en su uso. A continuación se muestra un método para utilizar PowerShell para agregar varias instancias de Universal Print Server a la directiva de equilibrio de carga de una manera más rápida.

  1. Add-PSSnapin Citrix.Common.GroupPolicy
  2. New-PSDrive –PSProvider CitrixGroupPolicy –Name Site –Root \ -Controller localhost
  3. CD site:\Computer
  4. CD a la directiva que quiera modificar (el nombre de la directiva que contiene la directiva UPSLB)
  5. CD Settings\ICA\Printing\UniversalPrintServer\LoadBalancedPrintServers
  6. Usar New-Item para agregar nuevas impresoras a la lista

imagen que muestra la ejecución del script de PowerShell

Sin embargo, hay algunas advertencias con el uso de este método. En primer lugar, asegúrese de que está introduciendo la información correctamente. Es posible que quiera agregar algunas impresoras manualmente a la directiva y ver cómo se presentan a través de la pantalla de PowerShell para asegurarse de que las está agregando correctamente. En segundo lugar, dado que está eludiendo la interfaz de usuario de directivas, no hay validación de los servidores de impresión realizados.

Contadores universales del servidor de impresión

Como se mencionó en la sección de dimensionamiento, hay nuevos contadores de perfmon que se pueden utilizar para determinar la información sobre las condiciones actuales de impresión. Existen contadores únicos en la instancia de Universal Print Server y en los sistemas XenApp/XenDesktop.

Los contadores relevantes para la instancia general de Universal Print Server se ubicarán en la instancia correspondiente de Universal Print Server, como los trabajos creados por minuto contador mencionado anteriormente (estos contadores son solo para esa instancia de Universal Print Server y no son acumulativos en varios instancias). Los contadores relevantes para el equilibrio de carga de Universal Print Server existen en cada sistema XenApp/XenDesktop (el equilibrio de carga se produce en el nivel de VDA individual), como el contador Conexiones actuales.

Los contadores específicos de UpClient (componente VDA) se pueden configurar para capturar datos para una instancia específica de Universal Print Server, todas las instancias de Universal Print Server o como suma total para todas las instancias de Universal Print Server en un VDA. Estos contadores se pueden ver directamente a través de perfmon o pueden ser scripts a través de PowerShell. Los siguientes contadores estarán disponibles debajo de la sección Equilibrio de carga de impresión de Citrix de perfmon. Estos contadores se pueden seleccionar seleccionando un total (_loadbalancers_total) para el VDA o seleccionando una instancia de servidor de impresión universal (nombre de instancia de servidor de impresión universal) individual disponible en ese VDA específico.

Contador de conexiones de impresora activas: Performance\\Citrix Printing Load Balancer (SELECTION)\\Active Printer Connections

Contador de conexiones de impresora creado: Performance\\Citrix Printing Load Balancer (SELECTION)\\Created Printer Connections

Contador de conexiones de impresora eliminadas: Performance\\Citrix Printing Load Balancer (SELECTION)\\Deleted Printer Connections

Como se trata de contadores perfmon estándar, el cmdlet Get-Counter incorporado de PowerShell se puede utilizar como se indica a continuación para obtener información de un VDA específico.

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

El comando anterior recuperará la información COUNTER (Conexiones de impresora activas/creadas/eliminadas) deseada desde el nombre VDAName deseado (Nombre, FQDN o dirección IP del VDA) para SELECTION (nombre de instancia del servidor de impresión universal o_loadbalancers_total). Esto proporcionará una lista completa del objeto contador.

imagen que muestra la salida del objeto de contador de PowerShell

Si solo le preocupa el valor real, necesitará canalizar este comando a otro comando para recuperar el valor cocinado (o solo el valor de las conexiones). Para lograr esto agregaremos este comando al final del anterior: | Foreach-Object {$_.CounterSamples.CookedValue[0]}

imagen que muestra solo el valor devuelto

Entorno de prueba

El entorno de pruebas consistía en tres conjuntos de hardware agrupados separados que ejecutaban XenServer 6.2 y 6.5. Existía un único grupo de XenServer 6.2 que contenía los componentes de la infraestructura Citrix (DDC, StoreFront, ICA Launchers, recopilación de métricas) y dos grupos 6.5 que contenían las instancias de Universal Print Server y los VDA de RDS de prueba. Se utilizaron dos repositorios de almacenamiento centralizados independientes para la prueba (uno para cada versión de grupo) y todas las máquinas virtuales de prueba se ubicaron allí. Todo el software utilizado fue el más actualizado en el momento de las pruebas realizadas. Todas las pruebas se realizaron con el mismo controlador y versión del controlador para asegurar que los resultados sean consistentes. Se probaron controladores adicionales; los resultados individuales variarán en función del controlador utilizado.

Servidores físicos XenServer 6.2 (x10)

  • 2 x Intel Xeon E5620 a 2,40 GHz (con tecnología Hyper-Threading de 4 núcleos) – 16 CPU
  • 64 GB de memoria
  • Almacenamiento NFS

Servidores físicos XenServer 6.5 (x25)

  • 2 x Intel Xeon E5-2640 @ 2,50 GHz (con tecnología Hyper-Threading de 6 núcleos): 24 CPU
  • 256 GB de memoria
  • Almacenamiento NFS

VM del servidor de impresión universal

  • 16 vCPU (16 sockets x 1 núcleo)
  • vRAM de 16 GB
  • 75 GB de almacenamiento
  • Windows Server 2012 R2

RDS VM

  • 16 vCPU (16 sockets x 1 núcleo)
  • vRAM de 16 GB
  • 75 GB de almacenamiento
  • Windows Server 2012 R2

ICA Launcher VM

  • 2 vCPU (2 sockets x 1 núcleo)
  • vRAM de 4 GB
  • 60 GB de almacenamiento
  • Windows 8.1 x64 Enterprise

Directivas de Citrix Universal Print Server

ICA\Printing

  • Preferencia de controlador universal: XPS; EMF; PCL5c; PCL4; PS
  • Uso del controlador de impresión universal: Utilice solo la impresión universal
  • Habilitación del servidor de impresión universal: Se habilita sin respaldo a la impresión remota nativa de Windows
  • Espere a que se creen impresoras: Activado
  • Servidores de impresión universales para equilibrio de carga: Lista de servidores de impresión

Las máquinas virtuales de Universal Print Server y RDS/VDA se mantuvieron dentro de los mismos servidores físicos agrupados de hardware para garantizar que las pruebas se realizaran en configuraciones de hardware consistentes. Los servidores DDC y StoreFront no se incluyeron en lo anterior, ya que no tienen un impacto en el equilibrio de carga del servidor de impresión universal, excepto para la propagación de directivas desde el DDC. Se utilizaron directivas mínimas en el dominio y el sitio XenDesktop/XenApp era una instalación predeterminada con directivas predeterminadas, a excepción de las directivas Universal Print Server y Load Balancing mencionadas anteriormente.