Multi-Container Applications Spanning Docker, Mesos and OpenStack Andrew Kennedy Clocker Project Founder Cloudsoft Corporation
Multi-Container ApplicationsSpanning Docker, Mesos and OpenStack
Andrew KennedyClocker Project FounderCloudsoft Corporation
Agenda
FeaturesAdding extra capabilities to applications using Clocker
DemonstrationLive application deployment across Docker, Mesos and OpenStack
IntroductionWhat is Clocker?
BlueprintsDefining multi-container applications across multiple target destinations
“Containers, not Virtual Machines,
are the Future Cloud.”
IntroductionWhat is Clocker?
@grkvlt
@grkvlt
Clocker StatisticsAbout the Clocker Project
Open Source1+ Years Old786 Commits183 Pull Requests14 Contributors2 External
15 KLOC31 ReleasesVersion 1.1.0 available now
http://www.redotheweb.com/CodeFlower/
@grkvlt
Application Management Platform
Define Application using BlueprintsOASIS CAMP and TOSCA Standards
Deploy, Manage and Monitor ApplicationsProvisioning, Installation and CustomizationRuntime Management and MonitoringPoliciesAutoScaling, Resilience, Performance, Security
Apache Brooklyn
@grkvlt
Apache jcloudsJava Cloud Library
API AgnosticOpenStack, SoftLayer, Azure, GCE , AWS EC2, …
Create Virtual MachinesReturn SSH EndpointCreate ContainersDocker ProviderUses REST APIConfigurationExecute Commands
@grkvlt
Docker Engine
IsolationEnvironment
PerformanceResource Allocation
ComposableHuge EcosystemInternal and External
Compute AbstractionProcess WrapperMicroservices
Container Management
@grkvlt
Docker ExtrasIntegrating More Features and Capabilities into Docker
Software-Defined NetworkingProject CalicoWeave
Storage and Volume ManagementFlocker
More Being Developed…Native PluginsDocker ToolsSwarmCompose
@grkvlt
Apache MesosDistributed Systems Kernel
Cluster ManagementResource Sharing and PlacementCalico SDN SupportFrameworksAurora, ChronosMarathonRiak, Spark, StormHadoop
TasksMarathon for Docker
@grkvlt
Docker Cloud Properties
1. On-demand
2. Multi-Tenant
3. Hardware Independent
4. Application Level
@grkvlt
Platform Specific
Platform Agnostic
Application Centric
Infrastructure Centric
Clocker Positioning
FeaturesAdding extra capabilities to applications using Clocker
@grkvlt
Clocker Features
1. Spins up and Manages Docker Clusters in the Cloud
2. Deploys Containers and Networks on Demand
3. Manages Multi-Container Application Deployments
@grkvlt
Clocker Blueprints
@grkvlt
Application Orchestration
Docker Engine
Virtual Machine
Container
Clocker Network Segment
SDNProvider
CloudProviderBrooklyn
Mesos Cluster
Marathon Task
@grkvlt
Apache Mesos IntegrationMarathon Framework
Connect to Existing Mesos ClusterScan for FrameworksMarathon Location for DeploymentDocker Container EntitesBecome Marathon Tasks
Arbitrary EntitiesStart Marathon Task with Ubuntu Image
NetworkingProject Calico Network Module Integration
@grkvlt
Networking CapabilitiesSecurity Policy for Network TrafficInter-Container and External Firewalling
Wide Area and Multi Region SDNVPN or IPIP and NAT Configuration
Cross Platform SDNBoth VMs and Containers on a Private Network
Name Resolution and Service DiscoveryWeave DNS or Similar Lightweight DNS ImplementationTraditional BIND DNS Server via a Brooklyn EntityBrooklyn Injects Endpoint IP Addresses and Port Numbers
@grkvlt
Metaswitch Project CalicoLayer 3 Software-Defined Networking
Runs on Bare Metal, VMs and ContainersUses OS IP routing and forwardingInternet Scale using BGP
Centralised configuration with etcdUses libnetwork in Docker 1.9.0Spans VMs, Mesos and ContainersCalico OpenStack Neutron DriverCalico Docker Networking PluginCalico Network Module for Mesos
@grkvlt
Container 172.16.1.1
Host 10.1.1.1
SDN Controller
Container 172.16.1.2
Internet SDN Gateway
Host 10.1.1.2
SDN Agent
SDN Agent
Clocker Networking
BlueprintsDefining multi-container applications across multiple target destinations
@grkvlt
id: my-applicationlocation: my-docker-cloudservices:- type: docker:redis:3id: redisopenPorts: 6379
- type: docker:amouat/dnmonster:1.0id: dnmonsteropenPorts: 8080
- type: docker:amouat/identidock:1.0id: identidockportBindings:
80: 9090links:- $brooklyn:component("redis")- $brooklyn:component("dnmonster")
Application Blueprint One
@grkvlt
id: my-applicationlocation: my-docker-cloudservices:- type: org.apache.brooklyn.entity.nosql.redis.RedisStoreid: redisinstall.version: 3.0.0
- type: docker:amouat/dnmonster:1.0id: dnmonsteropenPorts: 8080
- type: docker:amouat/identidock:1.0id: identidockportBindings:
80: 9090links:- $brooklyn:component("redis")- $brooklyn:component("dnmonster")
Application Blueprint Two
@grkvlt
id: my-applicationservices:- type: org.apache.brooklyn.entity.nosql.redis.RedisStorelocation: my-openstack-cloudid: redisinstall.version: 3.0.0
- type: docker:amouat/dnmonster:1.0location: my-docker-cloudid: dnmonsteropenPorts: 8080
- type: docker:amouat/identidock:1.0location: my-docker-cloudid: identidockportBindings:
80: 9090links:- $brooklyn:component("redis")- $brooklyn:component("dnmonster")
Application Blueprint Three
@grkvlt
id: my-applicationservices:- type: org.apache.brooklyn.entity.nosql.redis.RedisStorelocation: my-openstack-cloudid: redisinstall.version: 3.0.0
- type: docker:amouat/dnmonster:1.0location: my-mesos-clusterid: dnmonsteropenPorts: 8080
- type: docker:amouat/identidock:1.0location: my-docker-cloudid: identidockportBindings:
80: 9090links:- $brooklyn:component("redis")- $brooklyn:component("dnmonster")
Application Blueprint Four
DemonstrationLive application deployment across Docker, Mesos and OpenStack
“Clocker solves: Docker Cloud Networking,
Container Placement and Provisioning, and
Composite Application Management.”
Thank you!Andrew Kennedy@[email protected]://clocker.io/
@grkvlt
clocker.io
brooklyn.io
github.com/brooklyncentral/clocker/
projectcalico.com
mesos.apache.org
blog.abstractvisitorpattern.co.uk
Web Resources