windows azure internals

35
Windows Azure Internals Rafael Godinho Arquiteto de Soluções – Windows Azure http://blogs.msdn.com/rafaelgodinho

Upload: azure-summit-brasil

Post on 22-Jun-2015

195 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Windows Azure Internals

Windows Azure InternalsRafael GodinhoArquiteto de Soluções – Windows Azurehttp://blogs.msdn.com/rafaelgodinho

Page 2: Windows Azure Internals

Microsoft Confidential

Agenda

Arquitetura de um DatacenterInstalando ServiçosDentro de uma Máquina VirtualGarantindo a Saúde do Ambiente

Page 3: Windows Azure Internals

Arquitetura de um Datacenter

Page 4: Windows Azure Internals
Page 5: Windows Azure Internals

Fabric Controller (FC)

“Kernel” do Cloud OS Gerencia o hardware do datacenter (DC) Gerencia os serviços do Windows Azure

Principais responsabilidades Alocação de Recursos no DC Provisionamento de Recursos no DC Gerenciamento do ciclo de vida dos serviços Gerenciamento da saúde do ambiente

Informações utilizadas Lista de hardware e configuração de rede que ele irá gerenciar Service model e binários das aplicações

ServerKernelProcesso

DatacenterFabric ControllerServiço

Windows Kernel

Server

WordSQL

Server

Fabric Controller

Datacenter

ExchangeOnline

SQL Databas

e

Page 6: Windows Azure Internals

Microsoft Confidential

Datacenter ClustersDatacenters são divididos em clusters

Aprox. 1000 servidores (“nodes”)Cria uma unidade isolada de falhasCada cluster é gerenciado por um FC

Responsabilidades do FCProvisionamento das BladesGerenciamento das BladesDeploy do serviço e gerenciamento do ciclo de vida

Cluster1

Cluster2

Clustern

Rede do DC

FC FC FC

Page 7: Windows Azure Internals

Dentro de um Cluster FC é uma aplicação distribuída e stateful, rodando nos “nodes”,

instalada em diferentes fault domains Localizados nas blades superiores

Uma instância é a primária e as outras ficam em sincronismo Suporta upgrades e falhas de hardware

TOR

FC1

… …

TOR

FC2

… …

TOR

FC3

… …

FC3

TOR

FC4

… …

TOR

FC5

… …

Spine

Nodes

Rack

Page 8: Windows Azure Internals

Microsoft Confidential

Arquitetura de RedeArquitetura DLA (Antiga) Arquitetura Quantum10 (Nova)

TOR TOR TOR TOR

Spine Spine Spine

DCR DCR

BLBL

Spine

DC Routers

BL BL

30,000 Gbps120 Gbs

40 Nodes

TOR

LB

LB

AGG

Digi

APC

LB

LB

AGG

LB

LB

AGG

LB

LB

AGG

LB

LB

AGG

LB

LB

AGG

20Racks

DC Router

Access Routers

Aggregation + LB

40 Nodes

TOR

Digi

APC

40 Nodes

TOR

Digi

APC

40 Nodes

TOR

Digi

APC

40 Nodes

TOR

Digi

APC

40 Nodes

TOR

Digi

APC

40 Nodes

TOR

Digi

APC

40 Nodes

TOR

Digi

APC

40 Nodes

TOR

Digi

APC

40 Nodes

TOR

Digi

APC

40 Nodes

TOR

Digi

APC

40 Nodes

TOR

Digi

APC

40 Nodes

TOR

Digi

APC

40 Nodes

TOR

Digi

APC

40 Nodes

TOR

Digi

APC

……

20Racks 20Racks 20Racks

…… … …

Page 9: Windows Azure Internals

Microsoft Confidential

Dica: Load Balancer OverheadUsar o load balancer adicionar em torno de 0.5ms de latênciaSempre que possível utilize o Dynamic IP (DIP)

Instâncias do mesmo Cloud Service podem “conversar” via DIPVirtual Network permite Comunicação entre Cloud Services diferentes

Load Balancer

Instância 0

Instância1

10.2.3.4

10.2.3.5

65.123.44.22

0.5ms

i

Page 10: Windows Azure Internals

Instalando Serviços

Page 11: Windows Azure Internals

Provisionando um “Node” Liga o Node Boot

Windows PE

Disco é formatado e Host OS é instalado via Windows Deployment Services (WDS)

