45

Windows Azure : Plongée en eaux profondes

  • Upload
    cissy

  • View
    35

  • Download
    0

Embed Size (px)

DESCRIPTION

CLO302. Windows Azure : Plongée en eaux profondes. 8 février 2011 Bernard Ourghanlian CTO, CSO & DPE Lead Microsoft France. Sommaire. Introduction au Cloud Les fondamentaux de Windows Azure Le fonctionnement interne du Fabric Controller Mettre à jour un service - PowerPoint PPT Presentation

Citation preview

Page 1: Windows Azure :  Plongée en eaux profondes
Page 2: Windows Azure :  Plongée en eaux profondes

2

Windows Azure : Plongée en eaux profondes8 février 2011Bernard OurghanlianCTO, CSO & DPE LeadMicrosoft France

CLO302

Page 3: Windows Azure :  Plongée en eaux profondes

3

Sommaire

• Introduction au Cloud• Les fondamentaux de Windows Azure• Le fonctionnement interne du Fabric Controller• Mettre à jour un service• Mises à jour du système d’exploitation hôte• La réparation d’un service

Page 4: Windows Azure :  Plongée en eaux profondes

4

Les fondamentaux du Cloud

• Infrastructure as a Service (IaaS) : ressources de calcul et de stockage de base– Serveurs à la demande– Ex : Amazon EC2, VMware vCloud

• Platform as a Service (PaaS): infrastructure applicative du Cloud– Environnement d’hébergement d’applications à la demande– Ex : Google AppEngine, Salesforce.com, Windows Azure

• Software as a Service (SaaS): applications cloud– Applications à la demande– Ex : GMail, Microsoft Office Web Companions/O365

Page 5: Windows Azure :  Plongée en eaux profondes

5

Les bénéfices du Cloud• Le Cloud permet de fournir de la capacité à bas

coût, à la demande

= Géré pour vous Serveurs isolés

IaaS PaaS SaaS

Applications

Runtimes

Base de données

Système d’exploitation

Virtualisation

Serveur

Stockage

Réseau

Windows Azure

Page 6: Windows Azure :  Plongée en eaux profondes

6

Windows Azure• Windows Azure est un système d’exploitation pour le Datacenter

• Modèle : traiter le Datacenter comme une machine• Traite la gestion des ressources, le provisionnement et la

surveillance• Gère le cycle de vie des applications• Permet aux développeurs de se concentrer sur la logique

métier• Fournit un réservoir partagé de ressources de calcul, de stockage

et de réseau• Stockage, calcul et réseau virtualisés• Illusion de ressources sans limites

• Fournit des blocs de base communs pour construire des applications distribuées• File d’attente fiable, stockage structuré simple, stockage SQL• Des services applicatifs comme contrôle d’accès et connectivité

Page 7: Windows Azure :  Plongée en eaux profondes

7

Composants de Windows Azure

PaaS - Windows Azure

Applications Modèle de Service Windows Azure

Runtimes .NET 3.5/4, ASP .NET, PHP

Système d’exploitation

Système d’exploitation compatible Windows Server 2008 ou 2008 R2

Virtualisation Hyperviseur Windows Azure

Serveur Blades/Containers Microsoft

Base de données

SQL Azure

Stockage Stockage Windows Azure (Blob, Queue, Table)

Réseau Réseau configuré pour Windows Azure

Page 8: Windows Azure :  Plongée en eaux profondes

8

Sommaire

• Introduction au Cloud• Les fondamentaux de Windows Azure• Le fonctionnement interne du Fabric Controller• Mettre à jour un service• Mises à jour du système d’exploitation hôte• La réparation d’un service

Page 9: Windows Azure :  Plongée en eaux profondes

9

Fonctionnalités de base de Windows Azure• Configuration et déploiement :

• Gestion de certificats (par exemple SSL)• Points de terminaison (endpoints) publics à

équilibrage de charge• Configuration et découverte des endpoints

internes• Opérations :

• Gestion de l’accès aux bureaux distants• Mises à jour automatisées des systèmes

d’exploitation et des runtimes• Mises à jour coordonnées

• Disponibilité : • Surveillance de la santé de l’environnement• Disponibilité garantie par SLA

Page 10: Windows Azure :  Plongée en eaux profondes

10

