Buenas prácticas para migrar a IIS 6.0 desde versiones

Document Sample
Buenas prácticas para migrar a IIS 6.0 desde versiones Powered By Docstoc
					Buenas prácticas para
migrar a IIS 6.0 desde
versiones anteriores
Bill Staples
Group Program Manager
IIS
Microsoft Corporation
Agenda

   IIS 6.0 – Introducción
       Fiabilidad – un nuevo modelo de procesos
       Seguridad
       Rendimiento y escalabilidad
       Mejor administración
   Consideraciones
   Recursos
   Preguntas y respuestas
Fiabilidad
Una nueva arquitectura para W3SVC en IIS 6.0
   Objetivo: permitir el aislamiento
    total de una aplicación del resto
    de las aplicaciones del Web y del
    sistema operativo del servidor.
   Funcionalidad de Web Service en
    INETINFO repartida entre:                       W3SVC   W3Core
       HTTP.sys: listener en modo
        kernel y enrutador de peticiones
       W3SVC: pasa a ser el gestor de                        Web
        configuración y procesado
                                                              app
       W3Core: donde se procesan las
        aplicaciones Web
   Carga de múltiples DLL W3Core
    dentro de archivos W3WP.exe
   Dos modos del modelo de                kernel
    procesos:                                          HTTP.SYS
       [Default] modo de aislamiento de
        proceso de usuario (worker
        process)
       Modo de aislamiento de IIS 5.0
Fiabilidad
Repaso – Modelo de Proceso de IIS 5.0

                                                       DLLHOST.exe
                                                          Pooled
                                                         OOP Apps
                             INETINFO.exe

                            metabase      ftp, smtp,
         ASPNET_WP.exe                       nntp
                                                                DLLHOST.exe
                 .Net App         W3SVC                    DLLHOST.exe
                                                                    Isolated
                .Net App
               .Net App
                  Domain                               DLLHOST.exe  OOP App
                 Domain                                       Isolated
                Domain
                                           In-proc
                              ASP.NET                          OOP
                                                         Isolated App
                                            Apps         OOP App

                                  ISAPI Filters

 User mode

 Kernel mode

                                   Winsock
  Fiabilidad
  Modo de aislamiento del proceso de trabajo en IIS6.0

                                                     Application Pool     Application Pool   Application Pool



INETINFO.exe       SVCHOST.exe                          W3WP.exe             W3WP.exe           W3WP.exe



                   W3SVC                               W3Core              W3Core             W3Core
  metabase
                                    W3 Process Mgr
                    W3 Config Mgr




                                                                                              ASP.net Apps
                                                       All Apps             All Apps
 ftp, smtp,                                                                                       .Net App
                                                       (no OOP)             (no OOP)             .Net App
                                                                                                .Net App
    nntp                                                                                           Domain
                                                                                                  Domain
                                                                                                 Domain


                                                       ISAPI Filters        ISAPI Filters


     User mode

     Kernel mode




                                                                       HTTP.SYS
Fiabilidad
Agrupamientos de aplicaciones (“pools”)

   Se pueden crear uno o
    más agrupamientos de
    aplicaciones
       Cada uno, servido por uno
        o más archivos W3WP.exe
       Cada W3WP.exe trabaja
        con un solo pool
       Peticiones encaminadas
        directamente al pool desde
        HTTP.sys
   Aislamiento de
    aplicaciones en base a:
       Site/Cliente
       Funcionalidad
       Fiabilidad
Fiabilidad
Reciclaje periódico del proceso
   ¿Qué es?
       Reinicio periódico de las
        aplicaciones en base a:
            Tiempo [Default]
            Número de peticiones
            Reinicios planificados
            Consumo de memoria
            Bajo demanda
   ¿Por qué hacerlo?
       Refrescar aplicaciones para
        garantizar su disponibilidad
       Previene que aplicaciones
        mal desarrolladas puedan
        colapsar el sistema
   Efecto en las aplicaciones
       Cambio de estado o pérdida
        de cache en el reciclado
       Posibles incidencias debidas
        a múltiples instancias.
