En Windows Azure: ¿Qué son la función web, la función de trabajador y la función de máquina virtual?

115

La aplicación en la que trabajo contiene un rol web: es una aplicación web simple. Necesitaba alojar la aplicación en Windows Azure, así que creé un rol web. De hecho, quiero saber para qué sirven estos roles. ¿Cuál es su significado en cuanto a codificación o almacenamiento?

Kuntady Nithesh
fuente

Respuestas:

101

EDITAR 3/3/2013: actualizado para hacer referencia a puntos finales UDP, máquinas virtuales y más idiomas

EDITAR 6/6/2013: actualizado para reflejar la interrupción del rol de VM y actualización a las imágenes del sistema operativo de línea de base de rol web / trabajador a Windows Server 2012

Buen enlace de @Vladimir. Un poco más de aclaración: todos los roles (web, trabajador) son esencialmente Windows Server. Los roles web y de trabajador son casi idénticos:

  • Los roles web son máquinas virtuales de Windows Server con IIS habilitado
  • Los roles de trabajo son máquinas virtuales de Windows Server con IIS deshabilitado (y puede habilitarlo manualmente)
  • Los roles de máquina virtual son imágenes de Windows Server 2008 que se construyen localmente a través de Hyper-V y se cargan en Azure (y ahora están descontinuadas y ya no están disponibles a partir del 31 de mayo de 2013
  • Las máquinas virtuales son imágenes de Windows o Linux creadas en Azure, almacenadas como un vhd en su propio almacenamiento y tienen varias mejoras sobre el rol de VM. Por ejemplo: dado que el vhd está en su propia cuenta de almacenamiento, puede crear fácilmente una plantilla de imagen desde su vhd, copiarla en un nuevo vhd o incluso cargarla en VM Depot (solo Linux).

Para responder a su pregunta sobre qué hacer con estos roles: El kit de capacitación de la plataforma (que se menciona a continuación) le brindará muchas buenas ideas y ejemplos, pero aquí hay algunos casos de uso sencillos:

  • Puede ejecutar cualquier código que exponga un punto final tcp, http, https o udp (aplicaciones web, servicios SOAP / REST, etc.). Sin embargo, debe pensar en la forma sin estado de hacer las cosas: si tiene más de una instancia de VM en ejecución, el tráfico de usuarios se distribuye entre esas instancias. El kit de capacitación de la plataforma le mostrará cómo usar el almacenamiento o la caché para lidiar con esto.
  • Puede ejecutar código que vive de una cola o un temporizador. Tal vez tenga tareas bajo demanda como la generación de miniaturas de fotos o cálculos basados ​​en la entrada del usuario. Estos no necesitan puntos finales disponibles externamente. Puede enviar sus solicitudes a una cola y luego tener una tarea en ejecución que simplemente se alimenta de esta cola (y puede escalar este proceso en varias instancias, con los mensajes de la cola consumidos por todas las instancias).
  • Puede ejecutar .NET, Java, php, python, node, ruby, etc. Solo necesita distribuir el código de tiempo de ejecución apropiado junto con el código de su proyecto. Todos los idiomas pueden realizar llamadas REST a la API de Azure, y varios idiomas (incluidos los mencionados anteriormente) tienen SDK que se encargan de esto por usted. Todos los SDK de idiomas están aquí , con el código fuente en github, aquí .
  • Con un rol de VM, puede instalar y ejecutar software con instalaciones muy complejas / que requieren mucho tiempo, instalaciones que requieren intervención manual e instalaciones que no pueden automatizarse de manera confiable. En este caso, debe ocuparse del mantenimiento del sistema operativo. Más allá del rol de VM, ahora hay máquinas virtuales, que brindan construcción de VM basadas en la nube junto con soporte para Windows y Linux. Sugeriría máquinas virtuales sobre el rol de VM.

Con los roles Web y Worker, el sistema operativo y los parches relacionados están a su cargo; usted crea los componentes de su aplicación sin tener que administrar una máquina virtual.

Con los roles de VM, crea una imagen completa de Windows Server, le agrega los enlaces de Azure y envía toda la VM a la nube (y luego mantiene la imagen de VM a lo largo del tiempo).

Con Virtual Machines, simplemente elige una imagen del sistema operativo de una galería, que se crea para usted y se almacena como un vhd en el almacenamiento de blobs. Luego, RDP / ssh y lo configura como desee.

Con el sombrero de arquitecto, aquí es donde se vuelve divertido e interesante. Puede ejecutar servicios web en un rol web o un rol de trabajador (y poder abrir puertos en cualquiera de ellos); Puede alojar Tomcat u otros servidores web en un rol de trabajador. puede optar por combinar un sitio web más servicios en un solo rol, o dividirlos en múltiples roles para diferentes necesidades de escalabilidad.

Para un buen comienzo, eche un vistazo al Platform Training Kit y comience a recorrer los ejercicios.

David Makogon
fuente
¿Puede realmente exponer puntos finales tcp en un rol web? De acuerdo con smarx, todos tienen que ser HTTP: stackoverflow.com/questions/2926737/… Esto hace otra sutil diferencia entre los roles.
Richard Astbury
He respondido mi propia consulta, puede abrir el puerto tcp, pero no vincularlo al sitio web.
Richard Astbury
2
Richard: si bien ese solía ser el caso, los puntos finales ahora pueden ser tcp, http o https, independientemente del tipo de rol. Creé una aplicación de muestra que tiene una mezcla de tcp y http, mientras hacía una demostración de la nueva actualización de 25 puntos finales por función hace unos meses; consulte aquí la publicación del blog: davidmakogon.com/2011/05/…
David Makogon
Lo siento, me refería a demostrar 25 puntos finales por implementación. Y ... al ver tu otro comentario, es posible que haya respondido la pregunta incorrecta. :)
David Makogon
@DavidMakogon - ¿Qué ha reemplazado el rol web y el rol del trabajador? Necesito implementar un sitio web con PhantomJS que requiera GDI +. GDI + no es totalmente compatible con Web Jobs. Esperaba poder utilizar un rol web. ¿Qué ha reemplazado al rol web? Me gustó el concepto de VM que fue parcheado y mantenido por Azure. ¡Gracias!
Martin
30
  • Los roles web son aplicaciones web alojadas en IIS.
  • Los roles de trabajador son procesos que pueden hacer algo de trabajo (es decir, comprimir automáticamente las imágenes cargadas, hacer cosas cada vez que algo cambia en su base de datos, obtener nuevos mensajes de la cola y el proceso, lo que sea)
  • Los roles de VM alojan VM