Modéliser des Applications Cloud • Une application Cloud est typiquement construite à l’aide de divers

composants• Front End : par exemple : des serveurs Web à équilibre de charge

stateless• Middle tier : par exemple : traitement des commandes, encodage• Stockage Back End : par exemple : tables SQL ou fichiers• Plusieurs instances de chacun pour des raisons de passage à l’échelle

et pour la disponibilité

Front-End

Application Cloud

Front-End

HTTP/HTTPSWindows

AzureStorage,

SQL Azure

Equilibrage de charge Middle-

Tier

Page 11: Windows Azure :  Plongée en eaux profondes

11

Le modèle de service Windows Azure• Une application Windows Azure est appelée un « service »

• Information de définition• Information de configuration• Au moins un « rôle »

• Les rôles sont comme des DLL au sein du « processus » d’un service• Collection de code avec un point d’entrée qui s’exécute dans sa

propre machine virtuelle• Il y a aujourd’hui trois types de rôles :

• Web Role : IIS7 et ASP.NET dans un système d’exploitation fourni par Windows Azure• IIS 7.5 maintenant

• Worker Role : code arbitraire dans un système d’exploitation fourni par Windows Azure• Middle tier

• VM Role : VHD téléchargé avec le système d’exploitation fourni par le client

Page 12: Windows Azure :  Plongée en eaux profondes

12

Contenu du rôle• Définition : – Nom du rôle– Type du rôle– Taille de VM (par exemple

small, medium, etc.)– Endpoints réseau

• Code : – Web/Worker Role : DLL

hébergée et autres exécutables– VM Role : VHD

• Configuration :– Nombre d’instances– Nombre d’update et fault domains

ServiceRole: Front-End

DefinitionType: WebVM Size: SmallEndpoints: External-1ConfigurationInstances: 2Update Domains: 2Fault Domains: 2

Role: Middle-Tier

DefinitionType: WorkerVM Size: LargeEndpoints: Internal-1ConfigurationInstances: 3Update Domains: 2Fault Domains: 2

Page 13: Windows Azure :  Plongée en eaux profondes

13

Fichiers de modèle de service• La définition du Service est dans

ServiceDefinition.csdef• La configuration du Service est dans

ServiceConfiguration.cscfg• Le programme CSPack compresse

(Zip) les binaires du service et la définition dans un fichier empaquetant le service (service.cscfg)

Page 14: Windows Azure :  Plongée en eaux profondes

14

Disponibilité : Update Domains• Objectif : Assurer que le service reste

disponible pendant qu’on le met à jour et que le système d’exploitation Windows Azure se met à jour

• Le système prend en compte la notion d’update domains quand il met à jour un service– 1/update domains = pourcentage du

service qui sera hors service– Défaut et max : 5, mais vous pouvez

outrepasser avec la propriété de définition du service upgradeDomainCount

• Le SLA de Windows Azure est basé sur au moins 2 update domains et deux instances de rôle dans chaque rôle

Front-End-1

Front-End-2

Update Domain 1

Update Domain 2

Middle Tier-1

Middle Tier-2

Middle Tier-3

Update Domain 3

Middle Tier-3

Front-End-2Front-End-1

Middle Tier-2Middle Tier-1

Page 15: Windows Azure :  Plongée en eaux profondes

15

Disponibilité : Fault Domains

• Objectifs : éviter les points de défaillance unique– Concept semblable aux update domains– Mais vous ne contrôlez pas les mises à

jour• Unité de défaillance basé sur la

topologie du Datacenter– Par exemple : un switch situé au-dessus

d’un rack de machines• Windows Azure considère les fault

domains lors de l’allocation des service roles– 2 fault domains par service– Essaye de répartir les rôles au maximum– Par exemple, ne place pas tous les rôles

dans le même rack

Front-End-1

Fault Domain

1

Fault Domain

2

Front-End-2

Middle Tier-2

Middle Tier-1

Fault Domain

3

Middle Tier-3

Page 16: Windows Azure :  Plongée en eaux profondes

16

Services RDFE

Portail de Service

Datacenter de Dublin

Déployer un Service dans le Cloud :vue d’avion• Le package correspondant au Service

est téléchargé sur le portail– Le Windows Azure Portal Service passe

le package de service au service Azure « Red Dog Front End » (RDFE)