Fiabilidad
Arquitectura auto contenida
   Chequeo de “salud” (pinging)
    ¿Que es?
       Diseñado para detectar bloqueos
        en threads de W3WP.exe
       Puede engancharse si no hay
        threads en W3WP.exe
        disponibles para responder en la
        ventana de tiempo asignada.
   ¿Cómo funciona?
       W3SVC hará “ping” a cada
        W3WP.exe
       El proceso tiene un tiempo
        preconfigurado de respuesta
       Si no responde en ese periodo:
           Por defecto: mata el proceso,
            publica el evento y arranca
            un nuevo proceso.
           O puede configurarse para
            ejecutar otra acción o
            proceso => “Orphaning”

   ASP y ASP.NET utilizan el ping
    para solicitar un reciclaje si
    aparecen síntomas de error.
Fiabilidad
Detección de caídas y recuperación
   Detección de caídas
       W3SVC detecta la caída
        de W3WP.exe
       W3SVC arrancará un
        nuevo W3WP.exe si hay
        demanda
       Peticiones encoladas en
        HTTP.sys mientras
        arranca el nuevo W3WP
       Efecto neto: servicio no
        interrumpido
   Protección rápida frente a
    fallos
       Únicamente permite x
        caídas en y minutos
       Automáticamente para el
        pool si se excede ese
        valor – Devuelve error 503
        a las peticiones a ese
        pool.
Fiabilidad
Consideraciones para las aplicaciones
   Diseñar las aplicaciones pensando en su reciclaje
       Independizar los estados y cache del proceso del servidor
       Para ASP.NET, usar el servicio de estado de sesión externo o
        Microsoft® SQL Server™ para almacenar los estados.
   Cuidado con los problemas derivados de la multiinstancia
       Pueden aparecer durante:
           Reciclajes: se superponen por defecto, pero puede deshabilitarse el
            reciclaje con superposición o reciclarlos todos juntos.
           Dos pools de aplicaciones cargando el mismo código de aplicación.
       Si no se puede cambiar el código, asignar todos los URL al mismo
        agrupamiento.
   “IIS 5-ismos” – dependencias de comportamientos de IIS5.0
       Ejecución con privilegios LocalSystem
       En el modelo de aislamiento de Proceso de Trabajo no se utiliza
        OOP de COM+
       Filtros de datos globales.
       Si lo anterior no puede modificarse, ejecutar IIS6.0 en el modo de
        aislamiento de IIS5.0
           Carga W3Core dentro de INETINFO, como hace OOP en IIS5.0
Seguridad en IIS 6.0
Seguridad en la instalación
   Instalación limpia
       IIS no se instala en una
        instalación limpia por
        defecto.
       Utilizar el asistente
        Configure su Servidor
        para instalar el rol de
        servidor de aplicaciones.
        Instala:
           IIS 6.0
           FPSE (deshabilitado)
           ASP.NET (deshabilitado)
   Actualizaciones
       W3SVC deshabilitado
        salvo que se instale
        URLScan antes de la
        actualización.
    Seguridad en IIS 6.0
    Reducción de la superficie de ataque
    Lista de Restricciones

        Sólo ejecuta peticiones para
         extensiones y CGIs permitidos.
        Por defecto no se permiten
         extensiones ni CGI
        Si se solicita una extensión o CGI
         no permitidos, se devuelve un
         error 404.2
        Usar el nodo Web Service
         Extensions en MMC para permitir
         o prohibir extensiones y CGIs
    Extensiones de archivo conocidas
        Únicamente suministra peticiones
         definidas en MIMEMAP
        Error 4.403 para peticiones no
         incluidas en MIMEMAP
    Consideraciones
        Si se usa Visual Studio .NET,
         definir los archivos .tmp en
         MIMEMAP
        Visual Studio .NET resuelve esto
         en SP1.
Seguridad en IIS 6.0
Identidad del Proceso de Trabajo configurable
   El Proceso de trabajo puede
    iniciarse como:
       Servicio Network (default)
       Local system
       Local service
       ID preconfigurado
   IIS_WPG
       Nuevo grupo de usuarios
       Recursos IIS puestos
        dentro de una ACL en este
        grupo
       Devuelve errores 503 si la
        cuenta configurada no
        forma parte de IIS_WPG
   Consideraciones
       El mapeo de Passport para
        Directorio Activo exige uso
        de LocalSystem
       Kerberos puede necesitar
        configuración adicional
        para este ID
