40
Windows Azure Cloud Service Name Title Organization

Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Embed Size (px)

Citation preview

Page 1: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed
Page 2: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Session Objectives and Takeaways

Describe Windows Azure Cloud Service

Understand Model and Terminology

Page 3: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

What is a Cloud Service?

A container of related service roles

Web Role Worker Role

Page 4: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

What Can It Run?

Page 5: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Roles and Instances

At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed in a dedicated VM

Roles are defined in a Hosted ServiceA role definition specifies:VM sizeCommunication EndpointsLocal storage resourcesetc.

Page 6: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Roles and InstancesExample Hosted Service configuration with a single web role and a single worker role

HOSTED SERVICE

VM1 VM2 VM3 VM4

VM5 VM6 VM7 VM8

VM9 VMn

VM1 VM2 VM3 VM4

VM5 VMn

Page 7: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Fault Domains

99.95% Uptime GuaranteeRequires 2 or more instance per role

Role instance are isolated by fault domainFault domains isolate VMsFault domains provide redundancyAt least two fault domains per role

Page 8: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Upgrade Domains

Page 9: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Roles and InstancesExample role with nine virtual machines distributed across three fault domains

ROLE

VM1 VM3

VM5 VM8

VM2 VM4

VM6 VM9

VM6 VM9

Page 10: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

The High Scale Application ArchetypeWindows Azure provides a ‘pay-as-you-go’ scale out application platform

Async Activation

Network Activation

Page 11: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Windows Azure SDKs and Tools

.NetVisual Studio ToolsClient Libraries for .Net

Node.jsPowerShell ToolsNode.js for WindowsIISNodeClient Libraries for Node.js

JavaEclipse ToolsClient Libraries for Java

phpCommand Line ToolsClient Libraries for php

Page 12: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Windows Azure for .Net Developers

Visual Studio 2010/2012

Project Templates

Model & Config Tooling

Package & 1 Click Deploy

Debugging Support

Storage Explorer

Server Explorer

IntelliTrace Support

Profiling Support

Page 13: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Inherits RoleEntryPoint

OnStart() Method

Run() Method

OnStop() Method

Role Programming Model

Page 14: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Role Lifecycle

All roles may extend RoleEntryPoint

Roles report status via RoleEnvironment

StatusCheck

StatusCheck

StatusCheck

Stopping

METHODS EVENTS STATUS

Page 15: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Worker Role Patterns

Poll and Pop Messages within while(true) loopE.g. Map/Reduce pattern, background image processing

Create TcpListener or WCF Service HostE.g. Run a .NET SMTP server or WCF Service

OnStart or Run method executes Process.Start()Startup Task installs or executes background/foreground processCustom Role Entry Point (executable or .Net assembly)E.g. Run a database server, web server, distributed cache

Page 16: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Web Role

Webforms or MVCFastCGI applications (e.g. PHP)Multiple Websites

Can optionally implement RoleEntryPoint

Page 17: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Understanding Packaging and ConfigWindows Azure Services are described by two important artifacts:Service Definition (*.csdef)Service Configuration (*.cscfg)

Your code is zipped and packaged with definition (*.cspkg)Encrypted(Zipped(Code + *.csdef)) == *.cspkg

Windows Azure consumes just (*.cspkg + *.cscfg)

Page 18: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Describes the shape of your Windows Azure ServiceDefines Roles, Ports, Certificates, Configuration Settings, Startup Tasks, IIS Configuration, and more…

Can only be changed by upgrades or new deployments

Page 19: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

<?xml version="1.0" encoding="utf-8"?><ServiceDefinition name="WebDeploy" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">

<WebRole name="WebUX"><Startup>

<Task commandLine="..\Startup\EnableWebAdmin.cmd" executionContext="elevated" taskType="simple" /></Startup><Imports>

<Import moduleName="RemoteAccess" /><Import moduleName="RemoteForwarder"/>

</Imports><Sites>

