mirantis folsom meetup intro

51
OpenStack Overview Mirantis, Inc.

Upload: mirantis

Post on 23-Aug-2014

1.731 views

Category:

Investor Relations


1 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Mirantis Folsom Meetup Intro

OpenStack Overview

Mirantis, Inc.

Page 2: Mirantis Folsom Meetup Intro

What is OpenStack?

"Open source software for building private and public clouds"

Page 3: Mirantis Folsom Meetup Intro

OpenStack capabilities

● VMs on demand○ provisioning○ snapshotting

● Volumes● Networks● Multi-tenancy

○ quotas for different users○ user can be associated with multiple tenants

● Object storage for VM images and arbitrary files

Page 4: Mirantis Folsom Meetup Intro

OpenStack History

● July 2010 - Initial announcement● October 2010 - Austin Release● February 2011 - Bexar Release● April 2011 - Cactus Release● October 2011 - Diablo Release● April 2012 - Essex Release● October 2012 - Folsom Release● April 2013 - Grizzly Release

Page 5: Mirantis Folsom Meetup Intro

OpenStack Projects

● Nova (Compute)● Glance (Image Service)● Swift (Object Store)● Keystone (auth)● Horizon (Dashboard)● Quantum (Network) formerly nova-network

● Cinder (Block Storage) formerly nova-volume

Page 6: Mirantis Folsom Meetup Intro

OpenStack Projects: Relationship

Page 7: Mirantis Folsom Meetup Intro

OpenStack: Deployment Topologycontrol cluster

Horizon Keystone

GlanceQuantum

CinderCloud Ctrl.(nova)

compute cluster

computenode

computenode

computenode

computenode

computenode

computenode

storage cluster

storagenode

storagenode

storagenode

storagenode

storagenode

storagenode

"one to one" relationship with each deployment instance.

Page 8: Mirantis Folsom Meetup Intro

nova: Compute

Swift

nova: Cloud Controller

OpenStack Projects: Detailed View (Essex)

nova-api

scheduler

nova-network

nova-volume

nova-db

queue

nova-compute

hypervisor

Glance

glance-api

object store

glance-registry

Keystone

Shared Storage

endpoint

proxy-server

Horizon CLI

Page 9: Mirantis Folsom Meetup Intro

nova: Compute

Swift

nova: Cloud Controller

Still part of nova

nova-api

scheduler

nova-network

nova-volume

nova-db

queue

nova-compute

hypervisor

Glance

glance-api

object store

glance-registry

Keystone

Shared Storage

endpoint

proxy-server

Horizon CLI

Page 10: Mirantis Folsom Meetup Intro

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin

quantumserver

Cinder

endpoint

cinder-db

scheduler

queue

cinder-vol

controller

nova-api

scheduler

Keystone

keystoneserver

keystone-db

Glance

glance-api

glance-registry

glancedb

block storage

node

storage

compute node

Hypervisor

Network

VM

nova: Computenova-

compute

Page 11: Mirantis Folsom Meetup Intro

OpenStack Projects: Communication TypesHTTPAMQPSQLnatv. APIiSCSI

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 12: Mirantis Folsom Meetup Intro

Use Case: provisioning a VM

Page 13: Mirantis Folsom Meetup Intro

Initial State Tenant is created, provisioning quota is available, user has an access to Horizon/CLI

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 14: Mirantis Folsom Meetup Intro

User specifies VM params: name, flavor, keys, etc. and hits "Create" button

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

Step 1: Request VM Provisioning via UI/CLI

block storage node

storage

network node

dhcp serv.

router/gw

Page 15: Mirantis Folsom Meetup Intro

Step 1: Request Provisioning via UI/CLI

● From UIa. Login to Horizonb. Specify params of VM in "Create VM" formc. Hit "Create" button

● Under the hooda. Form params are converted to POST datab. "Create" request initiate HTTP POST request to back-

end■ To Keystone if auth token is not cached■ To nova-api if auth token hasn't expired yet

Page 16: Mirantis Folsom Meetup Intro

Horizon

"The OpenStack Dashboard (Horizon) provides a baseline user interface for

managing OpenStack services."

Page 17: Mirantis Folsom Meetup Intro

Step 2: Validate Auth Data Horizon sends HTTP request to Keystone. Auth info is specified in HTTP headers.

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 18: Mirantis Folsom Meetup Intro

Keystone

"Keystone is an OpenStack project that provides Identity, Token, Catalog and Policy services for use specifically by

projects in the OpenStack family."

Page 19: Mirantis Folsom Meetup Intro

Keystone Architecture

Page 20: Mirantis Folsom Meetup Intro

Keystone: auth flow

Page 21: Mirantis Folsom Meetup Intro

Step 2: Validate Auth DataKeystone sends temporary token back to Horizon via HTTP.

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 22: Mirantis Folsom Meetup Intro

Step 3: Send API request to nova-apiHorizon sends POST request to nova-api (signed with given token).

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 23: Mirantis Folsom Meetup Intro