– RDFE convertit le package de service en version native « RD »

• RDFE envoie le service au Fabric Controller (FC) en fonction de la région cible

• Le FC stocke l’image dans le référentiel , déploie et active le service

FC

Service

Page 17: Windows Azure :  Plongée en eaux profondes

17

Sommaire

• Introduction au Cloud• Les fondamentaux de Windows Azure• Le fonctionnement interne du Fabric Controller• Mettre à jour un service• Mises à jour du système d’exploitation hôte• La réparation d’un service

Page 18: Windows Azure :  Plongée en eaux profondes

18

Le Fabric Controller (FC)• Le « noyau » du système d’exploitation du Cloud

• Gère le hardware du Datacenter• Gère les services Windows Azure

• 4 principales responsabilités :• Affectation des ressources du

Datacenter• Provisionnement des

ressources du Datacenter• Gestion du cycle de vie

du Service• Gestion de l’état de santé

du Service• Entrées :

• Description des ressources hardware et réseau qu’il contrôlera

• Modèle de Service et binaires pour les applications Cloud

ServeurNoyauProcessus

DatacenterFabric ControllerService

Windows Kernel

Server

Word SQL Server

Fabric Controller

Datacenter

ExchangeOnline

SQL Azure

Page 19: Windows Azure :  Plongée en eaux profondes

19

Pour être clair avec les « Fabrics »…• Le Fabric Controller de Windows Azure n’a

absolument rien à voir avec AppFabric• AppFabric est une marque qui comprend :

• Windows Server AppFabric : un ensemble de composants pour construire des applications composites fondées sur Windows Communication Foundation et Windows Workflow Foundation

• Windows Azure AppFabric : Services Cloud pour connecter des applications Cloud et en interne• AppFabric Access Control Server • AppFabric Service Bus• AppFabric Cache• Construits comme des services Windows Azure

Page 20: Windows Azure :  Plongée en eaux profondes

20

Datacenter Architecture

TOR

LB LBAgg

PDU

LB LBAgg

LB LBAgg

LB LBAgg

LB LBAgg

LB LBAgg

Racks

Datacenter Routers

Aggregation Routers et

Load Balancers

TOR

PDU

TOR

PDU

TOR

PDU

TOR

PDU

TOR

PDU

TOR

PDU

TOR

PDU

TOR

PDU

TOR

PDU

TOR

PDU

TOR

PDU

TOR

PDU

TOR

PDU

TOR

PDU

……… … …

Top of RackSwitches

Power Distribution

Units

Nœud

s

Nœud

s

Nœud

s

Nœud

s

Nœud

s

Nœud

s

Nœud

s

Nœud

s

Nœud

s

Nœud

s

Nœud

s

Nœud

s

Nœud

sNœ

uds

Nœud

s

Page 21: Windows Azure :  Plongée en eaux profondes

21

Datacenters Windows Azure

Page 22: Windows Azure :  Plongée en eaux profondes

22

Architecture FC haut niveau• FC est une application distribuée, stateful qui s’exécute sur les nœuds

(blades) répartie au travers des fault domains • Installé par l’ « utilitaire » Fabric Controller• Un d’entre eux agit comme « primaire » et maintient une vue synchronisée du

reste du monde par les autres• Choix d’un nouveau primaire si celui-ci tombe grâce un algorithme de

consensus de Paxos• Supporte les rolling upgrades et les services continuent de s’exécuter même si un

FC tombe entièrement

TOR

FC1

… …

TOR

FC2

… …

TOR

FC3

… …FC3

TOR

FC4

… …

TOR

FC5

… …

LB

LB AGG LBLB LB

Nœuds

Rack

Page 23: Windows Azure :  Plongée en eaux profondes

23

Provisionner un nœud • Mettre sous tension le

nœud en parlant au PDU• Amorçage PXE d’un OS

de maintenance • L’agent formate le disque

et télécharge le système d’exploitation hôte

• Le système d’exploitation hôte démarre, exécute Sysprep /specialize et redémarre

• FC se connecte avec le « Host Agent »

Fabric ControllerImages

des rôles

Images des

rôles

Images des

rôles

Images des

rôles

Référentiel d’images

OS de maintenance OS Parent

Nœud

Serveur PXE

OS de maintenance

OS Windows Azure

OS Windows Azure

