Multi-Container Applications: Andrew Kennedy

Download as pdf or txt
Download as pdf or txt
You are on page 1of 30

Multi-Container

Applications
Spanning Docker, Mesos and OpenStack

Andrew Kennedy
Clocker Project Founder
Cloudsoft Corporation Limited
Agenda

Introduction Features
What is Clocker? Adding extra capabilities
to applications using
Clocker

Blueprints Demonstration
Defining multi-container Live application
applications across deployment across
multiple target Docker, Mesos and
destinations OpenStack
“Containers, not
Virtual Machines,
are the Future
Cloud.”
Introduction
What is Clocker?
@grkvlt
Clocker Statistics
About the Clocker Project

Open Source
1+ Years Old
822 Commits
193 Pull Requests
14 Contributors
2 External

19 KLOC
31 Releases http://www.redotheweb.com/CodeFlower/

Version 1.1.0 available now

@grkvlt
Apache Brooklyn
Application Management Platform

Define Application using Blueprints


OASIS CAMP and TOSCA Standards

Deploy, Manage and Monitor Applications


Provisioning, Installation and Customization
Runtime Management and Monitoring
Policies
AutoScaling, Resilience, Performance, Security

@grkvlt
Apache jclouds
Java Cloud Library

API Agnostic
OpenStack, SoftLayer, Azure, GCE , AWS EC2, …

Create Virtual Machines


Return SSH Endpoint
Create Containers
Docker Provider
Uses REST API
Configuration
Execute Commands

@grkvlt
Docker Engine
Container Management

Isolation
Environment

Performance
Resource Allocation

Composable
Huge Ecosystem
Internal and External

Compute Abstraction
Process Wrapper
Microservices

@grkvlt
Docker Extras
Integrating More Features and Capabilities into Docker

Software-Defined Networking
Project Calico
Weave

Storage and Volume Management


Flocker

More Being Developed…


Native Plugins
Docker Tools
Swarm
Compose

@grkvlt
Apache Mesos
Distributed Systems Kernel

Cluster Management
Resource Sharing and Placement
Calico SDN Support
Frameworks
Aurora, Chronos
Marathon
Riak, Spark, Storm
Hadoop
Tasks
Marathon for Docker

@grkvlt
Docker Cloud Properties

1. On-demand
2. Multi-Tenant
3. Hardware Independent
4. Application Level

@grkvlt
Clocker Positioning
Application
Centric

Platform Platform
Specific Agnostic

Infrastructure
Centric
@grkvlt
Features
Adding extra capabilities to applications
using Clocker
Clocker Features

1. Spins up and Manages Docker


Clusters in the Cloud
2. Deploys Containers and
Networks on Demand
3. Manages Multi-Container
Composite Applications
@grkvlt
Apache Mesos Integration
Marathon Framework

Connect to Existing Mesos Cluster


Scan for Frameworks
Marathon Location for Deployment
Docker Container Entites
Become Marathon Tasks

Arbitrary Entities
Start Marathon Task with Ubuntu Image

Networking
Project Calico Network Module Integration

@grkvlt
Networking Capabilities
Software-Defined Networking

Security Policy for Network Traffic


Inter-Container and External Firewalling

Wide Area and Multi Region SDN


VPN or IPIP and NAT Configuration

Name Resolution and Service Discovery


Traditional BIND DNS Server via a Brooklyn Entity
Brooklyn Injects IP Addresses and Port Numbers

Metaswitch Project Calico


Layer 3 Internet Protocol Traffic
Spans VMs, Mesos and Containers
Internet Scale using BGP
@grkvlt
Application Orchestration

Cloud Virtual
Brooklyn
Provider Machine

Docker
Container
Engine

SDN Network
Clocker
Provider Segment

Mesos Marathon
Cluster Task

@grkvlt
Blueprints
Defining multi-container applications across
multiple target destinations
Application Blueprint

id: my-application
location: my-docker-cloud
services:
- type: docker:redis:3
id: redis
openPorts: 6379
- type: docker:clockercentral/dnmonster:1.0
id: dnmonster
openPorts: 8080
- type: docker:clockercentral/identidock:1.3
id: identidock
portBindings:
80: 9090
links:
- $brooklyn:component("redis")
- $brooklyn:component("dnmonster")

@grkvlt
Application Blueprint

id: my-application
location: my-docker-cloud
services:
- type: docker:redis:3
id: redis
openPorts: 6379
- type: docker:clockercentral/dnmonster:1.0
id: dnmonster
openPorts: 8080
- type: docker:clockercentral/identidock:1.3
id: identidock
portBindings:
80: 9090
links:
- $brooklyn:component("redis")
- $brooklyn:component("dnmonster")

@grkvlt
Application Blueprint

id: my-application
location: my-docker-cloud
services:
- type: org.apache.brooklyn.entity.nosql.redis.RedisStore
id: redis
install.version: 3.0.0
- type: docker:clockercentral/dnmonster:1.0
id: dnmonster
openPorts: 8080
- type: docker:clockercentral/identidock:1.3
id: identidock
portBindings:
80: 9090
links:
- $brooklyn:component("redis")
- $brooklyn:component("dnmonster")

@grkvlt
Application Blueprint

id: my-application
services:
- type: org.apache.brooklyn.entity.nosql.redis.RedisStore
location: my-openstack-cloud
id: redis
install.version: 3.0.0
- type: docker:clockercentral/dnmonster:1.0
location: my-docker-cloud
id: dnmonster
openPorts: 8080
- type: docker:clockercentral/identidock:1.3
location: my-docker-cloud
id: identidock
portBindings:
80: 9090
links:
- $brooklyn:component("redis")
- $brooklyn:component("dnmonster")

@grkvlt
Application Blueprint

id: my-application
services:
- type: org.apache.brooklyn.entity.nosql.redis.RedisStore
location: my-openstack-cloud
id: redis
install.version: 3.0.0
- type: docker:clockercentral/dnmonster:1.0
location: my-mesos-cluster
id: dnmonster
openPorts: 8080
- type: docker:clockercentral/identidock:1.3
location: my-docker-cloud
id: identidock
portBindings:
80: 9090
links:
- $brooklyn:component("redis")
- $brooklyn:component("dnmonster")

@grkvlt
Application Blueprint

id: my-application
services:
- type: org.apache.brooklyn.entity.nosql.redis.RedisStore
location: my-openstack-cloud
id: redis
install.version: 3.0.0
- type: docker:clockercentral/dnmonster:1.0
location: my-mesos-cluster
id: dnmonster
openPorts: 8080
- type: docker:clockercentral/identidock:1.3
location: my-docker-cloud
id: identidock
portBindings:
80: 9090
links:
- $brooklyn:component("redis")
- $brooklyn:component("dnmonster")

@grkvlt
Demonstration
Live application deployment across Docker,
Mesos and OpenStack
“Clocker solves: Docker
Cloud Networking,
Container Placement and
Provisioning, and
Composite Application
Management.”
Thank you!
Andrew Kennedy
@grkvlt
[email protected]
http://clocker.io/
Web Resources

clocker.io

brooklyn.io

github.com/brooklyncentral/clocker/

projectcalico.com

mesos.apache.org

blog.abstractvisitorpattern.co.uk

@grkvlt

You might also like