Replicación de drivers de impresora en un clúster Windows 2003

En Windows Server 2003, los drivers de impresora en un servidor de impresión en clúster son almacenados en un disco compartido y replicados a todos los nodos del clúster. Los drivers son guardados en un directorio bajo el raíz del disco compartido del cual el servicio spooler o cola de impresión depende, llamado PrinterDrivers

Nota Este nombre de carpeta no podrá ser cambiado aunque haya una propiedad privada de recurso que de pie a ello.

Cuando un driver de impresora es actualizado, es establecido el valor TimeStamp en el registro al sello de fecha y hora incluidas en el driver. Cuando el recurso spooler o cola de impresión su estado pasa a Online, él comprueba este valor bajo la siguiente rama del registro:

HKLM\Cluster\Resources\%GUID%\Parameters\Environments\Windows NT x86\Drivers\Version-3\%DriverName%\TimeStamp

Y lo compara con el valor:

HKLM\Software\Microsoft\Windows NT\CurrentVersion\Print\Cluster\%GUID%\Windows NT x86\Version-3\%DriverName%\TimeStamp

Nota %GUID% corresponde al identificador en el registro del recurso spooler o cola de impresión

Si él encuentra que la versión bajo la primera rama es mas nuevo que el de la segunda, el driver actualizado es descargado desde el disco compartido al disco del sistema operativo del nodo.

Se comprueba driver por driver, y si hay alguna diferencia de versión, son descargados desde la carpeta o directorio \PrinterDrivers del disco compartido a la siguiente ruta local del nodo %SystemRoot%\System32\Spool\ResourceGUID\Drivers, donde ResourceGUID es el identificador único global (GUID) que representa al recurso spooler o cola de impresión. Estos drivers son mantenidos aparte de cualquier driver instalado en el nodo o de otro recurso spooler en configuraciones activo/activo.

image

Imagen 1: Directorio con el GUID del recurso spooler

En un servidor de impresión no en clúster, los drivers para cada sistema operativo son almacenados en directorios diferentes. Una simple impresora puede tener diferentes drivers cargados y cada uno de estos está almacenado en una carpeta diferente bajo Drivers. El Cluster mantiene las mismas convenciones en la separación de drivers bajo cada carpeta GUID de cada recurso de spooler o cola de impresión.

La replicación de todos los drivers puede incrementar el tiempo que a un recurso spooler o cola de impresión pasar su estado a online, porque cuando un driver es actualizado, el spooler debe comprobar la lista de todas las impresoras pare ver cuáles son las impresoras afectadas (y ver si usa algún archivo actualizado) y si así fuera, decir a la impresora que actualice su información de driver. No se pasara el estado del recurso spooler o cola de impresión a Online hasta que esta comprobación y actualización este completa. Este retraso no afectara a otros nodos hasta que el recurso spooler se ponga online por primera vez en ellos. Cuando tu agregas un gran número de colas de impresión y drivers de una vez, es altamente recomendado que después de haberlas añadido, muevas el recurso spooler o cola de impresión a cada uno de los nodos en el clúster. Esto necesita ser hecho solo una vez, y cuando el recurso es puesto online ocurrirá la replicación de los driver. Esto asegura que todos los nodos tienen los drivers más actuales. El tiempo de failover será menor después que la que mayoría de los drivers estén replicados para las siguientes impresoras que añadas.

El spooler y otras aplicaciones no deberían copiar drivers de impresora directamente al disco compartido, porque si se produjese un failover el proceso de carga de drivers obtendría un error de E/S. Esto es el por qué los drivers son descargados y mantenidos en cada uno de los nodos localmente. Cuando se accede a un driver, se usa rutas UNC (\\%VirtualServer%\print$\%GUID%) en vez de la ruta local al driver (%SystemRoot%\System32\spool\Driver).

El sitio de Windows Update es seguro usarlo en los clúster. Si es usado el actualizara los drivers en el nodo local y también en los servidores virtuales, pero para poder hacerlo el recurso spooler debe estar online en el nodo donde se está usando Windows Update.

A la hora de borrar un recurso cuando un nodo está offline, la próxima vez que el nodo este online borrara la carpeta GUID del nodo local.

Cuando borras un recurso spooler, ocurren dos cosas:

  1. La carpeta GUID es borrada del nodo local (o marcada para borrar en el reinicio si los archivos de un driver están en uso).
  2. La carpeta PrinterDrivers es borrada del disco compartido.

