¿Qué es la MetaBase del IIS?
La MetaBase de IIS almacena todas las configuraciones y personalizaciones realizadas sobre un IIS, como por ejemplo:
- Configuraciones de Sitios Web (autenticación, seguridad, versión de Framework, Host Headers, certificados SSL, Direcciones IP, etc.).
- Configuraciones de Directorios Virtuales (autenticación, seguridad, versión de Framework, etc.).
- Configuraciones sobre ficheros (autenticación, seguridad, etc.).
- Configuraciones de los Aplication Pool, incluyendo las cuentas de servicio y resto de propiedades.
- Configuraciones generales de compresión HTTP, Time-out.
- Configuraciones de filtros ISAPI.
Como consecuencia de todo esto, la MetaBase de IIS6 se convierte en un elemento fundamental en cualquier plan de contingencia en el que existan servidores IIS, como es el caso de una instalación de MOSS 2007, de Reporting Services, etc.
La MetaBase de IIS6 está formada por dos ficheros XML ubicados por defecto en la ruta C:\WINDOWS\system32\inetsrv. En particular, se trata de los siguientes ficheros XML:
- MBSchema.xml. Contiene el esquema de la MetaBase.
- MetaBase.xml. Contiene la propia MetaBase.
Estos ficheros, como ficheros XML que son, se pueden visualizar con cualquier herramienta de edición de archivos de texto o de archivos XML. Adicionalmente, para quién le pueda interesar, es posible examinar el contenido de la MetaBase de IIS de forma gráfica con la herramienta IIS MetaBase Explorer, incluida en el Kit de Recursos de IIS6, y descargable desde la Web de Microsoft. A continuación se muestra una pantalla capturada de la misma:
En caso de desastre, ya se trate de una pérdida total o parcial de un IIS, será necesario recuperar la MetaBase de IIS para de este modo, recuperar el servicio. Por este motivo, es importante utilizar algún método de respaldo o copia de seguridad de la MetaBase de IIS.
Es importante tener claro que la MetaBase se restringe a las configuraciones y personalizaciones de IIS, sólo y exclusivamente. Con esto, lo que quiero decir, es que si deseamos realizar una copia de seguridad de una Aplicación Web hospedada en un Servidor IIS, será necesario (al menos):
- Realizar Backup de la MetaBase (o en su defecto, realizar un Export de la MetaBase).
- Realizar Backup del Sistema de Ficheros, en particular, de aquellos directorio utilizados por la Aplicación Web. Aunque habitualmente se utilizan directorio ubicados por debajo de c:\inetpub, no siempre se cumple esta regla.
Evidentemente, puede haber otros elementos de los que necesitemos realizar copia de seguridad, como puede ser la GAC (Global Assembly Cache), certificados digitales utilizados para el cifrado SSL (con su Clave Pública y Privada, esto es, ficheros PFX), etc.
En este artículo, nos centramos sólo y exclusivamente, en la parte de Backup y Restore de la MetaBase de IIS6, no contemplando la copia y restauración de recursos externos. Además, este artículo está centrado en servidores IIS utilizados para hospedar Sitios Web, no incluyéndose pruebas relacionadas con otros servicios de IIS como es el caso de FTP, SMTP o NNTP.
Alternativas de Copia de Seguridad de la MetaBase de IIS6
Principalmente, tenemos dos operaciones de Copia de Seguridad para la MetaBase de IIS6: Backup y Export. Ambas operaciones tienen ciertas diferencias. Además, también existen distintas operaciones de recuperación (Restore e Import). Por ello es interesante tener una descripción global de las distintas alternativas. Por orden:
- Export de la MetaBase. Genera un único fichero XML, como una copia del fichero de la Metabase de IIS6 (es decir, el fichero de esquema de la MetaBase de IIS, el Export ni lo huele). Es posible importar un Export de la MetaBase de IIS, en la misma o diferente máquina (es decir, es portable).
Es posible realizar un Export de forma selectiva (granular), lo cual permite realizar un Export completo de toda la configuración de la MetaBase de IIS, o bien un Export de todos los Sitios Web de un IIS, o de un único Sitio Web de IIS, o de un Directorio Virtual de IIS, etc.
La forma natural de recuperar un Export de la MetaBase de IIS, es ejecutando un Import de la MetaBase de IIS. La principal ventaja de la ejecución de un Import, es que puede ser granular. Es decir, es posible realizar un Export completo de toda la MetaBase de un IIS6, y en caso de pérdida de un Sitio Web, realizar un Import de sólo el Sitio Web perdido (no es necesario realizar un Import completo de toda la MetaBase).
Como comentábamos antes, es posible realizar un Export de la MetaBase de IIS de una máquina (total o parcial), e importarlo en otra máquina. Esta técnica resulta de especial interés para el despliegue de Aplicaciones Web de IIS en un Cluster NLB. De este modo, es posible montar la Aplicación Web en el IIS de un Nodo del Cluster NLB, y una vez que quede funcionando correctamente, copiar los ficheros al resto de Nodos del Cluster NLB, para seguidamente realizar un Export de la MetaBase e importarlo en el resto de Nodos del Cluster NLB (bueno, lo habitual, es importar sólo los Sitios Web afectados, claro). Esta es la mejor forma de simplificar un despliegue manual de IIS, y de garantizar que los diferentes Nodos del Cluster NLB quedan igualados.
Como curiosidad, realizar un Export completo de la MetaBase es equivalente a realizar una copia del fichero C:\WINDOWS\system32\inetsrv\MetaBase.xml. Sin embargo, la recomendación es realizar el Export (en vez de una copia manual del fichero), de tal modo, que tengamos garantía de que se ha realizado la copia de forma correcta, y que la copia no está corrupta.
- Backup de la MetaBase. Genera dos ficheros XML (una copia del fichero de la MetaBase y una copia del Esquema de la MetaBase), por lo que resulta más completo que un simple Export de la MetaBase de IIS6.
Es importante tener en cuenta, que un Backup de la MetaBase de IIS6 puede ser Portable o no No Portable. Un Backup Portable de la MetaBase de IIS6, puede ser restaurado en la misma o diferente máquina, mientras que un Backup No Portable de IIS sólo puede ser restaurado sobre la misma máquina. Para realizar un Backup Portable de la MetaBase de IIS6, es necesario utilizar una contraseña para cifrar las partes sensibles de la MetaBase de IIS (el resto de la información, seguirá en texto claro).
La forma de restaurar un Backup de la MetaBase de IIS6, es mediante un Restore de la MetaBase de IIS6, obviamente. Sin embargo, de forma adicional, es posible realizar un Import de un Backup, es decir, no es requisito hacer un import de un export (se puede hacer de un import y de un backup también). De este modo, podemos hacer Backups de la MetaBase de IIS, y utilizarlos para restaurar parcialmente el IIS (ej: sólo un Sitio Web realizando un import de la MetaBase de IIS6).
Como consecuencia de esto, la recomendación a seguir es realizar un Backup de la MetaBase de IIS, de tal modo, que en caso de necesidad, podamos tanto recuperar completamente la MetaBase del IIS, como importar configuraciones parciales de la MetaBase del IIS, en función del escenario de recuperación que se nos presente (toquemos madera).
De nuevo insistir, que ni el Backup ni el Export copian los contenidos, es decir, hace falta backup de filesystem de los directorios correspondiente (e: c:\inetpub), de la GAC, copia de los certificados digitales, etc.
También es importante tener en cuenta, que al realizar un backup del System State, también no estamos llevando la MetaBase de IIS. En cualquier caso, la realización de un Backup de la MetaBase de IIS6 será siempre muy apropiado, ya que nos permitirá recuperar toda la MetaBase de IIS6, o bien, sólo aquellas configuraciones que podamos necesitar recuperar (ej: sólo un Sitio Web).
Cómo hacer un Export de la MetaBase con IIS Manager
Desde la herramienta administrativa IIS Manager, seleccionar el elemento del que se desea realizar el Export de la MetaBase de IIS. Para ello, click con el botón derecho del ratón, y seleccionar la opción Save Configuration to a File (si alguien esperaba algo como Export MetaBase, pues no, lo ponen de otra forma). En el siguiente ejemplo, se muestra como realizar un Export de la MetaBase de IIS para Todos los Sitios Web.
En el diálogo Save Configuration to a File, seleccionar la ruta y nombre de fichero para el Export. Opcionalmente, es posible utilizar una contraseña para cifrar el contenido del fichero (no lo he probado, no se si será cifrado total o sólo de datos sensibles).
Y aquí paz y después gloria. Ya tenemos nuestro Export de la MetaBase de IIS6.
Export de la MetaBase desde Símbolo del Sistema
Para realizar un Export de la MetaBase de IIS6 desde el Símbolo del Sistema, es posible utilizar el script iiscnfg.vbs. A continuación se muestra un ejemplo de un Export de toda la MetaBase de IIS6.
Paso 1: cd \windows\system32
Paso 2: cscript iiscnfg.vbs /export /f D:\Backup\ExportMetaBase.xml /sp / /children
Opcionalmente, se puede añadir el parámetro /d para cifrar el Export de la MetaBase (ej: /d P@ssw0rd ), o seleccionar de qué elementos se desea realizar el Export (si no deseamos un Export completo de toda la MetaBase de IIS6).
Para más información: Exporting IIS Configurations Using Iiscnfg.vbs (IIS 6.0)
Import de la MetaBase con IIS Manager
Es posible realizar un Import de la MetaBase de IIS6 de forma gráfica utilizando la herramienta administrativa IIS Manager. En el siguiente ejemplo, se crea un nuevo Sitio Web desde un Export de la MetaBase de IIS6, lo cual, incluye todas las configuraciones de IIS relacionadas con el correspondiente Sitio Web. Para ello, desde el nodo Web Sites de IIS Manager, click con el botón derecho del ratón, y seleccionar la opción Web Site (from file) del menú New (si alguien esperaba algo como Import MetaBase, siento hundir sus esperanzas ;-), como se muestra en la siguiente pantalla capturada.
En el diálogo Import Configuration, seleccionar el fichero de exportación de MetaBase deseado (con el botón Browse) y seguidamente Click Read File.
Se mostrará la información del Fichero de exportación de la MetaBase. En nuestro caso de ejemplo, queremos restaurar el Sitio Web denominado Web Services Site. Lo seleccionamos, y click en OK.
Si el Sitio Web ya existe, se nos preguntará si deseamos reemplazar el Sitio Web existente, o si deseamos crear un nuevo Sitio Web, como se muestra en la siguiente pantalla capturada.
Finalmente, se creará el Sitio Web deseado. Es importante revisar el nuevo Sitio Web, principalmente, para comprobar en que estado ha quedado tras su creación, por si hubiese quedado en estado Stopped (ej: ya existe un Web Site escuchando en el mismo puerto e IP).
Backup de la MetaBase desde Símbolo del Sistema
Para realizar un Backup de la MetaBase de IIS6 desde el Símbolo del Sistema, es posible utilizar el script iisback.vbs. A continuación se muestra un ejemplo de un Backup de la MetaBase de IIS6, cifrando el backup con una contraseña.
Paso 1: cd \windows\system32
Paso 2: cscript iisback.vbs /backup /b BackMetaBase /e Passw0rd
Para más información: Backing Up IIS Configurations Using Iisback.vbs (IIS 6.0)