Distributed Design and Architecture of Cloud Foundry

63
Derek Collison Design and Architecture

description

In this session we will dig deep into Cloud Foundry's core architecture and design principles. We will discuss the challenges around scaling and operating a large scale service as we combined the PaaS and traditional IaaS layers, and how we achieve multiple updates per week to the system with no perceived downtime. Allowing user to download a single virtual machine that is a complete replica of the service presented some challenges as well, and we will discuss our approach to offering up the downloadable private cloud.

Transcript of Distributed Design and Architecture of Cloud Foundry

Page 1: Distributed Design and Architecture of Cloud Foundry

Derek Collison

Design and Architecture

Page 2: Distributed Design and Architecture of Cloud Foundry

What isCloud Foundry?

2

Page 3: Distributed Design and Architecture of Cloud Foundry

The OpenPlatform as a Service

3

Page 4: Distributed Design and Architecture of Cloud Foundry

What is PaaS?

4

Page 5: Distributed Design and Architecture of Cloud Foundry

Or more specifically, aPaaS?

5

Page 6: Distributed Design and Architecture of Cloud Foundry

aPaaS

• Application Platform as a Service

• Applications and Services

6

Page 7: Distributed Design and Architecture of Cloud Foundry

aPaaS

• Application Platform as a Service

• Applications and Services

• Not • VMs

• Memory

• Storage

• Networks

• CPU

7

Page 8: Distributed Design and Architecture of Cloud Foundry

What isOpenPaaS?

8

Page 9: Distributed Design and Architecture of Cloud Foundry

OpenPaaS

• Multi-Language

• Multi-Framework

• Multi-Services

• Multi-Cloud, Multi-IaaS

• Hybrid - Public or Private or Both

• OpenSource

9

Page 10: Distributed Design and Architecture of Cloud Foundry

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

Page 11: Distributed Design and Architecture of Cloud Foundry

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

Page 12: Distributed Design and Architecture of Cloud Foundry

What isour Goal?

12

Page 13: Distributed Design and Architecture of Cloud Foundry

What was our Goal?

13

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

not the infrastructure

Page 14: Distributed Design and Architecture of Cloud Foundry

What was our Goal?

14

Best of breed delivery platform for all modern

applications and frameworks

Page 15: Distributed Design and Architecture of Cloud Foundry

What was our Goal?

15

Favor Choice

and

Openness

Page 16: Distributed Design and Architecture of Cloud Foundry

How was it Built?

16

Page 17: Distributed Design and Architecture of Cloud Foundry

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

Page 18: Distributed Design and Architecture of Cloud Foundry

High Level

18

IaaS

Orchestrator

CF Kernel

Hardware - CPU/Memory/Disk/Network

Clients (VMC, STS, Browser)

Page 19: Distributed Design and Architecture of Cloud Foundry

Basic Premises

• Fail Fast

• Self Healing

• Horizontally Scalable Components

• Distributed State

• No Single Point of Failure

• Should be as simple as possible

19

Page 20: Distributed Design and Architecture of Cloud Foundry

Basic Patterns

• Event-Driven

• Asynchronous

• Non-blocking

• Independent, Idempotent

• Message Passing

• Eventually Consistent

20

Page 21: Distributed Design and Architecture of Cloud Foundry

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

Page 22: Distributed Design and Architecture of Cloud Foundry

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

Page 23: Distributed Design and Architecture of Cloud Foundry

Kernel Components

• Router

• CloudController

• DEA

• HealthManager

• Service Provisioning Agent

• Messaging System

23

Page 24: Distributed Design and Architecture of Cloud Foundry

Logical View

24

VMC client STS plugin Browser(user app access)

Routers

CloudControllers App

Services

App

HealthManager

DEA Pool

Messaging

Page 25: Distributed Design and Architecture of Cloud Foundry

25

Arc

hit

ec

ture

Page 26: Distributed Design and Architecture of Cloud Foundry

Messaging

26

Page 27: Distributed Design and Architecture of Cloud Foundry

Messaging

27

“The Nervous System”

Page 28: Distributed Design and Architecture of Cloud Foundry

Messaging

28

VMC client STS plugin Browser(user app access)

