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 el lanzamiento de 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, utilizamos una herramienta desarrollada internamente para coordinar los lanzamientos de las sesiones de ICA y recopilar datos de perfmon para las pruebas.

Dimensionamiento del equilibrio de carga

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 velocidad de impresión y en el uso de lo que consideramos un trabajo promedio.

A través de pruebas internas, se ha descubierto que no desea que se configuren demasiadas o muy 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 la distribución de impresoras no es necesariamente el caso. En particular, es el caso en el que se han configurado demasiadas instancias de Universal Print Server. En este caso, hay un sesgo definitivo de los usuarios hacia las primeras instancias disponibles de Universal Print Server.

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 ocuparon 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, debemos analizar 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 del 1 al 16) en equilibrio de carga y un solo servidor XenApp con un máximo de 10 usuarios (un poco exagerado, pero ya verá por qué). Digamos 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. Puede ser cualquier instancia de Universal Print Server que esté disponible y no se da 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 haya finalizado la creación de la sesión, 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 utiliza el servidor 2. Continuar con esa tendencia proporcionará la carga del servidor que se muestra a continuación. Cuando los 10 usuarios hayan 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 muestra los 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 en 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, se produce el mismo proceso para cada inicio de sesión posterior que antes, excepto que se salta el servidor 4, ya que tiene una conexión establecida actualmente. En este caso, los servidores 1 a 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 los servidores de impresión

Continúe aumentando el recuento de servidores y se puede observar claramente el sesgo que se produce. En la práctica, debe tener una cantidad de hosts de XenApp que sean equivalentes o múltiples de las instancias de Universal Print Server. También es una buena idea mantener los recuentos de sesiones de usuario como múltiples de las instancias de Universal Print Server que planea usar 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 analizar el mismo problema es que si solo admitimos 10 usuarios por servidor XenApp, no se requieren más de 10 instancias de Universal Print Server. Esto proporcionará 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 se ocupa estrictamente del equilibrio de conexión del usuario. Configuraciones más complejas con muchos más usuarios por servidor serían la configuración más probable. Con el aumento de usuarios, la velocidad de impresión que se mencionó anteriormente desempeña un papel más importante en el dimensionamiento de Universal Print Server. Recomendamos 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 para el equilibrio de carga en función de la velocidad de impresión requerida. Con el fin de ayudar a simplificar el tamaño, esta fórmula se puede utilizar como guía para una configuración más ideal para proporcionar una velocidad de impresión requerida. En general, le interesará más resolver N para determinar su propio recuento de servidores de impresión.

V\*P/N \< J

Donde:

V = cantidad de agentes VDA que utilizan LB

P = Promedio de trabajos de impresión en red activos por minuto por VDA

N = cantidad 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 posteriores al observar los contadores perfmon de Universal Print Client existentes en el VDA, más específicamente al supervisar el contador promedio de trabajos creados por minuto para impresoras de red durante un día de trabajo normal en un VDA que tiene habilitada la directiva de Universal Print Server y la red impresoras asignadas a las sesiones.

J debe ser un número entre 50 y 100, según el rendimiento del hardware de los servidores de impresión y el 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 del 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 doble de 100 trabajos por minuto ahora permite una densidad aún mayor en una instancia individual de Universal Print Server. La distribución en varias instancias de Universal Print Server con equilibrio de carga hace que este aumento de varias sea más impactante. A continuación se muestra la salida perfmon del contador Trabajos creados por minuto (el que se hace referencia en la fórmula) con un promedio de ~100 trabajos por minuto para un ciclo de prueba de más de 18 horas.

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

Aleatorización de VDI

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

Para garantizar que la aleatorización funciona, se llevó a cabo una prueba de XenDesktop para 500 usuarios con 16 instancias de Universal Print Server. Esto equivale a aproximadamente 31 sesiones por instancia de Universal Print Server (en un mundo de carga perfectamente equilibrada), lo que permite determinar claramente la eficacia 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 asciende a unos 100 usuarios por servidor XenApp, o unos 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.

Failover de equilibrio de carga de Universal Print