El resto de los nodos (sin hacer caso si están online u offline) llevaran a cabo una limpieza cuando el Servicio de clúster inicie (ya que había una marca para borrado porque los archivos del driver estaban en uso). Esto es debido a cuando un recurso es borrado el servicio de clúster solo notifica a la DLL de recursos en el nodo donde el recurso está siendo borrado.

Una cosa a tener en cuenta a la par de la replicación de los drivers entre los discos compartidos y los nodos es la información que se pasan los nodos a través de la rama CLUSTER del registro. A veces debemos ser cuidadosos a la hora de agregar muchas impresoras y tenemos configurado un reseteo del log de quórum cada pocos KB. En un movimiento o failover puede perderse información relacionada con colas de impresión si es muy bajo el valor.

Para incrementarlo sigue estos pasos:

  1. Abrir la consola de administración de clúster (CluAdmin.exe).
  2. Clic con el botón derecho sobre el nombre de clúster en la parte superior izquierda, y luego Propiedades.
  3. Clic en el tabulador de Quorum.
  4. En la caja Reset quorum log at, teclear un valor mayor que el tamaño del archive CLUSDB en el carpeta \windows\cluster.

Nota Introducir un valor múltiplo de 64. Por ejemplo, 5120 o 8192.

Nota Este valor es global y solo necesita cambiarse en un nodo. El servicio de clúster llevara este cambio al resto de nodos y el cambio es dinámico no es necesario reiniciar el servicio de clúster.

Troubleshooting (solucionando problemas)

Directorio o carpeta del driver corrupta

Cuando una carpeta de un driver esta corrupta, cualquier impresora cuyo driver este corrupto no imprimirá. Puedes encontrar en alguna situación que una impresora en un nodo puede imprimir correctamente, pero desde otro nodo por la misma impresora no es posible. Esto puede ser debido a un driver corrupto o faltan archivos del driver en el nodo. Para corregir esto tú puedes manualmente forzar el borrado de todos los drivers del nodo y luego llevar a cabo una replicación completa desde el nodo que no tiene problemas.

Ya que el Servicio de clúster comprueba si las versiones coinciden en el failover, sería raro que en un failover el recurso spooler no propagara los drivers correctos al otro nodo..

Si la carpeta GUID en uno de los nodos esta corrupta puedes hacer una de estas cosas:

  • Restaurarla de un backup
  • Quitar y volver añadir el nodo problemático de la lista de la caja Possible Owners para recrear los drivers.

Con esta última opción el servicio de clúster copiara los drivers del disco compartido al disco local del nodo:

  1. Abrir el administrador de cluster, y mover el grupo que contiene el spooler al nodo que sospechamos que no tiene los drivers corruptos.
  2. Clic con el botón derecho en el recurso del spooler o cola de impression y luego Take Offline.
  3. Doble clic en el recurso Spooler, y luego clic en Modify bajo Possible Owners.
  4. Mover el nodo que sospechas que tiene el problema a la lista Available Nodes, y luego clic en OK.
  5. Clic en Apply.
  6. Clic en Modify bajo Possible Owners, y luego mueve de vuelta el nodo problemático a la lista Possible Owners.
  7. Clic en OK, y luego clic en OK.
  8. Mover el grupo que contine el recurso spooler al nodo problematico.
  9. Clic con el derecho sobre el recurso Spooler, y luego en Bring Online.

Esto causara que el recurso Spooler recree los drivers en el nodo local. Los driver viejos pueden ser movidos dentro de una carpeta llamada old dependiendo si pueden ser borrados o no. Si los driver en el nodo problemático todavía parecen estar corruptos, reinicia el nodo después de que lo hayas quitado de Possible Owners. Cuando tú hagas esto, cualquier driver que tuvieran handles abiertos serán cerrados. Normalmente este paso no es necesario.

Nosotros recomendamos que uses drivers de nivel 3 en pro de la estabilidad del clúster. Evita los de nivel 2 o de modo núcleo. Ellos pueden causar un stop e inestabilidad en el sistema.

Carpeta PrinterDrivers esta corrupta o le faltan archivos

Si por cualquier razón, la carpeta \PrinterDrivers en el disco compartido se pierde o la información que contiene se daña o se borra, tu puedes usar uno de los siguientes métodos para recuperarla:

· Restaurar de un backup.

· Copiar desde la carpeta %SystemRoot%\System32\Spool\SpoolerResource GUID a %SharedSpoolerDisk% y renombrar SpoolerResource GUID a PrinterDrivers.

· Reinstalar las impresoras (la carpeta PrinterDrivers es recreada cuando un driver es instalado).