Step 4: Validate API Token nova-api sends HTTP request to validate API token to Keystone.

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 24: Mirantis Folsom Meetup Intro

Step 4: Validate API Token Keystone validates API token and sends HTTP response with token acceptance/rejection info.

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 25: Mirantis Folsom Meetup Intro

Step 5: Process API request nova-api parses request and validates it by fetching data from nova-db. If the request is valid, it saves initia db entry about VM to the database.

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 26: Mirantis Folsom Meetup Intro

nova-api

"nova-api is a RESTful API web service which is used to interact with nova"

Page 27: Mirantis Folsom Meetup Intro

nova-api clients

Page 28: Mirantis Folsom Meetup Intro

nova database

"nova database stores current state of all objects in compute cluster."

Page 29: Mirantis Folsom Meetup Intro

Step 6: Publish provisioning request to queue nova-api makes rpc.call to scheduler. It publishes a short message to scheduler queue with VM info.

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 30: Mirantis Folsom Meetup Intro

Step 6: Pick up provisioning request scheduler picks up the message from MQ.

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 31: Mirantis Folsom Meetup Intro

Message queue

"Message queue is a unified way for collaboration between nova

components."

Page 32: Mirantis Folsom Meetup Intro

Step 7: Schedule provisioning Scheduler fetches information about the whole cluster from database and based on this info selects the most applicable compute host.

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 33: Mirantis Folsom Meetup Intro

nova-scheduler

"nova-scheduler is a daemon, which determines, on which compute host

the request should run."

Page 34: Mirantis Folsom Meetup Intro

nova-scheduler: available schedulers

Scheduler Description

Chance Picks a host that is up at random

Simple Picks a host that is up and has the fewest running instances

Filter Picks the best-suited host which satisfies selected filter

Multi A scheduler that holds multiple sub-schedulers

Page 35: Mirantis Folsom Meetup Intro

Step 8: Start VM provisioning on compute nodeScheduler publishes message to the compute queue (based on host ID) and triggers VM provisioning

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 36: Mirantis Folsom Meetup Intro

Step 9: Start VM rendering via hypervisornova-compute fetches information about VM from DB, creates a command to hypervisor and delegates VM rendering to hypervisor.

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 37: Mirantis Folsom Meetup Intro

nova-compute

"nova-compute is a worker daemon, which primarily creates and terminates

VMs via hypervisor API."

Page 38: Mirantis Folsom Meetup Intro

nova-compute drivers

nova-compute

XCP

VM

VM

VMWare

VM

VM

HyperV

VM

VM

LPAR

VM

VM

libvirt

KVM

VM

VM

Xen

VM

VM

Qemu

VM

VM

LXC

VM

VM

Page 39: Mirantis Folsom Meetup Intro

Step 10: Configure networknova-compute makes a call to quantum-api to provision network for the instance

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 40: Mirantis Folsom Meetup Intro

Step 11: configure networkquantum configures IP, gateway, L2 connectivity

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 41: Mirantis Folsom Meetup Intro

Step 12: Request volume attachmentIt is assumed a volume is already created. Nova-compute contacts cinder to get volume data.

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

block storage

nodestorage

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

Page 42: Mirantis Folsom Meetup Intro

Step 12: Request volume attachmentNova-compute sets up iSCSI initiator & instructs the hypervisor to mount iSCSI vol. as a new block device

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

block storage

nodestorage

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

Page 43: Mirantis Folsom Meetup Intro

Step 12: Request volume attachmentiSCSI communication begins

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

block storage node

storage

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

network node

dhcp serv.

router/gw

Page 44: Mirantis Folsom Meetup Intro

cinder

"block storage as-a-service"

Page 45: Mirantis Folsom Meetup Intro

cinder architecture

Page 46: Mirantis Folsom Meetup Intro

Step 13: Request VM Image from Glancenova-compute requests VM image from Glance via Image ID

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 47: Mirantis Folsom Meetup Intro

Glance

"The Glance project provides services for discovering, registering, and retrieving virtual

machine images."

Page 48: Mirantis Folsom Meetup Intro

Step 14: Get Image URI from GlanceIf image with given image ID can be found - return URI

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 49: Mirantis Folsom Meetup Intro

Step 15: Download image from Swiftnova-compute downloads image using URI, given by Glance, from Glance's back-end. After downloading - it renders it.

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 50: Mirantis Folsom Meetup Intro

Initial State

nova

nova-db

queue

Swift

object store

proxy-server

UI: horizon or CLI

Quantum

quantum-db

quantumplugin/agt

quantumserver

Cindercinder-api

cinder-db

scheduler

queue

cinder-vol

controllernova-api

scheduler

Keystonekeystone

serverkeyston

e-db

Glanceglance-api

glance-registry

glancedb

compute nodeHypervisor

Network

VM

nova: Computenova-

compute

block storage node

storage

network node

dhcp serv.

router/gw

Page 51: Mirantis Folsom Meetup Intro

www.mirantis.com