Routers

CloudControllers App

Services

App

HealthManager

DEA Pool

Messaging

Page 29: Distributed Design and Architecture of Cloud Foundry

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

Page 30: Distributed Design and Architecture of Cloud Foundry

Router

30

Page 31: Distributed Design and Architecture of Cloud Foundry

Router

31

“Traffic Cop”

Page 32: Distributed Design and Architecture of Cloud Foundry

Router

32

VMC client STS plugin Browser(user app access)

Routers

CloudControllers App

Services

App

HealthManager

DEA Pool

Messaging

Page 33: Distributed Design and Architecture of Cloud Foundry

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

Page 34: Distributed Design and Architecture of Cloud Foundry

CloudController

34

Page 35: Distributed Design and Architecture of Cloud Foundry

CloudController

35

“The King”

Page 36: Distributed Design and Architecture of Cloud Foundry

CloudController

36

VMC client STS plugin Browser(user app access)

Routers

CloudControllers App

Services

App

HealthManager

DEA Pool

Messaging

Page 37: Distributed Design and Architecture of Cloud Foundry

CloudController

• Handles all state transitions

• Deals with users, apps, and services

• Packages and Stages applications

• Binds Services to Applications

• Presents external REST API

37

Page 38: Distributed Design and Architecture of Cloud Foundry

HealthManager

38

Page 39: Distributed Design and Architecture of Cloud Foundry

HealthManager

39

“Court Jester”

Page 40: Distributed Design and Architecture of Cloud Foundry

HealthManager

40

VMC client STS plugin Browser(user app access)

Routers

CloudControllers App

Services

App

HealthManager

DEA Pool

Messaging

Page 41: Distributed Design and Architecture of Cloud Foundry

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

Page 42: Distributed Design and Architecture of Cloud Foundry

DEA

42

Page 43: Distributed Design and Architecture of Cloud Foundry

DEA

43

“Droplet Execution Agent”

Page 44: Distributed Design and Architecture of Cloud Foundry

DEA

44

VMC client STS plugin Browser(user app access)

Routers

CloudControllers App

Services

App

HealthManager

DEA Pool

Messaging

Page 45: Distributed Design and Architecture of Cloud Foundry

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

Page 46: Distributed Design and Architecture of Cloud Foundry

How does it allWork?

46

Page 47: Distributed Design and Architecture of Cloud Foundry

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

Page 48: Distributed Design and Architecture of Cloud Foundry

48

Arc

hit

ec

ture

Page 49: Distributed Design and Architecture of Cloud Foundry

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

Page 50: Distributed Design and Architecture of Cloud Foundry

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

Page 51: Distributed Design and Architecture of Cloud Foundry

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

Page 52: Distributed Design and Architecture of Cloud Foundry

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

Page 53: Distributed Design and Architecture of Cloud Foundry

53

Arc

hit

ec

ture

Page 54: Distributed Design and Architecture of Cloud Foundry

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

Page 55: Distributed Design and Architecture of Cloud Foundry

What aboutServices?

55

Page 56: Distributed Design and Architecture of Cloud Foundry

Services

56

VMC client STS plugin Browser(user app access)

Routers

CloudControllers App

Services

App

HealthManager

DEA Pool

Messaging

Page 57: Distributed Design and Architecture of Cloud Foundry

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

Page 58: Distributed Design and Architecture of Cloud Foundry

Provisioning

58

VMC/STS

Routers

CloudControllers Services Gateway

Service NodeMySQL

Service NodeRedis

Service NodeRedis

Messaging

Application

1

2

3

45

6

Page 59: Distributed Design and Architecture of Cloud Foundry

Access (Direct)

59

Routers

CloudControllers Services Gateway

Service NodeMySQL

Service NodeRedis

Service NodeRedis

Messaging

Application

1

2

Browser(user app access)

Page 60: Distributed Design and Architecture of Cloud Foundry

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

Page 61: Distributed Design and Architecture of Cloud Foundry

Learn more:

www.cloudfoundry.org

blog.cloudfoundry.com

support.cloudfoundry.com

61

Page 62: Distributed Design and Architecture of Cloud Foundry

62

Thank You