De forma predeterminada, una instancia de Universal Print Server no se notificará como fallida durante 180 s MINIMUM y puede tardar hasta 360 segundos en considerarse fallida. Es importante entender este tiempo de espera, ya que hace que la conmutación por error no se produzca en el momento en que se produce un error en la 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, será necesario realizar modificaciones en función de las necesidades del entorno. Estas modificaciones se pueden realizar a través de la directiva de Citrix y también a través de dos claves de 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 las subsiguientes conmutaciones por error. Los valores anteriores se seleccionaron de modo que, idealmente, llegaran a 3 usuarios por instancia de Universal Print Server por servidor XenApp.

gráfico que muestra el equilibrio de carga y el failover

Todas las instancias de Universal Print Server se cargan por igual y todos los usuarios inician 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 de servidor afectadas se resaltan en naranja. A continuación, las conexiones de servidor fallidas en naranja se redistribuyen a las restantes instancias 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 establecen nuevas conexiones a los servidores existentes que aún están disponibles. A continuación se puede ver cómo las conexiones fallidas anteriormente 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 equilibra dinámicamente la carga. El equilibrio de carga se produce únicamente en el inicio de sesión del usuario. Por lo tanto, cuando las instancias fallidas de Universal Print Server vuelvan a estar disponibles, no se producirá ningún reequilibrio ni conmutación por recuperación. Esto se puede ver a continuación, donde las instancias de Universal Print Server que fallaron se vuelven a poner en línea, pero no toman ninguna conexión existente.

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

Para demostrar que estas instancias de Universal Print Server vuelven a estar disponibles y aceptarán conexiones, es necesario iniciar sesión con usuarios adicionales o forzar el error de 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 servidores fallidos

Con el error, 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 volver a realizar conexiones. Como estos servidores son los menos cargados (sin carga), ocupará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 GUI de directivas de Citrix 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 manera más rápida.

  1. Complemento de PSS en 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. Utilice 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 la directiva, no se realiza ninguna validación de los servidores de impresión.

Contadores de Universal Print Server

Como se mencionó en la sección de dimensionamiento, hay nuevos contadores perfmon que se pueden utilizar para determinar información sobre las condiciones actuales de impresión. Existen contadores únicos tanto en la instancia de Universal Print Server como 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). Existen contadores relevantes para el equilibrio de carga de Universal Print Server 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 de una instancia específica de Universal Print Server, de todas las instancias de Universal Print Server o como suma total de todas las instancias de Universal Print Server en un VDA. Estos contadores se pueden ver directamente a través de perfmon o se pueden crear scripts a través de PowerShell. Los siguientes contadores estarán disponibles en la sección Equilibrio de carga de impresión de Citrix de perfmon. Estos contadores se pueden seleccionar aún más si se selecciona un total (_loadbalancers_total) para el VDA o se selecciona una instancia individual de Universal Print Server (nombre de instancia de Universal Print Server) disponible en ese VDA específico.

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

Contador de conexiones de impresora creadas: 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 integrado 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 contador de PowerShell

Si solo le preocupa el valor real, necesitará canalizar este comando en 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 constaba de tres conjuntos agrupados de hardware 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 de Citrix (DDC, StoreFront, lanzadores ICA, recopilación de métricas) y dos grupos de 6.5 que contenían las instancias de Universal Print Server y los VDA de prueba de RDS. Se utilizaron dos repositorios de almacenamiento centralizado independientes para la prueba (uno para cada versión del grupo) y todas las máquinas virtuales de prueba se ubicaron allí. Todo el software utilizado era el más actualizado en el momento de las pruebas realizadas. Todas las pruebas se realizaron con el mismo controlador y la misma versión del controlador para garantizar que los resultados sean consistentes. Se probaron controladores adicionales; los resultados individuales variarán según el 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
  • Memoria de 64 GB
  • 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
  • Memoria de 256 GB
  • Almacenamiento NFS

VM de Universal Print Server

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

RDS

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

VM del iniciador ICA

  • 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\Impresión

  • 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: habilitada sin recurrir 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 de XenDesktop/XenApp era una instalación predeterminada con directivas predeterminadas, excepto las directivas Universal Print Server y Load Balancing mencionadas anteriormente.

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