Dans Windows Azure: que sont le rôle Web, le rôle de travail et le rôle de machine virtuelle?

115

L'application sur laquelle je travaille contient un rôle Web: c'est une simple application Web. J'avais besoin d'héberger l'application dans Windows Azure, j'ai donc créé un rôle Web. Je veux en fait savoir à quoi servent ces rôles. Quelle est leur signification en termes de codage ou de stockage?

Kuntady Nithesh
la source

Réponses:

101

EDIT 3/3/2013 - mis à jour pour référencer les points de terminaison UDP, les machines virtuelles et d'autres langues

EDIT 6/6/2013 - mis à jour pour refléter l'arrêt du rôle de machine virtuelle et mettre à jour les images du système d'exploitation de base du rôle Web / worker vers Windows Server 2012

Bon lien par @Vladimir. Un peu plus de précision: tous les rôles (web, worker) sont essentiellement Windows Server. Les rôles Web et Worker sont presque identiques:

  • Les rôles Web sont des machines virtuelles Windows Server avec IIS activé
  • Les rôles de travail sont des machines virtuelles Windows Server avec IIS désactivé (et vous pouvez l'activer manuellement)
  • Les rôles de machine virtuelle sont des images Windows Server 2008 que vous créez localement via Hyper-V et que vous téléchargez sur Azure (et sont désormais interrompues et ne sont plus disponibles à compter du 31 mai 2013
  • Les machines virtuelles sont des images Windows ou Linux créées dans Azure, stockées en tant que vhd dans votre propre stockage et présentent plusieurs améliorations par rapport au rôle de machine virtuelle. Par exemple: puisque le vhd se trouve dans votre propre compte de stockage, vous pouvez facilement créer un modèle d'image à partir de votre vhd, le copier dans un nouveau vhd ou même le télécharger sur VM Depot (Linux uniquement).

Pour répondre à votre question sur ce qu'il faut faire avec ces rôles: Le kit de formation sur la plateforme (mentionné ci-dessous) vous donnera beaucoup de bonnes idées et exemples, mais voici quelques cas d'utilisation simples:

  • Vous pouvez exécuter n'importe quel code qui expose un point de terminaison tcp, http, https ou udp (applications Web, services SOAP / REST, etc.). Cependant, vous devez penser à la manière sans état de faire les choses: si vous avez plus d'une instance de VM en cours d'exécution, le trafic utilisateur est réparti entre ces instances. Le kit de formation de la plate-forme vous montrera comment utiliser le stockage ou le cache pour gérer cela.
  • Vous pouvez exécuter du code qui vit hors d'une file d'attente ou d'un minuteur. Vous avez peut-être des tâches à la demande telles que la génération de vignettes de photos ou des calculs basés sur les entrées de l'utilisateur. Ceux-ci n'ont pas besoin de points de terminaison disponibles en externe. Vous pouvez pousser vos demandes vers une file d'attente, puis exécuter une tâche qui alimente simplement cette file d'attente (et vous pouvez faire évoluer ce processus sur plusieurs instances, avec des messages de file d'attente consommés par toutes les instances).
  • Vous pouvez exécuter .NET, Java, php, python, node, ruby, etc. Il vous suffit de distribuer le code d'exécution approprié avec le code de votre projet. Tous les langages peuvent effectuer des appels REST vers l'API Azure, et plusieurs langages (y compris ceux mentionnés ci-dessus) ont des SDK qui s'en chargent pour vous. Tous les SDK de langue sont ici , avec le code source sur github, ici .
  • Avec un rôle de VM, vous pouvez installer et exécuter des logiciels avec des installations très complexes / chronophages, des installations nécessitant une intervention manuelle et des installations qui ne peuvent pas être automatisées de manière fiable. Dans ce cas, vous devez gérer la maintenance du système d'exploitation. Au-delà du rôle de machine virtuelle, il existe maintenant des machines virtuelles, qui fournissent une construction de machines virtuelles basée sur le cloud ainsi qu'une prise en charge de Windows et de Linux. Je suggérerais des machines virtuelles sur le rôle de VM.

Avec les rôles Web et Worker, le système d'exploitation et les correctifs associés sont pris en charge pour vous; vous créez les composants de votre application sans avoir à gérer une VM.

Avec les rôles de machine virtuelle, vous créez une image Windows Server complète, vous y ajoutez les hooks Azure et poussez la machine virtuelle entière dans le cloud (puis maintenez l'image de machine virtuelle au fil du temps).

Avec les machines virtuelles, vous choisissez simplement une image de système d'exploitation dans une galerie, qui est créée pour vous et stockée en tant que vhd dans le stockage blob. Vous pouvez ensuite RDP / ssh et le configurer comme vous le souhaitez.

Porter le chapeau d'architecte, c'est là que ça devient amusant et intéressant. Vous pouvez exécuter des services Web dans un rôle Web ou un rôle de travail (et pouvoir ouvrir des ports dans l'un ou l'autre); Vous pouvez héberger Tomcat ou d'autres serveurs Web dans un rôle de travailleur. vous pouvez choisir de combiner un site Web et des services dans un seul rôle, ou de les diviser en plusieurs rôles pour différents besoins d'évolutivité.

Pour bien commencer, jetez un œil au kit de formation sur plateforme et commencez à parcourir les exercices.

David Makogon
la source
Pouvez-vous réellement exposer les points de terminaison TCP sur un rôle Web? Selon smarx, ils doivent tous être HTTP: stackoverflow.com/questions/2926737/… Cela fait une autre différence subtile entre les rôles.
Richard Astbury
J'ai répondu à ma propre requête, vous pouvez ouvrir le port tcp, mais pas le lier au site Web.
Richard Astbury
2
Richard - Alors que c'était le cas auparavant, les points de terminaison peuvent désormais être tcp, http ou https, quel que soit le type de rôle. J'ai créé un exemple d'application qui a un mélange de tcp et http, tout en démontrant la nouvelle mise à jour 25-endpoint-per-role il y a quelques mois - voir ici pour le blog - davidmakogon.com/2011/05/…
David Makogon
Désolé, je voulais dire la démonstration de 25 points de terminaison par déploiement. Et ... vu votre autre commentaire, j'ai peut-être répondu à la mauvaise question. :)
David Makogon
@DavidMakogon - Qu'est-ce qui a remplacé le rôle Web et le rôle de travailleur? J'ai besoin de déployer un site Web avec PhantomJS qui nécessite GDI +. GDI + n'est pas entièrement pris en charge par Web Jobs. J'espérais pouvoir utiliser un rôle Web. Qu'est-ce qui a remplacé le rôle Web? J'ai aimé le concept de machine virtuelle qui a été corrigé et maintenu par Azure. Merci!
Martin
30
  • Les rôles Web sont des applications Web hébergées dans IIS.
  • Les rôles de travail sont des processus qui peuvent faire un certain travail (c'est-à-dire compresser automatiquement les images téléchargées, faire des choses chaque fois que quelque chose change dans votre base de données, obtenir de nouveaux messages de la file d'attente et traiter, vous le nommez)
  • Les rôles de VM hébergent des VM
Dennis Traub
la source
10
En fait, les rôles Web et les rôles de travail sont des machines virtuelles.
David Makogon
C'est une réponse beaucoup plus simple et désolé, ce ne sont pas des machines virtuelles ... pouvez-vous imaginer quel serait le coût d'une solution à plusieurs niveaux avec plusieurs rôles de travail exécutés en arrière-plan s'il s'agit d'une machine virtuelle distincte? blogs.msdn.microsoft.com/silverlining/2012/06/27/…
Clarence
pour être plus spécifiques, les rôles de travail sont des machines virtuelles sans IIS
dejjub-AIS
21

J'ai rencontré cette question / réponse SO il y a plusieurs jours et j'ai trouvé les réponses fournies un peu au-dessus de ma tête (je suis nouveau chez Azure et Web). J'ai trouvé ce résumé dans les principes de base d'Azure ce soir, ce que je pensais être un bon aperçu de haut niveau des principales différences entre les rôles de travail et Web:

La principale différence entre les deux est qu'une instance d'un rôle Web exécute IIS, contrairement à une instance d'un rôle de travail. Cependant, les deux sont gérés de la même manière et il est courant pour une application d'utiliser les deux. Par exemple, une instance de rôle Web peut accepter des demandes d'utilisateurs, puis les transmettre à une instance de rôle de travail pour traitement. Pour augmenter ou réduire votre application, vous pouvez demander à Windows Azure de créer plus d'instances de l'un ou l'autre rôle ou d'arrêter les instances existantes. Et comme pour les machines virtuelles Windows Azure, vous êtes facturé uniquement pour le temps d'exécution de chaque instance de rôle Web ou de travail.

Si vous êtes nouveau dans le développement Azure, je vous recommande vivement de lire l'article complet ici: Introduction à Windows Azure

J'espère que cela aide quelqu'un autant que cela a aidé à allumer l'ampoule pour moi.

BrianLegg
la source
3

Les rôles Web dans Windows Azure sont à usage spécial et fournissent un serveur Web IIS (Internet Information Services) dédié utilisé pour l'hébergement des applications Web frontales. Vous pouvez déployer rapidement et facilement des applications Web sur des rôles Web, puis augmenter ou réduire vos capacités de calcul pour répondre à la demande.

Sufy Khan
la source