XenDesktop – SQL Mirroring con Witness
Soy Oscar Mas y os quiero enseñar cómo implementar un sistema de Mirror con Witness basado en Microsoft SQL Server, el cual es un ejemplo perfecto y recomendado para tener en alta disponibilidad nuestra base de datos de XenDesktop. De esta manera conseguiremos tener un mirror con failover de Microsoft SQL.
Para tener un automatic failover, el mirror se ha de configurar en “high-safety mode”, cosa que se hace de manera automática al seleccionar el witness en el wizard de configuración que veremos más adelante. Le hemos de proveer de un tercer servidor, en nuestro caso llamado witness.ilba.cat, el cual nos hará las funcionalidades de testigo. En la siguiente imagen podremos observar el modo high-safety con Witness:
Todo el post lo he realizado con SQL 2012 Server y SQL 2012 Express. Las bases de datos de los servidores sql1.ilba.cat y sql2.ilba.cat tienen SQL 2012 Server y el Witness está basado en SQL 2012 Express. He escogido la versión 2012, pero el procedimiento es casi idéntico en todas las versiones de Microsoft SQL. Os dejo el Matrix de versiones de SQL que soportan los productos de Citrix: http://support.citrix.com/article/CTX114501
El esquema lógico quedar de la siguiente manera:
Una vez acabados de instalar los SQL en los tres servidores, es altamente aconsejable que se actualicen los servidores mediante la herramienta de Windows Update, WSUS etc….
Durante el proceso de instalación tanto de los sistemas basados en SQL Server como en el SQL Express, se han configurado para soportar los sistemas en Mixed Mode (SQL Server authentication and Windows authentication). La instalación del SQL Express, se ha realizado dejando las opciones por defecto que nos brinda el wizard de instalación, pero en la instalación del SQL Server, hemos habilitado la opción de replicación en los dos servidores de SQL (sql1.ilba.cat y sql2.ilba.cat), tal y como se muestra en la siguiente figura:
Es altamente aconsejable, instalar la herramienta de administración (Management Studio) en todos los servidores, de esta forma si hubiera alguna incidencia con cualquiera de los servidores, podríamos administrar y ver lo que sucede.
Crearemos nuestra base de datos en el sql1.ilba.cat, la cual llamaremos CTX_STORE. La cual posteriormente cuando instalemos XenDesktop, le indicaremos esta base de datos la que queremos usar para desplegar nuestro o nuestros brokers.
Recordar que si creamos la base de datos de manera manual, después al desplegar nuestro XenDesktop tendremos que actualizar la BBDD de forma manual con dos scripts que nos proporcionara el Wizard de la instalación de nuestro Delivery Controller. Un script lo lanzaremos desde el servidor de SQL primario y el otro desde el servidor que hace las funcionalidades de mirror. Para más información de cómo desplegar nuestro Delivery Controller con un sistema de basado en mirror de SQL, ver: http://support.citrix.com/article/CTX127359
El procedimiento que realizaremos para poder configurar nuestro sistema de Mirror con Witness, será el siguiente:
- Creación del grupo de servidores
- Chequeo del puerto de SQL
- Exportación de la base de datos
- Importación de la base de datos
- Configurando el mirror
Creación grupo de servidores
Antes de proceder a la configuración del Mirror, crearemos un grupo en nuestro ADUC (Active Directory Users and Computers). Ya que más adelante, en el momento que creemos el mirror, nos solicitara un grupo. Esto lo podréis ver en al final del apartado de configurando el mirror. En mi caso he creado un grupo que lo he llamado SQLServers:
Y en este grupo le añadiremos los tres servidores que formaran nuestro Mirror, tal como se indica en la siguiente captura:
Chequeo del puerto de SQL
La versión de SQL Server por defecto nos permite acceder al puerto del SQL, pero en el SQL Express tendremos que habilitar que escuche por el puerto predeterminado. El puerto por defecto del SQL es el 1433 TCP. Para verificar que realmente nuestro servidor de SQL acepta peticiones, lanzaremos el siguiente comando desde una consola:
C:Windows>netstat -ano | find "1433"
Exportación de la Base de Datos
Este procedimiento lo haremos desde el primer servidor (sql1.ilba.cat). Lo que haremos durante la exportación de la base de datos, es exportar tanto la base de datos que hemos creado anteriormente (CTX_STORE) y los logs de la base de datos. Esto es necesario para posteriormente poder configurar el mirror de SQL Server
Le habilitaremos a nuestra base de datos el “Full Recovery Mode”, ya que por defecto las bases de datos que creamos en SQL, son de “Simple Recovery Mode”. Lo haremos desde las propiedades de la base de datos de la siguiente manera:
Para exportar la base de datos, seleccionaremos nuestra base de datos (en nuestro caso CTX_STORE) y en la opción “Task”, le indicaremos “Back Up….”
Le indicaremos que el backup que queremos realizar es Full y la ubicación donde crearemos el backup de la base de datos
Para exportar los logs de la base de datos, seleccionaremos nuestra base de datos (en nuestro caso CTX_STORE) y en la opción “Task”, le indicaremos “Back Up….”
Le indicaremos que el backup que queremos realizar un backup del Transactional Log y la ubicación donde crearemos el backup de los logs de la base de datos
Importación de la Base de Datos
Este procedimiento de importación lo realizaremos desde el segundo servidor (sql2.ilba.cat). Copiaremos los datos que hemos exportado en el punto anterior, tanto la base de datos del servidor, como los logs desde el servidor sql1.ilba.cat a nuestro servidor de mirror: sql2.ilba.cat. Es aconsejable que los path de origen y destino sean iguales.
Desde el servidor que va a hacer de mirror restauraremos la base de datos. Para importar la base de datos iremos a la opción “Task” y le indicaremos “Restore Database….”
Seleccionaremos la opción “Device” y seleccionaremos tanto la base de datos como los logs que hemos exportado con anterioridad, para que se importen:
Le indicaremos en “Recovery State” que es un “RESTORE WITH NORECOVERY”, de la siguiente manera:
Y podremos observar como empieza la restauración de la base de datos:
Configurado el Mirror
En este apartado, lo que haremos en la configuración del Mirror. Seleccionaremos nuestra base de datos desde el servidor (sql1.ilba.cat ). Para crear el mirror de la base de datos iremos a la opción “Task” y le indicaremos “Mirror….”
Nos aparecerá una ventana, en la cual nos iremos a la opción “Configura Security….”, la cual nos lanzara un wizard para poder configurar nuestro sistema de Mirror
Le indicaremos al Wizard que queremos Witness, pulsamos “Yes”:
Seguidamente, nos solicitara el servidor que realizara las funcionalidades de “Principal Server”, en nuestro caso sql1.ilba.cat
Posteriormente, nos solicitara el servidor que realizara las funcionalidades de “Mirror Server”, en nuestro caso sql2.ilba.cat
Y por último, nos solicitara el servidor que realizara las funcionalidades de “Witness Server”, en nuestro caso witness.ilba.cat
En este paso, le indicaremos el grupo de servidores que hemos creado al principio del post, el cual lo hemos llamado SQLServers:
Verificaremos que la configuración de nuestro sistema de mirror sea correcto, una vez acabada la configuración:
Le indicaremos que inicie el mirror, tal como se indica en la siguiente pantalla:
Una vez indicado que inicie el mirror podremos ver la configuración de nuestro sistema, en el cual el principal es nuestro servidor sql1.ilba.cat, el servidor que hará de mirror es el sql2.ilba.cat y el servidor de hará de witness es el witness.ilba.cat:
Seguidamente, veremos en nuestro explorador de SQL que base de datos es la principal y que base de datos realiza la funcionalidad de mirror:
Espero que os sirve de ayuda. Un saludo