Boot do Host OS Conexão entre FC e o

“Host Agent”

Fabric ControllerRole

ImagesRole

ImagesRole

ImagesRole

Images

Imagens

Maintenance OS

Parent OS

Node

PXEServer

Maintenance OS

Windows AzureOS

Windows Azure

OS

FC Host

Agent

Windows Azure Hypervisor

Windows Deploymen

tServer

Page 12: Windows Azure Internals

RDFE

US-North Central Datacenter

Fazendo o Deploy de umServiço Upload do pacote

Portal System Center Powershell

RDFE envia o pacote para o FC (região e affinity group)

FC armazena imagem no repositório e faz deploy do serviço

Fabric Controller

Windows Azure Portal System Center

Pacote

RESTAPIs

Page 13: Windows Azure Internals

Passo-a-passo do Deployment Processa os arquivos do serviço

Determina requisitos de recursos Cria as imagens das roles

Aloca os recursos computacionais e de rede Prepara os “nodes”

Copia as imagens nos “nodes” Cria as máquinas virtuais Liga as máquinas virtuais

Configura rede Blades recebem Dynamic IP addresses (DIPs) Mapeamento de Virtual IP addresses (VIPs) + portas para DIPs Configura tráfego entre VMs Configura NLB para permitir tráfego

Page 14: Windows Azure Internals

Alocação de Recursos Alocar components para os serviços satisfazendo Obrigatório

Requisitos de HW: CPU, Memória, Storage, Rede Fault domains

Desejável Simplificar manutenção de Host OS/Hypervisor Proximidade de rede: otimização de pacotes

Page 15: Windows Azure Internals

Fazendo o DeployRole B

Worker RoleQtd: 2

Update Domains: 2Tam: Medium

Role AWeb Role (Front End)

Qtd: 3Update Domains: 3

Tam: Large

LoadBalance

r10.100.0.36

10.100.0.122

10.100.0.185

my.cloudapp.net

my.cloudapp.net

Page 16: Windows Azure Internals

Fazendo o Deploy de uma Role FC envia binários e configuração para o host agent do “node”

Host agent cria VHDs Host agent cria VM, adiciona o VHDs, e liga a VM

Guest agent inicia e chama o role entry point Inicia heartbeat com host agent

Load balancer começa à rotear quando máquina começa à responder

Page 17: Windows Azure Internals

Microsoft Confidential

Dentro de um Node

Fabric Controller (Primário)

FC Host Agent

Host

Guest Partition

Guest Agent

Guest Partition

Guest Agent

Guest Partition

Guest Agent

Guest Partition

Guest Agent

Node (físico)

Fabric Controller (Replica)

Fabric Controller (Replica)…

Role Instance

Role Instance

Role Instance

Role Instance

Comunicação Segura

Repositório de Imagens (OS VHDs, pacotes dos

serviços)

Page 18: Windows Azure Internals

Discos de uma Role PaaS VHD diferencial de imagem de OS (D:\)

Host agent injects FC guest agent into VHD for Web/Worker roles

VHD para arquivos temporários (C:\) VHD para arquivos do deploy (E:\, F:\)

Role Virtual Machine

C:\Resource Disk VHD Dinâmico

D:\WindowsDisco

Diferencial

E:\ ou F:\Imagem da

RoleDisco

Diferencial

Windows VHD Role VHD

Page 19: Windows Azure Internals

Resource Volume

OS Volume

Role Volume

Dentro de uma Role

Guest Agent

Role Host

Role Entry Point

Page 20: Windows Azure Internals

Dica: Pacotes Pequenos Deploy é copiado 4 vezes no ambientes Utilize BLOB e baixe do BLOB

RDFE

Portal

FC

Server

Pacote

1

2

3

4BLOB

Arquivos Auxiliare

s

i

1 2

Page 21: Windows Azure Internals

Dentro de uma VM IaaS

Page 22: Windows Azure Internals

Microsoft Confidential

Virtual Machine (IaaS) Operation

Não existe imagem padrãoPolítica de cache:

OS: cache read+writeData: sem cache

Local On-Disk Cache

Disk Blob

Local RAM Cache

Virtual Disk Driver

Node

VM

Page 23: Windows Azure Internals

Discos de uma Role IaaS

Role Virtual Machine

C:\OS Disk

E:\, F:\, etc.Disco de Dados

D:\Disco de Recursos

VHD Dinâmico