<Site name="Web"><Bindings> <Binding name="HttpIn" endpointName="HttpIn"/></Bindings>

</Site></Sites><Endpoints>

<InputEndpoint name="HttpIn" protocol="http" port="80"/><InputEndpoint name="mgmtsvc" protocol="tcp" port="8172" localPort="8712"/>

</Endpoints>

Page 20: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Supplies Runtime Values (Scale, Config Settings, Certificates to use, VHD, etc.)

Can be updated any time through Portal or API

Page 21: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

<?xml version="1.0"?><ServiceConfiguration serviceName="WebDeploy" xmlns="http://schemas.microsoft.com/serviceHosting/2008/10ServiceConfiguration"> <Role name="Webux">

<Instances count="1"/><ConfigurationSettings>

<Setting name="DiagnosticsConnectionString" value="UseDevelopmentStorage=true/><Setting name="Microsoft.WindowsAzure.plugins.RemoteAccess.Enabled" value="True"/><Setting name="Microsoft.WindowsAzure.plugins.RemoteAccess.AccountUsername" value="dunnry"/><Setting name="Microsoft.WindowsAzure.plugins.RemoteAccess.AccountEncryptedPassword" value="MIIBrAYJKoZIhvcNAQcDoIIB"/><Setting name="Microsoft.WindowsAzure.plugins.RemoteAccess.AccountExpiration" value="2010-12-23T23:59:59.0000000-07"/><Setting name="Microsoft.Windows Azure.Plugins.RemoteForwarder.Enabled" value="True"/>

<ConfigurationSettings><Certificate>

<Certificates name="Microsoft.WindowsAzure.Plugins.remoteAccess.PasswordEncryption" thumbprint="D6BE55AC439FAC6CBEBAF"/>

</Certificate></Role>

</ServiceConfiguration>

Page 22: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Run any executable in your role

Not just limited to .Net code

Run custom processes without code

Role automatically restarts if process stops

Page 23: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

<?xml version="1.0" encoding="utf-8"?>

<ServiceDefinition name="WindowsAzureProject11" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">

<WorkerRole name="WorkerRole1" vmsize="Small">

<Runtime executionContext="limited">

<EntryPoint>

<ProgramEntryPoint commandLine="myProcess.exe" setReadyOnProcessStart="true" />

</EntryPoint>

</Runtime>

<Endpoints>

<InputEndpoint name="Endpoint1" protocol="tcp" port="80" />

</Endpoints>

</WorkerRole>

</ServiceDefinition>

Page 24: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

VM Size in Windows Azure

Windows AzureSupports Various VM SizesSize set on Role in Service Definition - All instances of role will be of equal size Service can have multiple rolesBalance of Performance per node vs. High Availability from multiple nodes

Extra Small

Shared 1.0 GHz 768M 20GB .02

Small 1 1.6 GHz 1.75GB 225GB .12

Medium 2 1.6 GHz 3.5GB 490GB .24

Large 4 1.6 GHz 7GB 1,000GB .48

Extra large

8 1.6 GHz 14GB 2,040GB .96

Page 25: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

More small instances == more redundancy

Some scenarios will benefit from more coresWhere moving data >$ parallel overheadE.g. Video processing, Stateful services (DBMS)

Choosing Your VM Size

Don’t just throw big VMs at every problem

Scale out architectures have natural parallelism

Test various configurations under load

Page 26: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Input EndpointLoad-balanced endpoint. Stable VIP per service.Single port per endpoint.Supported protocols: HTTP, HTTPS, TCP, UDP

Internal EndpointInstance-to-instance communicationSupported protocols: HTTP, TCP, UDPPort range supported

Instance Input EndpointAddress specific service role instanceSupported protocols: TCP, UDP

Networking in Windows Azure

Page 27: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Name ResolutionWindows Azure-provided DNS service for service-level name resolutionRuntime APIs for instance identificationBring your own DNS server