Dennis Traub
fuente
10
En realidad, los roles web y los roles de trabajo son máquinas virtuales.
David Makogon
Esta es una respuesta mucho más simple y lo siento, no son VM ... ¿podría imaginar cuál sería el costo para una solución de varios niveles con múltiples roles de trabajador ejecutándose en segundo plano si es una VM separada? blogs.msdn.microsoft.com/silverlining/2012/06/27/…
Clarence
para ser más específicos, los roles de los trabajadores son máquinas virtuales sin IIS
dejjub-AIS
21

Me encontré con esta pregunta / respuesta SO hace varios días y encontré las respuestas proporcionadas un poco por encima de mi cabeza (soy nuevo en Azure y Web). Encontré este resumen en los fundamentos de Azure esta noche, que pensé que era una buena descripción general de alto nivel de las diferencias principales entre los roles de trabajador y web:

La principal diferencia entre los dos es que una instancia de un rol web ejecuta IIS, mientras que una instancia de un rol de trabajador no. Sin embargo, ambos se administran de la misma manera, y es común que una aplicación use ambos. Por ejemplo, una instancia de rol web podría aceptar solicitudes de usuarios y luego pasarlas a una instancia de rol de trabajador para su procesamiento. Para escalar su aplicación hacia arriba o hacia abajo, puede solicitar que Windows Azure cree más instancias de cualquiera de los roles o cierre las instancias existentes. Y de manera similar a las máquinas virtuales de Windows Azure, solo se le cobra por el tiempo que se ejecuta cada instancia de rol de trabajo o web.

Si es nuevo en el desarrollo de Azure, le recomiendo que lea el artículo completo aquí: Introducción a Windows Azure

Espero que esto ayude a alguien tanto como me ayudó a encender la bombilla.

BrianLegg
fuente
3

Los roles web en Windows Azure tienen un propósito especial y proporcionan un servidor web dedicado de Internet Information Services (IIS) que se utiliza para alojar aplicaciones web front-end. Puede implementar rápida y fácilmente aplicaciones web en roles web y luego escalar sus capacidades informáticas hacia arriba o hacia abajo para satisfacer la demanda.

Sufy Khan
fuente