Seguridad en IIS 6.0
Cambios de seguridad desde IIS 5.0

   Sub-autenticación no se instala por defecto en
    instalaciones limpias
       Efecto: las passwords pueden caducar para las cuentas
        IWAM y IUSR
       Solución: instalar SubAuth o resolverlo con un esquema
        de sincronización propio
   URLs restringidas a un máximo de 16Kb de
    longitud con un parsing más restrictivo
       No se admiten caracteres extraños, etc.
   El contenido en Inetpub se protege contra escritura
   Las herramientas de línea de comandos solo las
    pueden utilizar los administradores.
Seguridad en IIS 6.0
Recomendaciones

   Hacer una instalación limpia en lugar de
    actualización – más seguro por defecto
       No hay aún una herramienta de bloqueo para que IIS6.0
        pueda gestionar las actualizaciones
   Ejecutar los archivos W3WP.exe de los pools de
    aplicaciones como Network Service (valor por
    defecto)
   Permitir solamente las extensiones que necesitan
    las aplicaciones.
       Prohibir todo lo demás para reducir la superficie de ataque
   Revisar los logs de visitas a IIS y el log HTTPERR
       Log de visitas de IIS: códigos de substatus guardados en
        formatos válidos para W3C y binarios.
       HTTPERR: detalles de los motivos para errores 503 y
        finalización de conexiones
Rendimiento en IIS 6.0
Mejor rendimiento en el mundo real
   Benchmarks de e-commerce de Doculabs. Medidas del rendimiento global de
    algunos escenarios comunes en entornos de comercio electrónico.
       Logon, visualización de elementos, búsquedas, operaciones de carrito de la compra y
        pagos
       Cache de archivos estáticos, operaciones de BBDD, gestión del estado de sesión.


                                                                  1P: 49%
                                                                 4P: 120%
                                                                 8P: 170%
        Reqs/sec




                                                               1P - 4P: 3.3x
                                                               1P - 8P: 5.0x
                                                                Win2K
                                                                Win.NET

                   1P            4P              8P
Rendimiento en IIS 6.0
Respuestas cacheadas en HTTP.SYS
   Contenido dinámico cacheado, suministrado directamente desde
    HTTP.SYS
       Podría operar al doble de velocidad cuando se suministra desde el
        modo de transición del kernel – no usuario
       Sus aplicaciones no reciben las peticiones si se sirven desde la cache
       Archivos estáticos cacheados por defecto
          Cache inteligente: sólo se cachea contenido estático muy solicitado
   Rellamada al API de invalidación
   Se potencia también la cabecera “Expires” para establecer un
    timeout automático para las respuestas cacheadas.
   Consideraciones
       Utilizar en respuestas dinámicas si pueden mantenerse por un cierto
        periodo de tiempo
            Se reduce la carga en el servidor si la respuesta puede entregarse desde la
             cache
       ASP.NET -> usar la directiva OutputCache Location=“Server” para
        marcar una respuesta como cacheable.
Rendimiento en IIS 6.0
traza del Capacity Planning

   Se conecta en posiciones clave durante el tiempo de
    vida de la petición, desde el inicio de la misma hasta el
    envío definitivo de la respuesta:
       HTTP Start, Route, Cache Hit, End
       ISAPI Filter Start/Stop (nombre del filtro, notificación)
       ISAPI Extension Start/Stop
       ASP Start/Stop
       ASP.net Start/Stop
   Útil en depuración también - ¿dónde se bloquea la
    petición?
   Ejemplo de un cliente: MS.COM
       Utiliza esto para localizar páginas de alto consumo de CPU
       También se emplea para diagnosticar dónde se producen
        retrasos
