windows azure internals
TRANSCRIPT
Windows Azure InternalsRafael GodinhoArquiteto de Soluções – Windows Azurehttp://blogs.msdn.com/rafaelgodinho
Microsoft Confidential
Agenda
Arquitetura de um DatacenterInstalando ServiçosDentro de uma Máquina VirtualGarantindo a Saúde do Ambiente
Arquitetura de um Datacenter
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
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
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
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
…… … …
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
Instalando Serviços
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
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
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
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
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
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
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)
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
Resource Volume
OS Volume
Role Volume
Dentro de uma Role
Guest Agent
Role Host
Role Entry Point
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
Dentro de uma VM IaaS
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
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
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
Atualizando Serviços eHost OS
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
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
Saúde do Ambiente
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”
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
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
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
“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
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
© 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