14
Cloud Series Cloud Foundry NG Deep Dive Animesh Singh ([email protected])

Cloud foundry architecture and deep dive

Embed Size (px)

Citation preview

Page 1: Cloud foundry architecture and deep dive

Cloud Series

Cloud Foundry NG Deep Dive

Animesh Singh ([email protected])

Page 2: Cloud foundry architecture and deep dive

Cloud Foundry PaaS

Cloud Foundry provides a services registry and runtime management layer. Components are dynamically discoverable and loosely coupled, exposing health through HTTP endpoints so agents can collect state

Cloud Foundry Components

User Authentication and Authorization

Router

DEA Pool

Service Gateway Apps

Service Connector

Health Manager

Messaging

Cloud Controller

Build Packs

Cloud Foundry BOSH

MicroClouds

PrivateClouds

PublicClouds

Service Nodes

Page 3: Cloud foundry architecture and deep dive

User Authentication and Authorization

Router

DEA Pool

Service Gateway Apps

Service Connector

Health Manager

Messaging

Cloud Controller

Build Packs

Cloud Foundry BOSH

MicroClouds

PrivateClouds

PublicClouds

Service Nodes

Dynamic RouterThe Router shapes and routes all external system traffic (HTTP/API) and application traffic from the internet/intranet. It maintains a dynamic routing table for each load-balanced app instance with IP addresses and ports for access via the internet.

Cloud Foundry Components

Responsible for:•Load balancing•Maintain routing table•Access logs

Page 4: Cloud foundry architecture and deep dive

User Authentication and Authorization

Router

DEA Pool

Service Gateway Apps

Service Connector

Health Manager

Messaging

Cloud Controller

Build Packs

Cloud Foundry BOSH

MicroClouds

PrivateClouds

PublicClouds

Service Nodes

UAAThe User Authorization and Authentication system provides user identity, security and authorization services. It manages third party Oauth 2.0 access credentials..

Cloud Foundry Components

Responsible for:•Token Server•ID Server (User management)•OAuth Scopes (Groups)•Access auditing

Page 5: Cloud foundry architecture and deep dive

User Authentication and Authorization

Router

DEA Pool

Service Gateway Apps

Service Connector

Health Manager

Messaging

Cloud Controller

Build Packs

Cloud Foundry BOSH

MicroClouds

PrivateClouds

PublicClouds

Service Nodes

Cloud ControllerThe Cloud Controller interfaces with clients (cf, STS, Eclipse) for account and provisioning control. It provides a RESTful interface to domain objects (apps, services, organizations, spaces, service instances, user roles, and more).

CLI

Cloud Foundry Components

Responsible for:•App expected state•Permissions/Authz•Orgs/Spaces/Users•Services management•App placement•App desired state convergence•Auditing/Journaling•Billing events•Blob storage

Page 6: Cloud foundry architecture and deep dive

User Authentication and Authorization

Router

DEA Pool

Service Gateway Apps

Service Connector

Health Manager

Messaging

Cloud Controller

Build Packs

Cloud Foundry BOSH

MicroClouds

PrivateClouds

PublicClouds

Service Nodes

Health ManagerThe Health Manager monitors application uptime/health by looking for mismatched application states (expected/actual). The Cloud Controller provides the expected state and the DEAs provide the current state. If the Health Manager sees an incorrect current state, it notifies the Cloud Controller.

Cloud Foundry Components

Responsible for:•Maintains the actual state of apps•Compares to expected state

Page 7: Cloud foundry architecture and deep dive

User Authentication and Authorization

Router

DEA Pool

Service Gateway Apps

Service Connector

Health Manager

Messaging

Cloud Controller

Build Packs

Cloud Foundry BOSH

MicroClouds

PrivateClouds

PublicClouds

Service Nodes

DEA and BuildpacksA DEA (Droplet Execution Agent)is a secure and fully isolated container – a VM that can run one or multiple apps. DEAs are responsible for an app’s lifecycle: Buildpacks create app droplets which execute on a DEA.

Cloud Foundry Components

