Cloud Foundry: Inside the Machine

Preview:

DESCRIPTION

My talk from SpringOne 2011

Citation preview

Derek Collison

Inside The Machine

Thursday, October 27, 11

What isCloud Foundry?

2

Thursday, October 27, 11

The OpenPlatform as a Service

3

Thursday, October 27, 11

What is PaaS?

4

Thursday, October 27, 11

Or more specifically, aPaaS?

5

Thursday, October 27, 11

aPaaS

• Application Platform as a Service

• Applications and Services

6

Thursday, October 27, 11

aPaaS

• Application Platform as a Service

• Applications and Services

• Not • VMs

• Memory

• Storage

• Networks

• CPU

7

Thursday, October 27, 11

What isOpenPaaS?

8

Thursday, October 27, 11

OpenPaaS

• Multi-Language

• Multi-Framework

• Multi-Services

• Multi-Cloud, Multi-IaaS

• Hybrid - Public or Private or Both

• OpenSource

9

Thursday, October 27, 11

OpenPaaS

• Multi-Language• Ruby, Java, Scala, Node.js, Erlang, Python, PHP..

• Multi-Framework• Rails, Sinatra, Spring, Grails, Express, Lift

• Multi-Services• MySQL, Postgres, MongoDB, Redis, RabbitMQ

• Multi-Cloud, Multi-IaaS• vSphere, MicroCloud, OpenStack, AWS

10

Thursday, October 27, 11

The Open PaaS

Clou

d Pr

ovide

r Int

erfa

ce

Application Service Interface

Private Clouds

PublicClouds

MicroClouds

11

Data Services

Other Services

Msg Services

Thursday, October 27, 11

The Open PaaS

Clou

d Pr

ovide

r Int

erfa

ce

Application Service Interface

Private Clouds

PublicClouds

MicroClouds

11

Data Services

Other Services

Msg Services

vFabric Postgres

vFabric RabbitMQTM

Thursday, October 27, 11

What isour Goal?

12

Thursday, October 27, 11

What was our Goal?

13

Raise the unit of currency to be the application and its associated services,

not the infrastructure

Thursday, October 27, 11

What was our Goal?

14

Best of breed delivery platform for all modern

applications and frameworks

Thursday, October 27, 11

What was our Goal?

15

Favor Choice

and

Openness

Thursday, October 27, 11

How was it Built?

16

Thursday, October 27, 11

How was it Built?

• Kernel (CloudFoundry OSS)• Core PaaS System

• Kernel and Orchestrator Shells• Layered on top of IaaS

• Orchestrator• IaaS creation, management and

orchestration

17

Thursday, October 27, 11

High Level

18

IaaS

Orchestrator

CF Kernel

Hardware - CPU/Memory/Disk/Network

Clients (VMC, STS, Browser)

Thursday, October 27, 11

Basic Premises

• Fail Fast

• Self Healing

• Horizontally Scalable Components

• Distributed State

• No Single Point of Failure

• Should be as simple as possible

19

Thursday, October 27, 11

Basic Patterns

• Event-Driven

• Asynchronous

• Non-blocking

• Independent, Idempotent

• Message Passing

• Eventually Consistent

20

Thursday, October 27, 11

Basic Design

• All components loosely coupled• Few “Classes”, many “Instances”

• Messaging as foundation• Addressing and Component Discovery

• Command and Control

• JSON payloads

• HTTP or File/Blob for data transport

21

Thursday, October 27, 11

Kernel Components

• All dynamically discoverable

• Launch and scale in any order

• Can come and go as needed

• Monitor via HTTP and JSON

• Location independent

22

Thursday, October 27, 11

Kernel Components

• Router

• CloudController

• DEA

• HealthManager

• Service Provisioning Agent

• Messaging System

23

Thursday, October 27, 11

Logical View

24

VMC client STS plugin Browser(user app access)

Routers

CloudControllers App

Services

App

HealthManager

DEA Pool

Messaging

Thursday, October 27, 11

25

Arc

hit

ec

ture

Thursday, October 27, 11

Messaging

26

Thursday, October 27, 11

Messaging

27

“The Nervous System”

Thursday, October 27, 11

Messaging

28

VMC client STS plugin Browser(user app access)

Routers

CloudControllers App

Services

App

HealthManager

DEA Pool

Messaging

Thursday, October 27, 11

Messaging

• Addressing and Discovery• No static IPs or DNS lookups req’d

• Just Layer 4

• Command and Control

• Central communication system

• Dial tone, fire and forget

• Protects *itself* at all costs

• Idempotent semantics

29

Thursday, October 27, 11

Router

30

Thursday, October 27, 11

Router

31

“Traffic Cop”

Thursday, October 27, 11

Router

32

VMC client STS plugin Browser(user app access)

Routers

CloudControllers App

Services

App

HealthManager

DEA Pool

Messaging

Thursday, October 27, 11

Router

• Handles all HTTP traffic

• Maintains distributed routing state

• Routes URLs to applications

• Distributes load among instances

• Realtime distributed updates to routing tables from DEAs

33

Thursday, October 27, 11