FC Host

Agent

Hyperviseur Windows Azure

Page 24: Windows Azure :  Plongée en eaux profondes

24

Sommaire

• Introduction au Cloud• Les fondamentaux de Windows Azure• Le fonctionnement interne du Fabric Controller• Mettre à jour un service• Mises à jour du système d’exploitation hôte• La réparation d’un service

Page 25: Windows Azure :  Plongée en eaux profondes

25

Les étapes de déploiement d’un Service• Traitement des fichiers du modèle de service

• Déterminer les besoins en ressources (taille de VM, nombre d’instances,…)

• Créer les images des rôles• Allouer les ressources de calcul et de réseau• Préparer les nœuds

• Placer les images des rôles sur les nœuds • Créer les machines virtuelles• Démarrer les machines virtuelles et les rôles

• Configurer le réseau• Adresses IP dynamiques (DIP) affectées aux blades

• Internes• Adresses IP virtuelles (VIP) affectées et mappées vers les

ensembles de DIP• Visibles à l’extérieur

• Programmer les load balancers pour permettre le trafic

Page 26: Windows Azure :  Plongée en eaux profondes

26

Allocation des ressources d’un service• Objectif : allouer les composants du service en direction des

ressources disponibles tout en satisfaisant toutes les contraintes dures• Besoin de passage à l’échelle : nombre d’instances• Besoins hardware : CPU, Mémoire, Stockage, Réseau• Besoins de l’environnement d’hébergement (OS, VM)• Fault domains• Update domains

• Objectif secondaire : satisfaire les autres contraintes • Préférer les allocations qui simplifient le service de l’OS hôte/de

l’hyperviseur• Optimiser la proximité réseau (ex : front-end, middle-tier, back-end)

• L’allocation du Service produit l’état de l’objectif pour chacune des ressources affectées aux composants du Service• Configuration nœud et VM (OS, environnement d’hébergement)• Fichiers images et configuration à déployer• Processus à démarrer

• L’allocation du Service alloue aussi les ressources réseau telles que LB et VIP

Page 27: Windows Azure :  Plongée en eaux profondes

27

Exemple d’une allocation de service Role B

Count: 2Update Domains:

2Fault Domains: 2

Size: Medium

Role ACount: 3

Update Domains: 2

Fault Domains: 2Size: Large

Fault Domain 1 Fault Domain 2 Fault Domain 3

LoadBalancer

10.100.0.36

10.100.0.122

10.100.0.185

www.mycloudapp.net

www.mycloudapp.net

Page 28: Windows Azure :  Plongée en eaux profondes

28

Provisionner une instance de rôle• Le FC pousse les fichiers de rôle et les informations de

configuration en direction du host agent du nœud cible• Le host agent crée trois VHD :

• Un VHD différentiel pour l’image de l’OS (D:\)• Le host agent injecte un guest agent pour le FC au sein du VHD pour les

Web/Worker roles• Un VHD ressource pour les fichiers temporaires (C:\)• Un VHD Role pour les fichiers rôle (la première lettre disponible

ensuite, par exemple E:\, F:\)• Le host agent crée les VM, y attache les VHD et démarre les

VM• Le guest agent démarre le hôte du rôle, qui appelle alors le

point d’entrée du rôle• Démarre le health heartbeat et accepte des commandes en

provenance du host agent• Le load balancer ne route seulement que vers les points de

terminaison externes quand il répond à un simple HTTP GET (sonde du LB)

Page 29: Windows Azure :  Plongée en eaux profondes

29

Provisioner les instances de VM Role• Le VHD de base et le VHD différentiel d’un VM Role sont stockés

dans des Windows Azure storage blobs• Des versions miroirs sont créées quand les originaux sont téléchargés• Les lectures depuis le VHD sont toutes réalisées à travers un service de

caching de VHD• Les lectures sont effectuées à la demande depuis le cache

(comme la pagination)• Les écritures vont en direction d’un second VHD différentiel

• Une opération de « Reimage » le supprime simplement et redémarre

Windows Azure Blob StorageVHD original de base

VHD différentiel original

Miroir du VHD de base

VHD différentiel miroir

RDFEService de

caching VHD

VHD de base

VHD différentiel miroir

VHD différentiel secondaire

Nœud

