Configuración compartida con IIS 7
Introducción
Internet cambia la manera en que las empresas controlan los negocios del día a día y cómo compiten en el mercado. Con la llegada de las nuevas tecnologías web y un aumento del número de clientes que acceden a los recursos disponibles a través de la web, hay una necesidad urgente de mejorar la escalabilidad, la disponibilidad, la confiabilidad y la capacidad de administración de las aplicaciones. Las aplicaciones deben basarse en sistemas que proporcionen la posibilidad de ofrecer un tiempo de actividad elevado, un rendimiento mejorado de las solicitudes, un aumento de las transacciones de usuario simultáneas y un mejor valor de rentabilidad sobre la inversión, como una mejor calidad de servicio, que los sistemas competidores.
Las granjas de servidores web (clústeres de servidores) se han convertido en un estándar para ayudar a ofrecer aplicaciones altamente escalables, disponibles y administrables mediante la distribución de la carga. Más concretamente, estos atributos de aplicación son las principales razones que hay detrás de las granjas de servidores web y el equilibrio de carga. Mediante el uso de una granja de servidores web, una organización puede proporcionar una manera escalable de aumentar la capacidad de la base de usuarios que accede a la aplicación y sus recursos simultáneamente.
El clúster de servidores proporciona una disponibilidad mejorada al hacer que varios servidores distribuyan la carga. El clúster también se escala mejor a un mayor número de clientes en un momento dado. Por último, el clúster proporciona una experiencia de administración mejorada mediante el control del aprovisionamiento y la administración de la arquitectura de granja de servidores web con facilidad y sin agotar los recursos operativos.
Información general
Este artículo se centra en la característica de configuración global centralizada compartida. Esta característica ayuda a admitir granjas web homogéneas en las que los servidores comparten la misma configuración en un grupo de servidores. Mediante el uso de un recurso compartido UNC, cualquier cambio en un archivo de configuración principal central se propaga por distintos servidores sin necesidad de herramientas adicionales o soporte de programación.
En la primera parte de este artículo, se describe cómo usar la interfaz de usuario de administración de IIS 7 y versiones posteriores para habilitar y usar la configuración compartida. En la segunda parte, se describe cómo habilitar y usar la configuración compartida desde la línea de comandos.
Qué objetivos no se persiguen: lo que este artículo no cubre
Varios aspectos contribuyen a un entorno de granja de servidores web correcto, incluidas una compatibilidad, una gestión, una accesibilidad, una escalabilidad, etc. correctas.
La configuración compartida se centra solo en el aspecto de administración de configuración de una granja de servidores web y trata la configuración entre servidores. Hay herramientas y otras características que pueden ayudar a administrar varios servidores, copiar contenido, implementar módulos, sincronizar archivos binarios de aplicaciones, configurar componentes de terceros, etc. Estas herramientas, características y aspectos están fuera del ámbito de este artículo.
En este artículo solo se detalla cómo mantener la configuración mediante un archivo central entre servidores.
Por lo tanto, tenga en cuenta que el objeto sharedconfiguration permite que un servidor acceda a un archivo de configuración en un recurso compartido UNC de back-end como si fuera su configuración local. Como resultado, al actualizar la configuración mediante un servidor web front-end, las actualizaciones se realizan en todos los demás servidores.
Es importante tener en cuenta otras situaciones, como la instalación de un módulo de terceros o la adición de opciones de configuración, e incluir propiedades que solo un servidor puede comprender y para las que solo este tiene los archivos binarios y el esquema disponibles para que funcionen correctamente. De lo contrario, este tipo de uso puede interrumpir los demás servidores.
Para evitar este problema en granjas homogéneas, debe deshabilitar la configuración compartida en el clúster, actualizar el archivo applicationHost local para que refleje el archivo remoto, implementar y actualizar los módulos y la configuración en un solo servidor y volver a habilitar la configuración compartida en ese servidor. A continuación, puede implementar y actualizar los archivos binarios y módulos en el resto de los servidores antes de volver a habilitar la configuración compartida.
Entornos de dominio y no dominio
Algunos administradores implementan clústeres de servidores web en un entorno de dominio, mientras que otros los implementan en un grupo de trabajo (no dominio). En este artículo se describen ambos escenarios y se señalan las diferencias, así como las advertencias. Se recomienda configurar IIS en un clúster de un dominio, con la ayuda y la seguridad que proporciona Active Directory mediante un controlador de dominio.
Requisitos previos
Debe completar los pasos siguientes en orden:
- Instale IIS en el servidor, al que nos referiremos como "servidor web" en este artículo.
- Asegúrese de tener acceso a un segundo servidor, al que se hará referencia como "servidor de archivos" en este artículo. El servidor de archivos hospedará el recurso compartido para la configuración y el contenido básico, al que se puede acceder mediante UNC.
- En cada paso de este artículo se presupone que se completó el paso anterior. Realice todos los pasos en orden.
- Para algunos pasos, hay un paso equivalente que se puede realizar mediante la interfaz de usuario. Realice solo un tipo de paso, a menos que se especifique lo contrario.
Configuración centralizada
La interfaz de usuario de administración de IIS incluye compatibilidad para configurar el redireccionamiento de configuración y exportar archivos de configuración y las claves de cifrado necesarias a una ruta de acceso especificada.
Exportación de archivos y configuración del redireccionamiento de configuración mediante la interfaz de usuario
- Abra el Administrador de IIS.
- En la vista de árbol, seleccione la conexión de servidor para la que quiera configurar el redireccionamiento de configuración.
- Haga doble clic en Configuración compartida.
- En el panel Acciones, haga clic en Exportar configuración... para exportar los archivos de configuración necesarios del servidor local a otra ubicación (por ejemplo, un recurso compartido UNC).
- En el cuadro de diálogo Exportar configuración, escriba la ruta de acceso a la que quiera exportar los archivos. Escriba una contraseña para proteger las claves de cifrado que también se exporten. Haga clic en Aceptar para exportar los archivos de configuración y las claves de cifrado protegidas con contraseña.
- Active la casilla Habilitar configuración compartida para habilitar el redireccionamiento de configuración.
- Especifique la ruta de acceso donde se encuentran las claves de configuración y cifrado y escriba las credenciales que se usarán para acceder a esa ruta de acceso. Haga clic en Conectar como... y escriba las credenciales.
- Haga clic en Aplicar para guardar la configuración. En el cuadro de diálogo Configuración compartida, indique la contraseña que especificó para proteger las claves de cifrado.
- Haga clic en Aceptar para terminar de configurar el redireccionamiento de configuración.
Los pasos anteriores describen cómo exportar la configuración y activar la configuración centralizada. Sin embargo, solo tiene que exportar la configuración una vez. Realice del paso 6 al 9 en cada servidor posterior que usará la configuración centralizada.
Notas sobre el uso de la interfaz de usuario
Al configurar el redireccionamiento de configuración, se espera que los archivos exportados se hayan exportado mediante la interfaz de usuario. Esto se debe a que la interfaz de usuario exporta e importa elementos, como las claves de cifrado protegidas con contraseña, mediante su propio formato personalizado.
Por ejemplo, si copió manualmente los archivos administration.config y applicationHost.config en un recurso compartido y, a continuación, exportó manualmente las claves de cifrado, no podrá usar la interfaz de usuario para configurar el redireccionamiento de configuración para que apunte a esos archivos. Esto se debe a que las claves de cifrado exportadas no estarían en el formato que requiere la interfaz de usuario.
Símbolo del sistema
Durante el resto de este artículo, debe usar un símbolo del sistema para ejecutar determinados comandos. Se recomienda usar un símbolo del sistema con derechos de usuario elevados, ya que determinados comandos no funcionarán si ejecuta un símbolo del sistema normal.
Para abrir el símbolo del sistema con permisos de usuario elevados:
- Haga clic en Iniciar.
- Haga clic en Todos los programas.
- Haga clic en Accesorios.
- Haga clic con el botón derecho en el símbolo del sistema y seleccione Ejecutar como administrador.
- Siga las indicaciones de los cuadros de diálogo que aparecen.
Copia de seguridad del archivo applicationHost.config actual
Al probar nuevas características o cambiar varias opciones de configuración, se recomienda realizar una copia de seguridad del archivo applicationHost.config actual.
Para realizar una copia de seguridad del archivo applicationHost.config:
Abra un símbolo del sistema.
Vaya al directorio IIS, que se encuentra en
%WINDIR%\System32\InetSrv
de forma predeterminada. Los archivos de configuración se almacenan en el directorio InetSrv\Config. Use la herramienta AppCmd para crear un objeto de copia de seguridad y hacer una copia de seguridad del archivo applicationHost.config ejecutando el siguiente comando:cd /d %windir%\system32\inetsrv appcmd add backup centralConfigBackup
Nota:
La herramienta AppCmd reside en el directorio InetSrv. Debe acceder a la herramienta desde este directorio, a menos que la ruta de acceso de la herramienta se agregue a las variables de entorno del sistema.
Asegúrese de que el objeto de copia de seguridad, que incluye el archivo applicationHost.config y el archivo de metabase heredado para SMTP, así como otras configuraciones de servidor que no son de la web, esté presente ejecutando el siguiente comando:
appcmd list backup
Para reemplazar el archivo de configuración actual por el archivo de copia de seguridad:
Abra un símbolo del sistema.
Vaya al directorio IIS, que se encuentra en el directorio InetSrv de forma predeterminada. Restaure el objeto de archivo de copia de seguridad AppCmd ejecutando el siguiente comando:
cd /d %windir%\system32\inetsrv\ appcmd restore backup centralConfigBackup
Creación de un usuario para acceder al recurso compartido UNC para la configuración
En un entorno de dominio, un administrador debe proporcionar o crear una cuenta en el dominio para usarla con Active Directory. Esta cuenta debe configurarse con los derechos de usuario correctos para acceder al recurso compartido UNC.
En un entorno que no sea de dominio, un administrador debe crear en ambos servidores un usuario local con derechos de usuario para acceder al contenido. El nombre de usuario y la contraseña deben ser los mismos en todos los servidores para que funcionen en esta configuración. Los pasos siguientes ayudan a crear un usuario para leer el recurso compartido donde reside la configuración compartida.
Para crear un usuario que pueda leer el recurso compartido donde reside la configuración compartida (que no sea de dominio):
Abra un símbolo del sistema.
En el servidor web (servidor front-end donde está instalado IIS), cree un usuario llamado ConfigUser1 con la contraseña ConfigPass1 ejecutando el siguiente comando:
net user ConfigUser1 ConfigPass1 /add
En el servidor de archivos (servidor back-end donde residirá la configuración central), cree un usuario llamado ConfigUser1 con la contraseña ConfigPass1 ejecutando el siguiente comando:
net user ConfigUser1 ConfigPass1 /add
Creación de recursos compartidos UNC para la configuración central y el contenido
El recurso compartido UNC para la configuración hospeda el archivo applicationHost.config para los servidores que quieran recoger los datos de configuración de esta ubicación centralizada.
Para crear el recurso compartido UNC:
En el servidor de archivos, abra un símbolo del sistema.
Vaya a la raíz de la unidad. Ejecute el siguiente comando para crear un directorio para la configuración y compartir este directorio, y asegúrese de conceder a los usuarios derechos de lectura y escritura en el directorio:
md %SystemDrive%\centralconfig net share centralconfig$=%SystemDrive%\centralconfig /grant:Users,Change
Nota:
Este comando concede automáticamente derechos de usuario al grupo de usuarios a este recurso compartido. Al usuario creado para el escenario que no es de dominio se le conceden derechos de cambio automáticamente, lo que puede restringirse aún más si es necesario. Para el escenario de dominio, el usuario debe tener derechos de usuario establecidos explícitamente para acceder al recurso compartido o añadirse al grupo de usuarios del sistema.
Escenario que no es de dominio: para aumentar la seguridad del recurso compartido, puede sustituir la parte "Users,Change" del modificador /grant con los parámetros ConfigUser1,Change. Solo el usuario especificado tendrá acceso al recurso compartido.
Escenario de dominio: para aumentar la seguridad del recurso compartido, puede sustituir la parte "Users,Change" del modificador /grant con los parámetros domain\user,Change. Solo el usuario especificado tendrá acceso remoto al recurso compartido.
Nota:
Los derechos de usuario de un recurso compartido son una unión entre los derechos de usuario del sistema de archivos remotos y locales. Debe establecer los derechos de usuario adecuados en el directorio de una cuenta de dominio para poder leer correctamente el recurso compartido de configuración.
Concesión de derechos de usuario a las cuentas de los recursos compartidos UNC que hospedan contenido y configuración central
Debe asegurarse de que la cuenta que se usa para acceder a la configuración tenga los derechos de usuario adecuados. IIS usa esta cuenta para acceder al recurso compartido UNC de la misma manera que accede al contenido cuando se asigna un directorio virtual a un recurso compartido UNC. Los derechos de usuario de lectura de esta cuenta son útiles al acceder solo al recurso compartido. Después de ese punto, siempre que IIS lee el archivo de configuración, vuelve a la identidad que el autor de la llamada tiene: la API, la herramienta de administración que se esté usando o el usuario que tenga la sesión iniciada en ese momento.
Nota:
La cuenta ConfigUser1, o la cuenta de dominio equivalente que se usa para leer la configuración, no es la misma que la cuenta que se usa para escribir la configuración. Estas cuentas no son necesarias para tener derechos de usuario de escritura en el recurso compartido o el archivo de configuración.
Para conceder derechos de usuario a las cuentas del recurso compartido UNC (dominio):
- Si la cuenta de dominio forma parte del grupo de usuarios locales y a los usuarios se les concedió acceso cuando se creó el recurso compartido, puede omitir los pasos siguientes para la configuración del dominio. Sin embargo, si la cuenta de dominio para acceder al recurso compartido de archivos local no forma parte de ningún grupo de usuarios local, debe ejecutar el comando para conceder derechos de usuario.
- En el servidor de archivos, abra un símbolo del sistema.
- Proporcione derechos de usuario a la cuenta de dominio para leer el directorio donde se almacena la configuración mediante la ejecución del comando siguiente:
icacls %SystemDrive%\centralconfig\ /grant domain\user:R
Para agregar el usuario UNC (sea o no de dominio):
Para escenarios de dominio y que no sean de dominio, el nombre de usuario debe incluir la configuración del trabajo por lotes de inicio de sesión. No es una configuración predeterminada en Windows Servers® 2008; debe agregarla manualmente al servidor web.
- Haga clic en Iniciar. Haga clic en Herramientas administrativas y seleccione Directiva de seguridad local.
- En Directivas locales, seleccione Asignaciones de derechos de usuario.
- Haga doble clic en Iniciar sesión como trabajo por lotes y agregue el usuario UNC que creó.
Redireccionamiento de la configuración
Introducción
Ahora que ha completado los pasos anteriores, el servidor web es funcional y el servidor web front-end debe atender su sitio web predeterminado mediante la dirección de retroceso del bucle localhost.
Ahora puede mover la configuración a una ubicación central. Esto le permite declarar un archivo como el archivo maestro y guardarlo en un recurso compartido UNC para la configuración de varios servidores. Al cambiar este archivo, se aprovisionarán y actualizarán todas las configuraciones del servidor a la vez.
Para almacenar la configuración en un recurso compartido UNC:
Copie los archivos applicationHost.config y administration.config del directorio
%windir%\system32\inetsrv\config
en el servidor web front-end para compartirlos en el servidor de archivos de back-end. Si la cuenta de usuario que ha iniciado sesión actualmente tiene acceso de escritura al recurso compartido back-end, puede quitar el archivo del directorio. Si no es así, debe autenticar la cuenta de usuario en el back-end para completar este paso.Acceda al archivo XML redirection.config existente del directorio de configuración del servidor front-end:
- Use el Explorador de Windows para ir a
%windir%\system32\inetsrv\config
. - Abra el archivo redirection.config. Este archivo y su contenido se crean cuando se configura el servidor web. Las herramientas y las API pueden acceder a este archivo para determinar si esta característica está habilitada o no.
- Use el Explorador de Windows para ir a
Abra el archivo redirection.config. Establezca la siguiente configuración con el nombre de servidor, el nombre de usuario y la contraseña correctos para su entorno.
<configuration> <configSections> <section name="configurationRedirection" /> </configSections> <configurationRedirection enabled="true" path="\\machinename\centralconfig$\" userName="ConfigUser1 or domain\user" password="ConfigPass1 or domainPassword" /> </configuration>
Guarde el archivo redirection.config. Puede acceder de nuevo a los sitios, pero la configuración ahora se almacena en un recurso compartido UNC.
Prueba de la configuración
Con la configuración a la que se hace referencia desde el back-end, hay dos escenarios clave para los que se diseñó esta característica. Puede actualizar la configuración en los servidores front-end web de dos maneras:
- Puede editar el archivo applicationHost.config directamente en el recurso compartido de archivos. Una vez hecho esto, se realizan las notificaciones de cambio y los servidores web recogen los cambios en el archivo.
- Puede agregar un segundo archivo applicationHost.config en el recurso compartido de archivos back-end y cambiar el archivo redirection.config del servidor web para que apunte a la nueva versión del archivo. Esto es útil para fines de reversión o implementaciones preconfiguradas.
Resumen
En este artículo se ha presentado la nueva característica de configuración centralizada. Esta característica permite a los administradores que tienen clústeres homogéneos en un entorno de granja de servidores web configurar e implementar una configuración en todos los servidores de una manera fácil.
Una vez configurada la característica, si se realiza un cambio en el archivo en el recurso compartido UNC o se redirige un servidor a otra ubicación, el servidor web recoge los cambios inmediatamente. Solo los cambios globales que afecten a varios sitios y aplicaciones implicarán un reciclaje, pero si se realizan cambios en un ámbito localizado, el resto de los sitios y aplicaciones no se reiniciarán.
Apéndice 1: Acceso al archivo Redirection.config mediante programación para leer los valores
En este paso se proporciona un ejemplo de cómo acceder al archivo redirection.config mediante programación aprovechando la nueva API COM AHADMIN. Use la API COM de AHADMIN para implementar esta API desde código nativo o desde el script y el código administrado.
Para leer los valores mediante programación
Cree un archivo de texto y guárdelo con la extensión .js. El script siguiente proporciona un ejemplo de cómo leer el atributo habilitado, el nombre del servidor, el nombre de usuario y la contraseña del entorno:
try { var config = WScript.CreateObject( "Microsoft.ApplicationHost.AdminManager" ); var section = config.GetAdminSection( "configurationRedirection", "MACHINE/REDIRECTION" ); WScript.Echo( "Current redirection:" ); WScript.Echo( "enabled = " + section.Properties.Item( "enabled" ).Value ); WScript.Echo( "path = " + section.Properties.Item( "path" ).Value ); WScript.Echo( "user = " + section.Properties.Item( "userName" ).Value ); WScript.Echo( "pass = " + section.Properties.Item( "password" ).Value ); } catch(e) { WScript.Echo(e.number); WScript.Echo(e.description); }
Guarde el archivo redirection.js. Ahora puede ejecutar este archivo desde un símbolo del sistema gracias a Windows Script Host (WSH).
Apéndice 2: Acceso al archivo redirection.config mediante programación para escribir los valores
En este paso se proporciona un ejemplo de cómo acceder al archivo redirection.config mediante programación aprovechando la nueva API COM AHADMIN. Use esta API desde código nativo o desde el script y el código administrado desde su objeto COM.
Escritura de los valores mediante programación
Cree un archivo de texto y guárdelo con la extensión .js. El script siguiente proporciona un ejemplo de cómo escribir el atributo habilitado, el nombre de servidor, el nombre de usuario y la contraseña para su entorno:
try { var config = WScript.CreateObject( "Microsoft.ApplicationHost.WritableAdminManager" ); config.CommitPath = "MACHINE/REDIRECTION"; var section = config.GetAdminSection( "configurationRedirection","MACHINE/REDIRECTION" ); section.Properties.Item( "enabled" ).Value = true; section.Properties.Item( "path" ).Value = "\\\\somemachine\\sharefile://folder/"; section.Properties.Item( "userName" ).Value = "testuser"; section.Properties.Item( "password" ).Value = "testuser"; config.CommitChanges(); } catch(e) { WScript.Echo(e.number); WScript.Echo(e.description); }
Guarde el archivo redirection.js.
Ahora puede ejecutar este archivo desde un símbolo del sistema gracias a Windows Script Host (WSH).
Apéndice 3: Uso de las propiedades cifradas específicas de la máquina
De forma predeterminada, IIS incluye dos proveedores principales para proteger las propiedades. Estos proveedores se encuentran en la sección de configuración <configProtectedData> del archivo applicationHost.config y se definen en el elemento <providers>.
AesProvider es específico para tratar el cifrado y el descifrado de las propiedades que se encuentran en la sección system.webServer.
IISWASOnlyRsaProvider es específico para tratar el cifrado y el descifrado de las propiedades que se encuentran en la sección system.applicationHost.
Estas claves se encuentran en los contenedores de claves iisConfigurationKey y iisWasKey, y son específicos de la máquina. En un escenario de granja de servidores web, si se requiere cifrado, se exporta una clave de una máquina (normalmente la que creó el archivo applicationHost.config) y se introduce en las otras máquinas para que el servidor web pueda descifrar y usar propiedades seguras.
Pasos
Abra un símbolo del sistema. Vaya al directorio Framework, que se encuentra en
%windir%\Microsoft.NET\Framework\v2.0.50727\
de forma predeterminada.Nota:
Como referencia, las claves de máquina del sistema se encuentran en %ALLUSERSPROFILE%\Microsoft\Crypto\RSA\MachineKeys\.
Use la herramienta aspnet_regiis para exportar la clave. El comando para transferir la clave de configuración se indica a continuación. El modificador px identifica que desea exportar un par de claves RSA. El modificador pri identifica que también quiere incluir las claves pública y privada.
Esta identificación del modificador es necesaria para realizar el cifrado y el descifrado; De lo contrario, solo podrá cifrar los datos con la clave exportada. El parámetro después de -px corresponde al nombre del contenedor de claves que se va a exportar. En este caso, es el contenedor de claves "iisConfigurationKey". El otro contenedor de claves que usa IIS es el "iisWasKey".
aspnet_regiis -px "iisConfigurationKey" "D:\iisConfigurationKey.xml" -pri
Una vez que la exportación se complete correctamente, copie el archivo XML en la otra máquina del clúster para prepararse para importarlo allí.
Vaya al directorio Framework y use la herramienta aspnet_regiis para importar la clave desde el archivo XML. El comando para finalizar la transferencia de la clave se indica a continuación.
El parámetro que hay después de -pi es el nombre del contenedor de claves que se va a importar. En este caso, es el contenedor de claves "iisConfigurationKey". El otro contenedor de claves que usa IIS es el "iisWasKey".
aspnet_regiis -pi "iisConfigurationKey" "D:\iisConfigurationKey.xml"