Load balancing behaviorDefine load balance endpoint setsDefine custom load balance probe

Traffic managerLoad-balancing based on performance, round-robin, or failover

Networking in Windows Azure (cont.)

Page 28: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Local Storage

Role instances have available disk storage

Use LocalStorage element in service definitionNameCleanOnRoleRecycleSize

Persistent but not guaranteed durableGood for cached resources or temporary files

Windows Azure Storage Drives provide guaranteed durable storage

Page 29: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Local Storage

<LocalResources>

<LocalStoragename="myLocalDisk" sizeInMB="10"

cleanOnRoleRecycle="false" />

</LocalResources>

string rootPath = RoleEnvironment.GetLocalResource["myLocalDisk"].RootPath;

DirectoryInfo di = new DirectoryInfo(rootPath);

foreach(di.EnumerateFiles())

….

Page 30: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Configuration Values

Store arbitrary configuration string valuesDefine in modelPopulate in configuration

RoleEnvironment.GetConfigurationSettingValue()

Don’t use web.config for values you wish to change at runtimeApp/Web.config is packaged with deployment change requires re-deploy*.cscfg supports change tracking and notification to running role instances

Page 31: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Upgrading Your Application

VIP Swap:Uses Staging and Production environmentsAllows to quickly swap environmentsProduction: v1 Staging: v2, after swap then Production: v2 Staging: v1

In-Place UpgradePerforms a rolling upgrade on live serviceEntire service or a single roleManual or Automatic across update domainsCannot change Service Model

Page 32: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

ROLE

VIP Swap

VM1 VM2

VM3 VM4

VM1 VM2

VM3 VM4

Page 33: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Role Instance

Windows Azure Diagnostics

Role Instance Starts

Diagnostic Monitor Starts

Monitor is configuredImperatively at Start timeRemotely any timeConfiguration is saved in Storage

Monitor buffers data locallyUser can set a quota (FIFO)

User initiates transfer to storage from local bufferScheduled On Demand

Page 34: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Diagnostic Data Locations

Windows Event Logs WADWindowsEventLogsTable

Performance Counters (including custom performance counters) WADPerformanceCountersTable

Windows Azure Logs WADLogsTable

Diagnostic Infrastructure Logs WADDiagnosticInfrastructureLogsTable

IIS Logs wad-iis-logfiles - WADDirectoriesTable (index entry)

IIS Failed Request Logs wad-iis-failedreqlogfiles - WADDirectoriesTable (index entry)

Crash Dumps wad-crash-dumps - WADDirectoriesTable (index entry)

Custom File Based Logs (must be configured) - WADDirectoriesTable (index entry)

Page 35: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Summary

Cloud Service is for multi-tier online services

Service model defines service shape

Service configuration defines service scale

Selectable VM Sizes

Upgrading and Deployment

Page 36: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

© 2011 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.

Page 37: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Windows Azure Service Architecture

Windows Azure Data Center

Storage

Page 38: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Handling Config Changes

RoleEnvironment.ChangingOccurs before configuration is changedCan be cancelled – causes a recycle

RoleEnvironment.ChangedOccurs after config change has been applied

RoleEnvironmentConfigurationSettingChangeProvides config value that was changed

RoleEnvironmentTopologyChange When role count is changed

Page 39: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Handling Config ChangesPort 80Http

Port 8090HTTP

StatusSvc

HTTP83425

StatusSvc

HTTP73984Regular Polling for StatusRegular Polling for Status

Page 40: Web RoleWorker Role At runtime each Role will execute on one or more instances A role instance is a set of code, configuration, and local data, deployed

Monitoring

Monitoring is not Debugging

Instrument your application using Trace, DebugDiagnosticMonitorTraceListener

Use Diagnostics API to Configure and CollectEvent LogsPerformance CountersTrace/Debug information (logging)IIS Logs, Failed Request LogsCrash Dumps or Arbitrary files

Request data on demand or scheduledTransferred into your table and/or blob storage