Page 30: Windows Azure :  Plongée en eaux profondes

30

A sein d’une VM de Rôle

Volume de ressource

Volume de l’OS

Volume pour le Rôle

Guest Agent

Hôte du Rôle

Point d’entrée du Rôle

Page 31: Windows Azure :  Plongée en eaux profondes

31

La sécurité du Fabric Controller• La machine virtuelle est la frontière de sécurité à

partir de laquelle est basée la sécurité de Windows• L’OS de l’hôte et le host agent du FC sont

considérés comme dignes de confiance• Le guest agent est indigne de confiance• Le host agent du FC assure que la VM peut

seulement accéder aux adresses IP affectées aux VM du même service• Permet l’accès aux adresses Internet

• Le FC utilise des certificats et la sécurité réseau pour autoriser l’accès aux ressources du Datacenter

Page 32: Windows Azure :  Plongée en eaux profondes

32

Sommaire

• Introduction au Cloud• Les fondamentaux de Windows Azure• Le fonctionnement interne du Fabric Controller• Mettre à jour un service• Mises à jour du système d’exploitation hôte• La réparation d’un service

Page 33: Windows Azure :  Plongée en eaux profondes

33

Types de mises à jour• Il y a deux types de mises à jour :

• In-place• VIP swap

• Mise à jour In-place :• Supporte les changements de la

configuration ou des binaires mais pas de la définition du service

• Les instances de Rôle sont mis à jour un update domain après l’autre

• Deux modes : automatique et manuel• Mise à jour VIP swap :

• La définition du service peut changer mais les points de terminaison externes doivent rester les mêmes

• La nouvelle version du service déployée, le nouveau mappage externe VIP/DIP est échangé avec l’ancien

• Les changements du nombre de points de terminaux externes nécessitent un nouveau déploiement

Role A

UD 1

Role A

UD 2Role

BUD 1

Role B

UD 2

Role A

UD 1Role

BUD 1

Role A

UD 2Role

BUD 2

Role A

UD 1

Role A

UD 2Role

BUD 1

Role B

UD 2

Role A

UD 1

Role A

UD 2Role

BUD 1

Role B

UD 2

LB

Mise à jour In-Place

Mis à jour VIP Swap

Page 34: Windows Azure :  Plongée en eaux profondes

34

Détails de la mise à jour In-Place• Le FC déploie les fichiers mis à jour du rôle et de la

configuration sur tous les nœuds en parallèle• Prépare les nouvelles instance du rôle :

• Le host agent du FC crée un nouveau VHD pour le rôle• Attache et monte le nouveau VHD pour le rôle

• Stoppe l’ancienne instance du rôle :• Le FC charge le guest agent de stopper l’instance du rôle• Démonte et détache l’ancien VDD du rôle

• Démarre les nouvelles instances du rôle :• Appelle le nouveau point d’entrée du rôle• Considère que la mise à jour de l’instance du rôle a été

couronnée de succès quand le code du rôle signale « ready »• A noter le fait que le volume de ressource est préservé

lors de la mise à jour de l’instance du rôle

Page 35: Windows Azure :  Plongée en eaux profondes

35

Sommaire

• Introduction au Cloud• Les fondamentaux de Windows Azure• Le fonctionnement interne du Fabric Controller• Mettre à jour un service• Mises à jour du système d’exploitation hôte• La réparation d’un service

Page 36: Windows Azure :  Plongée en eaux profondes

36

Mettre à jour l’OS de l’hôte• Lancé par l’équipe Windows Azure

• Typiquement pas plus qu’une fois par mois• Objectif : mettre à jour toutes les machines le plus rapidement

possible• Contrainte : ne doit pas violer le SLA

• Un service a besoin d’au moins deux update domains et deux instances de rôle pour respecter le SLA

• On ne peut pas permettre à plus d’un update domain de n’importe quel service d’être hors service à un instant donné

• Note : votre instance de rôle garde la même VM et les mêmes VHD, préservant ainsi les données cachées dans le volume de ressource

• Essentiellement un problème de coloriage de graphe• Des arrêtes existent entre des sommets (nœuds) si les deux nœuds

hébergeant les deux instances de hôtes pour le même rôle de service sont dans des update domains différents

• Les nœuds qui n’ont pas d’arrêtes entre eux peuvent être mis à jour en parallèle