CloudController

34

Thursday, October 27, 11

CloudController

35

“The King”

Thursday, October 27, 11

CloudController

36

VMC client STS plugin Browser(user app access)

Routers

CloudControllers App

Services

App

HealthManager

DEA Pool

Messaging

Thursday, October 27, 11

CloudController

• Handles all state transitions

• Deals with users, apps, and services

• Packages and Stages applications

• Binds Services to Applications

• Presents external REST API

37

Thursday, October 27, 11

HealthManager

38

Thursday, October 27, 11

HealthManager

39

“Court Jester”

Thursday, October 27, 11

HealthManager

40

VMC client STS plugin Browser(user app access)

Routers

CloudControllers App

Services

App

HealthManager

DEA Pool

Messaging

Thursday, October 27, 11

HealthManager

• Monitors the state of the world

• Initial value with realtime delta updates to “intended” vs “real”

• Determines drift

• Complains to the CloudControllers when something is not correct

• No power to change state itself

41

Thursday, October 27, 11

DEA

42

Thursday, October 27, 11

DEA

43

“Droplet Execution Agent”

Thursday, October 27, 11

DEA

44

VMC client STS plugin Browser(user app access)

Routers

CloudControllers App

Services

App

HealthManager

DEA Pool

Messaging

Thursday, October 27, 11

DEA (Droplet Execution Agent)

• Responsible for running all applications

• Monitors all applications

• CPU, Mem, IO, Threads, Disk, FDs, etc

• All apps look same to DEA• start and stop

• Express ability and desire to run an application• runtimes, options, cluster avoidance, memory/cpu

• Alerts on any change in state of applications

• Provides secure/constrained OS runtime

• Hypervisor, Unix File and User, Linux Containers*

• Single or Multi-Tenant

45

Thursday, October 27, 11

How does it allWork?

46

Thursday, October 27, 11

Pushing an App

• Client (VMC/STS) pushes meta-data to CC

• Client optionally pushes resource signatures (diff analysis, sys wide)

• Client pushes app resources to CC

• CC puts app together

• CC stages app asynchronously

• CC binds and stages services

• Droplet ready

47

Thursday, October 27, 11

48

Arc

hit

ec

ture

Thursday, October 27, 11

Running an App

• CC asks DEAs for “help”

• First DEA back wins! Simple

• CC sends start request to selected DEA

• DEA pushes the “green” button

• DEA waits and monitors pid and ephemeral port for app to bind

• When app is healthy, sends “register” message

• Register message is seen by HM and Routers

• Routers bind URL to host:port

49

Thursday, October 27, 11

DEAs answer?

• DEAs first determine YES or NO• correct runtime, options, memory, etc

• Then calculate a Delay Taint• SHA hash of application

• memory

• cpu

• Taint allows balancing and selection

50

Thursday, October 27, 11

Scale up & down?

• Exact steps as running the app the first time

• SHA1 taint helps avoid clustering

• memory/cpu taint helps distribute as evenly as possible

• Nothing pre-computed

• Nothing assumed

51

Thursday, October 27, 11

Crashes?

• If your app stops and we did not tell it to, that is a crash

• Crashed apps are immediately detected by DEA and messaged

• Routers disconnect route instantly

• HM will signal CC• something is wrong

• CC will issue run sequence again52

Thursday, October 27, 11

53

Arc

hit

ec

ture

Thursday, October 27, 11

Access to my App?

• All routers understand where all instances of your application are running

• Will randomly pick backend, not semantically aware.

• Will remove routes that are stale or unhealthy

• Session stickiness and replication available, but best to avoid if possible

54

Thursday, October 27, 11

What aboutServices?

55

Thursday, October 27, 11

Services

56

VMC client STS plugin Browser(user app access)

Routers

CloudControllers App

Services

App

HealthManager

DEA Pool

Messaging

Thursday, October 27, 11

Services

• Service Advertisement

• Service Provisioning

• Gateway fronts multi-backends

• Service Nodes scale independent

• App and service talk directly

• API to register into system

• Closure for additional value

57

Thursday, October 27, 11

Provisioning

58

VMC/STS

Routers

CloudControllers Services Gateway

Service NodeMySQL

Service NodeRedis

Service NodeRedis

Messaging

Application

1

2

3

45

6

Thursday, October 27, 11

Access (Direct)

59

Routers

CloudControllers Services Gateway

Service NodeMySQL

Service NodeRedis

Service NodeRedis

Messaging

Application

1

2

Browser(user app access)

Thursday, October 27, 11

Services

60

Cloud Foundry

vSphere

core services

Enterprise Services

SQLFire

apps

service controller service broker

provision/bind

consume consume

bind

VMware Dev Tools Partner Dev Tools

Data Director

Relational DB

Thursday, October 27, 11

Learn more:

www.cloudfoundry.org

blog.cloudfoundry.com

support.cloudfoundry.com

61

Thursday, October 27, 11

62

Thank You

Thursday, October 27, 11

63

Questions?dcollison@vmware.com

derek.collison@gmail.com

twitter: derekcollison

Thursday, October 27, 11

Recommended