heat up your stack

60
Heat up your Stack Rico Lin Chief OpenStack Technologist, inwinSTACK IRC: ricolin #heat [email protected] @ricolintw

Upload: rico-lin

Post on 08-Jan-2017

386 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Heat up your stack

Heat up your StackRico LinChief OpenStack Technologist, inwinSTACK

IRC: ricolin #[email protected]@ricolintw

Page 2: Heat up your stack

Your HA OpenStack Architecture

Deploy Compute

Storage

Controller

HA

Page 3: Heat up your stack

OpenStack

Page 4: Heat up your stack

imageflavor

userrole

Port instance

Trove

Sahara

MuranoMagnum

keypairsubnet

networksecurity group

Project

load balance

container volumeFloating IP

volumealarm

Page 5: Heat up your stack

imageflavor

userrole

Port instance

Trove

Sahara

MuranoMagnum

keypairsubnet

networksecurity group

Project

load balance

container volumeFloating IP

volumealarm

A Mess

Page 6: Heat up your stack

But You Didn’t Know, It’s Happening...

Page 7: Heat up your stack

Making It Right and Making It Fast!

Page 8: Heat up your stack

imageflavor

userrole

Port instance

Trove

Sahara

MuranoMagnum

keypairsubnet

networksecurity group

Project

load balance

container volumeFloating IP

volumealarm

User Image Flavor Role Alarm Vloume

Port

Network

ContainerFloating

IP

Subnet

Load balance

Keypair

Security group

Instance

Vloume

Magnum

Trove

Sahara

Murano

ProjectUse Heat Resource to Redefine Old Resource

Page 9: Heat up your stack

Create Stack for Default Resource Set

heat_template_version: 2015-04-30resources: image_for_cloudos: type: OS::Glance::Image properties: … image_for_ubuntu: type: OS::Glance::Image properties: … image_for_win7: type: OS::Glance::Image properties: …

Stack: images

Image Image

Image

Page 10: Heat up your stack

Create Stack for Authorization Topology

Stack: Authorization

ProjectProject Role

Role User UserUser

Page 11: Heat up your stack

Stack: Network_TopologyRouter

Create Stack for Network Topology

Network NetworkSubnet SubnetPort Port

Page 12: Heat up your stack

Create Stack for Instance Topology

Stack: InstanceServerVolumeKeypair

Murano Magnum Trove

Sceurity GroupFloating IPLBaas

Page 13: Heat up your stack

imageflavor

userrole

Port instance

Trove

Sahara

MuranoMagnum

keypairsubnet

networksecurity group

Project

load balance

container volumeFloating IP

volumealarm

User Image Flavor Role Alarm Vloume

Port

Network

ContainerFloating

IP

Subnet

Load balance

Keypair

Security group

Instance

Vloume

Magnum

Trove

Sahara

Murano

Project

Stack: NetworkTopology

Stack: Instance

Container

Authentication Image

security group

volume

Flavor Alarm volume

AuthorizationEverything Transform

to

Stack

Page 14: Heat up your stack

Example: Create Instance

1 Operation8 Operations VS

Stack

port

Instance

security group

Volume

keypair

imagefloating IP

LBaas

Page 15: Heat up your stack

Operations You Give, Mistake You’ll Make.

The More

Page 16: Heat up your stack

imageflavor

userrole

Port instance

Trove

Sahara

MuranoMagnum

keypairsubnet

networksecurity group

Project

load balance

container volumeFloating IP

volumealarm

How many operations to draw this structure?!

Page 17: Heat up your stack

Migration do

Happens...

Page 18: Heat up your stack

Withdraw entire resources set by dependency

StackStack

StackStack

Page 19: Heat up your stack

No Zombie Resources

StackStack

Stack

Page 20: Heat up your stack

Same Resources Structure

StackStack

StackStack

New

Page 21: Heat up your stack

Resources Structure on Horizon

Stack

Page 22: Heat up your stack

Stack is Updatable

Stack

Page 23: Heat up your stack

Get file from others, make control flow clean

type: OS::Heat::SoftwareConfig config:

get_file: script.sh

Stack

Script.sh