Rendimiento en IIS 6.0
Jardines Web y afinidad de procesador                                                          Web Garden
                                                                                            Application Pool

   Jardines web:
       Pools de aplicaciones con más de                                                        W3WP.exe
        un proceso de trabajo                                                                 W3WP.exe

       Enrutamiento basado en                    SVCHOST.exe                            W3WP.exe
        conexión dentro del Jardín                                                         W3Core
                                                                                          W3Core
   Afinidad de procesador                                                              W3Core
       Asignación de procesos de un
                                                  W3SVC
                                                                                                 All Apps
        pool de aplicaciones a una o más                                                         Apps
                                                                                             All(no OOP)




                                                                    W3 Process Mgr
        CPUs




                                                    W3 Config Mgr
                                                                                        All Apps
                                                                                            (no OOP)
       Configuración basada en
        máscaras                                                                        (no OOP)
                                                                                                ISAPI Filters
   Consideraciones                                                                          ISAPI Filters

       Jardines Web                                                                    ISAPI Filters
           Posibles incidencias en multi-
            instancia
           Reciclaje: posible todo a la vez
       Afinidad
           Crear silos virtuales de trabajo en
                                                  kernel


            grandes sistemas MP
           Asignar de acuerdo con la                                                HTTP.SYS
            arquitectura MP (asignar a CPUs
            en el mismo bloque físico)
Rendimiento en IIS 6.0
Tiempo de inactividad y arranque por demanda
   Tiempo de inactividad
       Se detiene un proceso si está inactivo por encima de un
        periodo de tiempo prefijado
       Libera recursos para aplicaciones activas.
       Las aplicaciones siguen estando disponibles aun cuando el
        proceso de trabajo está inactivo y se ha detenido
   Arranque por demanda
       Sólo se inicia el proceso de trabajo si existe demanda para
        el pool de aplicaciones
   Consideraciones
       Usar el timeout por inactividad para liberar recursos para
        otras aplicaciones de uso más intensivo
       Valorar el desactivar la función de timeout si el arranque de
        la aplicación lleva mucho tiempo
       Nota: la finalización de un proceso inactivo causa:
           Pérdida de la cache en memoria
Administración de IIS 6.0
Mejoras en la Metabase
   Metabase en XML
       Metabase guardada en XML
       Autoversión: como un
        backup automático
   Editar mientras trabaja            ADSI                  UI
       Se pueden hacer cambios
        directamente al archivo
        metabase.xml mientras IIS         Admin Base Objects
        está ejecutándose.
       Se puede usar cualquier
        editor: Notepad, .NET, PERL,
        etc.
   Consideraciones
       Es más seguro usar ADSI o la
        UI para hacer cambios en la    Metabase.xml   MBSchema.xml
        metabase
       Nota: Metabase.bin sigue
        existiendo, pero solo como
        un archivo de compromiso
        para las aplicaciones
        antiguas.
    Administración de IIS 6.0
    Mejoras en la metabase: Import/Export
    Importación/exportación de la
     configuración de la metabase
     a/desde XML
    Opciones:
         Exportar/importar propiedades    ADSI                  UI
          heredadas
         Exportar/importar un nodo
          solamente (o todo el subárbol)      Admin Base Objects
         Fichero exportado cifrado con
          password.
    Uso con ASP.NET XCOPY para
     instalar aplicaciones
     1.   Se exporta la configuración de
          la metabase de IIS6.0 para una   Metabase.xml   MBSchema.xml
          aplicación .NET
     2.   Se guarda en el directorio de
          aplicaciones .NET
     3.   Se importa el archivo de
          configuración de la metabase
          después de XCOPY
Administración en IIS 6.0
Proveedor WMI y nuevas herramientas de línea
de comandos
   IIS WMI Provider
       Soporte para consultas               Command
       Asociaciones                         Line Tools
       Transformable en script
   Nuevas herramientas de          ADSI           WMI      UI
    línea de comandos
       Orientación a tareas           Admin Base Objects
       Herramientas soportadas –
        actualmente en
        %windir%\system32
       Basadas en WMI Provider
       Ejemplo: usar
        IISCNFG.vbs como parte      Metabase.xml     MBSchema.xml
        de una estrategia de
        migración de aplicación
        .NET entre dos sistemas
        con IIS6.0
Resumen
   IIS 6.0 se ha mejorado al hacer que las
    aplicaciones Web sean mas:
       Seguras
       Fiables
       Escalables
       Manejables
Recursos
   Introducción a IIS 6.0 en TechNet:
    http://www.microsoft.com/windows.netserver/evaluation/overview/technologies/
    iis.mspx



   Introducción técnica a IIS 6.0:
    http://www.microsoft.com/windows.netserver/docs/IISOverview.doc