Page 37: Windows Azure :  Plongée en eaux profondes

37

Exemple d’allocations

• Les deux allocations sont valides du point de vue des services• Allocation 1 permet

à 2 nœuds de rebooter simultanément

• Allocation 2 ne permet qu’à un seul nœud d’être arrêté à n’importe quel moment

• Une mise à jour de l’OS hôte avec l’allocation 1 est 2 fois plus rapide

Allocation 1

Allocation 2

Service ARole A-1

UD 1

Service BRole A-1

UD 1

Service ARole B-1

UD 1

Service BRole B-1

UD 1

Service ARole A-1

UD 2

Service BRole A-1

UD 2

Service ARole B-2

UD 2

Service BRole B-2

UD 2

Service ARole A-1

UD 1

Service ARole B-1

UD 1

Service BRole B-1

UD 1

Service ARole A-1

UD 2

Service ARole B-2

UD 2

Service BRole B-2

UD 2

Service BRole A-1

UD 2

Service BRole A-1

UD 1

Page 38: Windows Azure :  Plongée en eaux profondes

38

Sommaire

• Introduction au Cloud• Les fondamentaux de Windows Azure• Le fonctionnement interne du Fabric Controller• Mettre à jour un service• Mises à jour du système d’exploitation hôte• La réparation d’un service

Page 39: Windows Azure :  Plongée en eaux profondes

39

Maintenance de la santé des nœuds et des rôles• Le FC maintient la disponibilité du service

en surveillant la santé du software et du hardware• Basée principalement sur des

heartbeats • « Répare » automatiquement les rôles

affectésProblème Détection Réponse de la Fabric

Crash d’une instance de rôle

Le guest agent du FC surveille la fin d’un rôle

Le FC redémarre le rôle

Une VM invitée ou un agent crashe

Le host agent du FC remarque les heartbeats manquant du guest agent

Le FC redémarre la VM et le rôle hébergé

L’OS hôte ou l’agent crashe

Le FC remarque les heartbeats manquant du host agent

Tentative de récupérer le nœud. Le FC réalloue les rôles à d’autres nœuds

Détection d’un problème hardware sur le nœud

Le host agent en informe le FC Le FC migre les rôles vers d’autres nœuds Marque le nœud « out for repair »

Page 40: Windows Azure :  Plongée en eaux profondes

40

Node Health Index• Les timeouts varient en fonction de l’état du

nœud et des opérations• Basés sur des heartbeats, qui sont

typiquement de 15 secondes• Utilisés pour statut et récupération• L’échantillonneur d’état de santé fait un reset de

l’index après un échantillonnage couronné de succès

• Une fois que l’index tombe en dessous de 0 le FC tente de réparer le nœud

• Par exemple, le timeout du host agent est de 10 minutes

• Le temps de réaction dans le pire cas est de : intervalle de timeout + intervalle de heartbeat

NodeHealthIndex

Heartbeatsmanqués

Intervalle deHeartbeat

Heartbeatmanqué

Récupérationinitiée

Timeout de Heartbeat

Timeout de santé

En bonne santé

Page 41: Windows Azure :  Plongée en eaux profondes

41

Déplacer une instance de rôle

• Déplacer une instance de rôle ressemble à une mise à jour de service

• Sur le nœud source :• Les instances du rôle sont stoppées• Les VM sont stoppées• Le nœud est re-provisionné

• Sur le nœud destination :• Mêmes étapes que lors du déploiement initial du

rôle• Attention : le VHD ressource n’est pas déplacé

Page 42: Windows Azure :  Plongée en eaux profondes

42

Conclusion

• La mise en place d’une solution de type Platform as a Service a pour but essentiel de réduire le surcoût lié au management et aux opérations

• Le Fabric Controller Windows Azure est la fondation de la plateforme Windows Azure• Provisionnement des machines• Déploiement des services• Configuration du hardware pour les services• Surveillance de la santé du service et du

hardware• Réparation du service

• Le Fabric Controller continue d’évoluer…

Page 43: Windows Azure :  Plongée en eaux profondes

43

Remerciements

• Merci à Mark Russinovich pour une large part de cette présentation !

Page 44: Windows Azure :  Plongée en eaux profondes

44

Questions ?

Page 45: Windows Azure :  Plongée en eaux profondes