Page 24: Heat up your stack

type: OS::Neutron::FloatingIP

depends_on: port_A

Set Dependency cross Resourcess

Stack

Page 25: Heat up your stack

StackGet Resource Info Direct From Another Resource

type: OS::Nova::Server properties:

flavor: {

get_resource: flavor}

user_data: {

get_attr: [boot_config, config]}

Page 26: Heat up your stack

type: Database_node.yaml properties: role: ...

network: ... flavor: ... image: ...

Nested Stack Make Management Easy

Stack

Stack

Page 27: Heat up your stack

Whereare

Applications?

Page 28: Heat up your stack

config: type: OS::Heat::SoftwareConfig group: ansible config: get_file: applicaton_deploy_flow.ansible deployment: ... server: ...

Application in Heat

Stack for Application

Image Server SoftwareConfigSoftwareDeployment ControlS

criptScript

Page 29: Heat up your stack

server: type: OS::Nova::Server user_data_format: SOFTWARE_CONFIGconfig: ... deployment: ...

Application in Heat

Stack for Application

Image Server SoftwareConfig

SoftwareDeployment ControlScriptScript

Page 30: Heat up your stack

deployment: type: OS::Heat::SoftwareDeployment config: get_resource: config server: get_resource: server config: … server: ...

Application in Heat

Stack for Application

Image Server SoftwareConfig

Script SoftwareDeployment ControlScript

Page 31: Heat up your stack

Use cases - Ceph

Stack: Ceph

Image Server SoftwareConfig

SoftwareDeployment

Cephansible control scriptMe Too!

Ceph Ansiblescript

Hi, I pull from Ceph-ansible repo

Page 32: Heat up your stack

Use cases - Ceph

Stack: Ceph

Image Server SoftwareConfig

SoftwareDeployment

Cephansible control script

Hi, Server!

Here is SoftwareConfig for you, and with parameter

(role= ceph-monitor)Go knock yourself out!!!

Ceph Ansiblescript

Page 33: Heat up your stack

Use cases - ?

Stack

Image Server SoftwareConfig

?Ansiblescript SoftwareDeployment

?Ansible control script Ansible

Puppet

ScriptSalt

Kubelet

Cfn-initDocker-compose

Page 34: Heat up your stack

Example: Application Deployment

1 Operation11 + ? Operations VS

Stack

Write config

Run Ansible port

Instance

security group

Volume

keypair

imagefloating IP

LBaas

Collect information for other instance

Page 35: Heat up your stack

SoftwareConfig Flow

Image

script

Heat-engine

Nova

Server

os-collect-configos-refresh-configheat-configansible-hookansible-playbookAnsible files

os-apply-config

Page 36: Heat up your stack

Clouds are noisy - servers fail to come up, or die when the underlying hypervisor crashes or suffers a power failure. Heat should be resilient and allow concurrent operations on any sized stack.

convergence_engine = True

Page 37: Heat up your stack

Template Heat-API AMQP

Heat-engine

DB

Original Design

Page 38: Heat up your stack

Ideal Design

Template Heat-API AMQP

Heat-engineAMQPDB

Hey worker this is resource, go create it!!

Worker

Observer

Page 39: Heat up your stack

Current Convergency Design

Current Convergency Design

Template Heat-API AMQP

Heat-engine

AMQP(engine_worker)

Worker

DB

Where isObserver?

Page 40: Heat up your stack

How it Interact between

Convergence Workers?

Page 41: Heat up your stack

Traversal Graph

SyncPointA

SyncPointC

(C,A) => (requirer, required)

SyncPointB

(C,B)

SyncPointD

(D,C)

leaves

StackSyncPoint

*traversal_id*stack_id*entity_id*is_updateinput_dataatomic_key

Page 42: Heat up your stack

Shall We Trace?

Page 43: Heat up your stack

1. create_stack(): Parse template, Create Stack, Validate Stack, and Check Convergence status

Template Heat-API

Heat-engineHeat-engine

AMQP

Heat-engine

AMQP(engine_worker)

Heat-engine

WorkerWorker

Worker

Worker

DB

Stack

Page 44: Heat up your stack