RAM

Disco Local Blobs

Blob

Page 24: Windows Azure Internals

Dica: Desempenho de Disco Cada tipo de disco tem um desempenho diferente por padrão OS: cache read+write, otimizado para pouco I/O Discos de dados: Escritas randômicas Striped disks: Melhor ainda

Sempre que possível utilize striped data disks

i

Page 25: Windows Azure Internals

Atualizando Serviços eHost OS

Page 26: Windows Azure Internals

In-Place Upgrade Garantir que a aplicação tenha

disponibilidade durante atualizações de serviços e Windows Azure SO

Update Domain 1/Update domains = % de serviços

offline 5 por padrão, 20 é o máximo Propriedade upgradeDomainCount no

service definition SLA pelo menos 2 UD e 2

instâncias de role

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 27: Windows Azure Internals

Microsoft Confidential

Dica: Update de Config vs. Update de CódigoUpdate de Código:

Deploy de uma nova imagemCria um novo VHDDerruba código antigo e sobe código novo

Update de Config:Evento RoleEnvironmentChanging

Para ter rapidezDeploy de configuraçãoTratar evento RoleEnvironmentChanging

i

Page 28: Windows Azure Internals

Saúde do Ambiente

Page 29: Windows Azure Internals

Saúde das Roles e dos Nodes FC monitora software e hardware

Utiliza heartbeats Automaticamente “cura” Recursos afetados

Problema Detecção Resposta

Instância da Role cai FC monitora guest agent FC reinicia a role

Guest VM ou agente cai FC monitora queda do guest agent heartbeat FC reinicia VM

Host OS ou agente cai FC monitora queda host agent heartbeat FC tenta recuperar o nodeFC realoca nodes para outros nodes

Falha de hardware Host agent avisa FC FC realoca nodes para outros nodesMarca node como “out for repair”

Page 30: Windows Azure Internals

Guest Agent and Role Instance Heartbeats and Timeouts

25 min

GuestAgent

ConnectTimeout

Guest Agent Heartbeat

5s

Início daRole

Instance

Indefinido

RoleInstance

Start

RoleInstanceReady

15 min

Role Instance Heartbeat

15s

Guest Agent Heartbeat Timeout

10 min

Role Instance “Unresponsive” Timeout

30s

Load Balancer Heartbeat

15s

Load BalancerTimeout

30s

Guest Agent

Role Instance

Page 31: Windows Azure Internals

Fault Domains e Availability Sets Evitar pontos únicos de falhas

físicas Unidade de falha do DC

Switch no topo do rack

Levado em consideração ao alocar os serviços Tenha pelo menos 2 fault domain por serviço

SLA: 99.95%

Front-End-1

Fault Domain 1

Fault Domain

2

Front-End-2

Middle Tier-2

Middle Tier-1

Fault Domain 3

Middle Tier-3

Front-End-1

Middle Tier-1

Front-End-2

Middle Tier-2

Middle Tier-3

Page 32: Windows Azure Internals

Movendo uma Role (“curando” um serviço) Similar à um update Node origem

Parar role instance Para VM Node deprovisionado

Node destino Mesmos passos de um deployment

Atenção: VHD de Recursos não é movido Mesmo para IaaS

Page 33: Windows Azure Internals

“Curando” o ServiçoRole B

Worker RoleQtd: 2

Update Domains: 2Tam: Medium

LoadBalance

r10.100.0.36

10.100.0.122

10.100.0.185

my.cloudapp.net

my.cloudapp.net

10.100.0.191

Role A – V2VM Role (Front End)

Qtd: 3Update Domains: 3

Tam: Large

Page 34: Windows Azure Internals

Dica: 3 é melhor que 2 Disponibilidade é reduzida

quando: Update de código Instância sendo “curada” Host OS sendo atualizado Guest OS sendo atualizado

Para evitar disponibilidade quando 2 ocorrem ao mesmo tempo: utilize pelo menos 3 instâncias

Front-End-1

Fault Domain 1

Fault Domain

2

Front-End-2

Middle Tier-2

Middle Tier-1

Fault Domain 3

Middle Tier-3

Front-End-1

Middle Tier-1

Front-End-2

Middle Tier-2

i

Page 35: Windows Azure Internals

© 2012 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.

Rafael GodinhoArquiteto de Soluções – Windows Azurehttp://blogs.msdn.com/rafaelgodinho