2. Arquitectura de IIS

1. Evolución de IIS

  • IIS presenta 6 versiones distintas:
    • desde IIS 1 en 1996 sobre Windows NT 3.51 Server.
    • hasta IIS 6 sobre Windows 2003.
  • Importantes cambios en arquitectura y rendimiento en las distintas versiones.

 

1.1 Arquitectura hasta IIS 4

  • Arquitectura monolítica: ejecución en un único proceso llamado inetinfo.exe
  • Aplicaciones web con DLLs vía ISAPI (Internet Services Application Programming Interface), como alternativa a CGI (Common Gateway Interface).

 

1.2 ISAPI vs. CGI

ISAPI
CGI
  • DLLs en C
  • Ejecución in-process
    • Una instancia puede bloquear todo el servidor.
  • Se crean instancias bajo demanda
  • Una instancia puede atender múltiples peticiones
  • Mayor rendimiento
  • Scripts en PERL
  • Ejecución out-of-process
  • El fallo en una instancia se restringe a su proceso.
  • Se crean instancias bajo demanda
  • Una instancia atiende una única petición
  • Mayor fiabilidad

 

1.3 Arquitectura en IIS 4 

  • Aislamiento de procesos (process isolation)
    • Permite la ejecución out-of-process.
  • Aparece la metabase como repositorio de la configuración de IIS en lugar del registro de Windows.
    • Mayor rendimiento al poder estar residente en memoria.
  • IIS Admin Service: proceso que controla los demás servicios de IIS y gestiona la metabase.
  • Se rompe la estructura monolítica, con lo que el colapso de una aplicación ejecutándose en un proceso aislado no afecta a todo el servidor.
  • Un proceso aislado puede ser detenido o reiniciado independientemente del resto.
  • Se pueden reiniciar automáticamente los procesos aislados.
  • Los procesos aislados presentan un menor rendimiento en ejecución.
  • Se consumen más recursos.
  • No hay comunicación entre procesos aislados.

 

1.4 Arquitectura en IIS 5

  • Se refina el concepto de aislamiento de procesos, convirtiéndose en 3 niveles de Protección de Aplicación:
    • Low (IIS Process): La aplicación se ejecuta in-process como parte de inetinfo.exe (como en la arquitectura monolítica inicial).
    • Medium (Pooled): Es el nivel por defecto, en el que la aplicación se ejecuta out-of-process en un proceso anfitrión independiente llamado dllhost.exe, junto con las demás aplicaciones que tengan este mismo nivel de protección (aislamiento).
    • High (Isolated): La aplicación se ejecuta out-of-process en un proceso dllhost.exe propio y exclusivo.

 

  • Se aísla la ejecución de aplicaciones del proceso principal del servidor, sin sobrecargar la demanda de recursos.
  • Las aplicaciones con nivel de protección medio (pooled) pueden comunicarse entre sí.
  • Reinicio automático de procesos aislados.
  • Concentración de un elevado número de aplicaciones en un mismo proceso.
  • La consulta de variables ISAPI a nivel de servidor son lentas.

 

1.5 Arquitectura en IIS 6

Diferencias principales con respecto a IIS 5:

  • Gestión de peticiones HTTP en el kernel.
  • Modo de aislamiento de procesos de trabajo (Worker process isolation mode) O BIEN modo aislado de IIS 5.0
  • Se admiten múltiples pools de aplicaciones configurables de forma independiente.
  • Se incluye el WAS (Web Administration Service), que gestiona y configura el servicio WWW.
  • HTTP.sys
    • Gestiona las conexiones.
    • Recibe y enruta las peticiones, asignándolas a la cola de ejecución correspondiente.
    • Se ejecuta en el kernel del S.O.
      • Mayor rendimiento.
      • Mayor fiabilidad (no ejecuta código de usuario).
      • Mayor capacidad de respuesta (puede almacenar peticiones aunque la aplicación destino esté inactiva).
    • Gestiona una caché en modo kernel.

 

 

  • WAS
    • IIS Admin gestiona FTP, NNTP, y SMTP, pero no HTTP.
    • No se permiten aplicaciones web in-process: todas se ejecutan en pools de aplicaciones.
    • Configuration Manager:
      • Almacena y recupera la información de sitios web de la metabase.
      • Inicializa y actualiza la tabla de enrutamiento de peticiones.
    • Application Pool Manager:
      • Gestiona los worker processes asociados a los pools de aplicaciones.
    • Se ejecuta como una instancia de svchost.exe
  • Procesos de trabajo (worker processes)
    • Atienden las peticiones en las colas de los grupos de aplicaciones.
    • Se ejecutan como instancias de w3wp.exe
    • Aíslan aplicaciones entre sí y de los procesos críticos de IIS.
    • El WAS monitoriza su estado, los recicla periódicamente y puede reiniciarlos automáticamente.

 

 

  • Grupos de aplicaciones (application pools)
    • Un grupo de aplicaciones consiste en:
      • Una cola de peticiones en modo kernel
      • Uno o más procesos de trabajo
    • De aquí surgen los 3 modelos que se pueden configurar en IIS 6:
      • 1 proceso de trabajo con 1 aplicación web
      • 1 proceso de trabajo con varias aplicaciones web
      • Varios procesos de trabajo con una o varias aplicaciones web.

       

Figura 1: Similar a las aplicaciones out-of-process de IIS 4 o a los procesos aislados de IIS 5, pero con mejor rendimiento ya que no hay trasiego de datos entre procesos distintos en modo usuario.

Figura 2: Similar a las aplicaciones con un nivel de protección medio (pooled) en IIS 5, pero en IIS 6 podemos crear tantas como sean necesarias.

Figura 3: “Web garden” à Permite que una o más aplicaciones web estén atendidas por varios procesos de trabajo y dar soporte a aplicaciones críticas.

  • Ventajas de los grupos de aplicaciones:
    • Permiten aislar aplicaciones entre sí
    • Se requieren menos recursos que con los modelos de arquitecturas previas de IIS, permitiendo aumentar el número de aplicaciones web atendidas con un rendimiento aceptable.
    • Permiten agrupar aplicaciones según criterios de afinidad o rendimiento.

 

Esquema global del modo de aislamiento de procesos de trabajo

 

 

Esquema global del modo aislado de IIS 5 

 

 

Fichero pdf para descargar aquí.

vidalmb_admin – Jue, 17/08/2006 – 02:43