2. converge_stack(): Clear previous traversal sync_point on stack (if any)

Heat-engineHeat-engine

Heat-engine

AMQP(engine_worker)

Heat-engine

SyncPoint

Stack

DB

WorkerWorker

Worker

Worker

AMQPTemplate Heat-API

Page 45: Heat up your stack

leaves

3. _converge_create_or_update():Create dependency and sync_point for traversal

Heat-engine

AMQP(engine_worker)

WorkerWorker

Worker

Worker

C

D

BA

SyncPoint

Stack

DB

Page 46: Heat up your stack

4. check_resoruce():Load resource, check current_traversal is equal to stack’s current_traversal.

Also check timeout or finish

leaves

AMQP(engine_worker)

WorkerWorker

Worker

Worker

A

C

D

BA

SyncPoint

Stack

DB

Page 47: Heat up your stack

5. _do_check_resoruce():Try to update or create resource, replace if upadate failed,

clearup from convergence if can’t get the lock

WorkerA

C

D

BA

SyncPoint

Stack

DB

leaves

Page 48: Heat up your stack

6. check_resoruce_update():Create or update convergence base on action is initial or not

WorkerA

C

D

BA

SyncPoint

Stack

DB

leaves

Page 49: Heat up your stack

7. create_convergence(): Create resource by invoking scheduler: TaskRunner

WorkerA

C

D

BA

SyncPoint

Stack

DB

leaves

Page 50: Heat up your stack

8. create(): Handle resource create failure

WorkerA

C

D

BA

SyncPoint

Stack

DB

leaves

Page 51: Heat up your stack

9. handle_create():Create resource

Worker

C

D

BA

SyncPoint

StackA

DB

leaves

Page 52: Heat up your stack

5-9, 4. check_resoruce():Load next resource, check current_traversal is equal to stack’s current_traversal.

Go execute and check timeout or finish.

AMQP(engine_worker)

WorkerWorker

Worker

Worker

B

C

D

B

SyncPoint

StackA

DB

leaves

Page 53: Heat up your stack

5-9, 4. check_resoruce():Load next resource, check current_traversal is equal to stack’s current_traversal.

Go execute and check timeout or finish.

AMQP(engine_worker)

WorkerWorker

Worker

Worker

C

DSyncPoint

StackA

CB

DB

leaves

Page 54: Heat up your stack

5-9, 4. check_resoruce():Load next resource, check current_traversal is equal to stack’s current_traversal.

Go execute and check timeout or finish.

AMQP(engine_worker)

WorkerWorker

Worker

Worker

DSyncPoint

StackA

DDB

BC

leaves

Page 55: Heat up your stack

3. _converge_create_or_update():Mark completed and purge Database

Heat-engine

AMQP(engine_worker)

WorkerSyncPoint

StackA

DB

BCD

WorkerWorkerWorker

Page 56: Heat up your stack

So What Happens If Conflict?

Page 57: Heat up your stack

Another Stcak Update Request Join?Stack SyncPoint will show which Stack traversal is current.

AMQP(engine_worker)Worker

Worker

C

DSyncPoint

Stack_a

AC

B

DB

Stack_aA

Hey, wrong traversal ID here!!

Me!?

leaves

Page 58: Heat up your stack

Example: Mass Application Deployment

1 Operation

<20 Min.

> 50 Operations

>100 Min.VS

Stack

Page 59: Heat up your stack

Heat Fleet’s sessions● inwinSTACK- Heat Up Your Stack - Deep Dive to Heat, Learn How to

Orchestrate Your Cloud - Wednesday, 11:15am● User/ops session for summit - Wednesday, 3:40pm● Extending OpenStack Heat to Orchestrate Security Policies and Network

Function Service Chains - Thursday, 9:50am● Why Reinvent the Wheel? - Using Murano, Heat, Container Clustering and

Ceilometer to Provide Auto--scaling and Enforce Self-Healing Best Practices in Applications - Thursday, 11:00am

● Heat, Cloud-init & Cloud-config: OpenStack Orchestration Deep Dive, Hands-On Lab - Thursday, 4:30pm

Page 60: Heat up your stack

Q&A