DEA Responsible for:•Manage Linux containers (Warden)

• Process, File system• Network, Memory

•Manage app lifecycle•App log and file streaming•DEA heartbeats

Buildpacks Responsible for:•Staging

• Detect, Compile, Release•Configure droplet

• Runtime (Ruby/Java/Node/Python)• Container (Tomcat/Websphere)• Application (.WAR, .rb, .py)

Page 8: Cloud foundry architecture and deep dive

Service GatewayA Service Gateway provides an interface for both native and external 3rd party services. Service processes run on Service Nodes or with external 3rd party SaaS services (e.g., email, messaging, database, storage, etc.).

User Authentication and Authorization

Router

DEA Pool

Service Gateway Apps

Service Connector

Health Manager

Messaging

Cloud Controller

Build Packs

Cloud Foundry BOSH

MicroClouds

PrivateClouds

PublicClouds

Service Nodes

Cloud Foundry Components

Responsible for:•Makes create/delete/bind/unbind calls to service nodes•Requests inventory of existing instances and bindings from cloud controller for caching, orphan management etc.

Page 9: Cloud foundry architecture and deep dive

User Authentication and Authorization

Router

DEA Pool

Service Gateway Apps

Service Connector

Health Manager

Messaging

Cloud Controller

Build Packs

Cloud Foundry BOSH

MicroClouds

PrivateClouds

PublicClouds

Service Nodes

MessagingA fast internal messaging bus (NATS) manages all system communication.

Cloud Foundry Components

Responsible for:•Non-Persistent messaging•Pub/Sub•Queues (app events)•Directed messages (INBOX)

Page 10: Cloud foundry architecture and deep dive

Staging and Runnning an Application

Page 11: Cloud foundry architecture and deep dive

Creating Custom Frameworks / Buildpacks•Buildpacks are a convenient way of packaging framework and/or runtime support for your application. Standard buildpacks available Ruby (Rails, Rack and Sinatra),Java (Java_web, Spring, Grails and Play),Node

• Custom Buildpacks: The buildpack structure is pretty straight forward. A buildpack repository contains three main scripts, situated in a folder named 'bin'

bin/detectThis script is used to determine whether to apply this buildpack to an application or not. The script is called with one argument, the build directory for the application.bin/compileThe compile script is responsible for actually building the droplet that will be run by the DEA. The script is run with two arguments, the build directory for the application and the cache directory, which is a location the buildpack can use to store assets during the build process.bin/release

The release script provides feedback metadata back to Cloud Foundry, it's run with one argument, the build location of the application. The expected format for the return data is YAML

Page 12: Cloud foundry architecture and deep dive

DEAs and Warden Containers•DEAs: The Droplet Execution Agent (DEA) is written in Ruby and managing an application instance's life cycle. It can be instructed by the Cloud Controller to start and stop application instances. It keeps track of all started instances, and periodically broadcasts messages about their state over NATS (meant to be picked up by the Health Manager). The DEA depends on Warden to run application instances.•Warden: Warden is a framework that allows you to spawn containers in seconds and programmatically control resource isolation (memory, bandwidth, disk), mounts, processes and other things using APIs.Isolation is achieved by namespacing kernel resources that would otherwise be shared. The intended level of isolation is set such that multiple containers present on the same host should not be aware of each others presence Resource control is done by using Linux Control Groups. Every container is placed in its own control group At its core warden is a Ruby daemon. Currently tested and verified for Ubuntu and CentOS, though experimental version exists for Windows.

DEA Pool

Apps

Build Packs

Page 13: Cloud foundry architecture and deep dive

Organization and spaces are two new concept in NGOrganizations: An organization is the top-most meta object within the Cloud Foundry infrastructure. Spaces: An organization can contain multiple spaces. The defaults for a standard Cloud Foundry install are development, test, and production. Domains: A domain is a domain-name like acme.com or foo.net. Routes: A route, based on a domain with an optional host as a prefix, may be associated with one or more applications.

Organization/Spaces/Users

Page 14: Cloud foundry architecture and deep dive

© 2013 IBM Corporation