10. @grkvlt
â˘âŻ So0ware-ÂâDeďŹned
 Networking
Â
â˘âŻ Calico
Â
â˘âŻ Weave
Â
â˘âŻ Storage
 and
 Volume
 Management
Â
â˘âŻ Flocker
Â
â˘âŻ More
 Being
 DevelopedâŚ
Â
â˘âŻ Na.ve
 Plugins
Â
Docker Extras
11. @grkvltCopyright 2015 by Cloudsoft Corporation Limited
Apache Mesos ...
â˘âŻ Distributed Systems Kernel
â˘âŻ Cluster Management
â˘âŻ Resource Sharing and Placement
â˘âŻ Calico SDN Support
â˘âŻ Frameworks
â˘âŻ Aurora and Marathon
â˘âŻ Riak, Spark, Hadoop, Storm et al
â˘âŻ Brooklyn Scheduler
12. @grkvlt
What does it do?
1.⯠Spins up and Manages Docker
Clusters in the Clouds
2.⯠Serves up Containers on Demand
3.⯠Manages Composite Application
Deployments
Copyright 2015 by Cloudsoft Corporation Limited
13. @grkvlt
What does it provide?
â˘âŻ Infrastructure Management
â˘âŻ Docker Hosts
â˘âŻ Swarm Controller
â˘âŻ Multi Host and Multi Container Applications
â˘âŻ Seamless Networking
â˘âŻ Communication Between Services
â˘âŻ Orchestration and Clustering
â˘âŻ Control of Containers
â˘âŻ Container Management
Copyright 2015 by Cloudsoft Corporation Limited
14. @grkvlt
Clocker and Brooklyn Summary
â˘âŻ What is it?
â˘âŻ Brooklyn Application
â˘âŻ Brooklyn Location
â˘âŻ What does it provide?
â˘âŻ First Class Docker Support in Brooklyn
â˘âŻ Optimized Brooklyn Blueprints for Docker
â˘âŻ Container Orchestration
Copyright 2015 by Cloudsoft Corporation Limited
16. @grkvlt
Brooklyn Blueprints
â˘âŻ Describe Applications
â˘âŻ OASIS CAMP Standard
â˘âŻ TOSCA and Compose in Development
â˘âŻ List of Services
â˘âŻ NoSQL Database Clusters
â˘âŻ Web Servers and Load Balancers
â˘âŻ Shell or Python Scripts
â˘âŻ Targeting Multiple Destinations
â˘âŻ VM, Container, Bare Metal
â˘âŻ Sensors, EďŹectors and Policies
Copyright 2015 by Cloudsoft Corporation Limited
17. @grkvlt
Application Management
â˘âŻ Sensors
â˘âŻ Data from Services
â˘âŻ EďŹectors
â˘âŻ Brooklyn Policies
â˘âŻ Attached to Entities in Application
â˘âŻ Nothing Docker Specific
â˘âŻ Elastic Scaling and Cluster Resizing
â˘âŻ Service Resilience and Replacement
Copyright 2015 by Cloudsoft Corporation Limited
18. @grkvlt
Blueprint Example 1
Copyright 2015 by Cloudsoft Corporation Limited
id:
 redis-Ââservice
Â
name:
 "Docker
 Hub
 Redis
 Service"
Â
origin:
 "https://registry.hub.docker.com/_/redis/"
Â
Â
locations:
Â
-Ââ
 my-Ââdocker-Ââcloud
Â
Â
services:
Â
-Ââ
 type:
 docker:redis:3
Â
Â
 id:
 redis
Â
Â
 openPorts:
Â
Â
 -Ââ
 6379
Â
19. @grkvlt
Blueprint Example 2
Copyright 2015 by Cloudsoft Corporation Limited
id:
 redis-Ââcluster
Â
name:
 "Redis
 Cluster"
Â
Â
locations:
Â
-Ââ⯠jclouds:aws-Ââec2:
Â
Â
Â
Â
 region:
 eu-Ââcentral-Ââ1
Â
Â
services:
Â
-Ââ
 type:
 org.apache.brooklyn.entity.nosql.redis.RedisCluster
Â
Â
 initialSize:
 3
Â
20. @grkvlt
Blueprint Example 3
id:
 appserver-Ââwith-Ââpolicy
Â
name:
 "Tomcat
 Scaling
 Webapp
 Server"
Â
location:
 jclouds:aws-Ââec2:eu-Ââwest-Ââ1
Â
services:
Â
-Ââ
 type:
 org.apache.brooklyn.entity.webapp.ControlledDynamicWebAppCluster
Â
Â
 initialSize:
 3
Â
Â
 memberSpec:
Â
Â
Â
Â
 $brooklyn:entitySpec:
Â
Â
Â
Â
Â
Â
 type:
 org.apache.brooklyn.entity.webapp.tomcat.Tomcat8Server
Â
Â
Â
Â
Â
Â
 brooklyn.config:
Â
Â
Â
Â
Â
Â
Â
Â
 wars.root:
Â
Â
Â
Â
Â
Â
Â
Â
Â
Â
 https://
 s3-Ââeu-Ââwest-Ââ1.amazonaws.com/brooklyn-Ââclocker/brooklyn-Ââexample-Ââhello-Ââworld-Ââsql-Ââwebapp-Ââ0.6.0.war
Â
Â
Â
Â
Â
Â
Â
Â
 http.port:
 8080+
Â
Â
Â
Â
Â
Â
Â
Â
 java.sysprops:
Â
Â
Â
Â
Â
Â
Â
Â
Â
Â
Â
 brooklyn.example.db.url:
 $brooklyn:formatString("jdbc:%s%s?user=%s&password=%s",
Â
Â
Â
Â
Â
Â
Â
Â
Â
Â
Â
Â
Â
Â
 component("db").attributeWhenReady("datastore.url"),
 "visitors",
 "brooklyn",
 "br00k11n")
Â
Â
 brooklyn.policies:
Â
Â
 -Ââ
 policyType:
 org.apache.brooklyn.policy.autoscaling.AutoScalerPolicy
Â
Â
Â
Â
 brooklyn.config:
Â
Â
Â
Â
Â
Â
 metric:
 $brooklyn:sensor("org.apache.brooklyn.entity.webapp.DynamicWebAppCluster",
 "webapp.reqs.perSec.windowed.perNode")
Â
Â
Â
Â
Â
Â
 metricLowerBound:
 10
Â
Â
Â
Â
Â
Â
 metricUpperBound:
 100
Â
Â
Â
Â
Â
Â
 minPoolSize:
 1
Â
Â
Â
Â
Â
Â
 maxPoolSize:
 5
Â
-Ââ
 type:
 org.apache.brooklyn.entity.database.mysql.MySqlNode
Â
Â
 id:
 db
Â
Â
 name:
 DB
 HelloWorld
 Visitors
Â
Â
 brooklyn.config:
Â
Â
Â
Â
 datastore.creation.script.url:
Â
Â
Â
Â
Â
Â
 https://
 s3-Ââeu-Ââwest-Ââ1.amazonaws.com/brooklyn-Ââclocker/visitors-Ââcreation-Ââscript.sql
Â
Copyright 2015 by Cloudsoft Corporation Limited
22. @grkvlt
Docker Cloud
â˘âŻ Brooklyn Blueprint for Docker Cluster
â˘âŻ Docker Engine on Cloud VM or Bare Metal
â˘âŻ Manage TLS Certificates and access credentials
â˘âŻ Create and Mount Volumes
â˘âŻ Setup Logging and Monitoring
â˘âŻ Install SDN and other Agents
â˘âŻ Configure local or remote Docker Registry
â˘âŻ Manage Capacity or Headroom
Copyright 2015 by Cloudsoft Corporation Limited
23. @grkvlt
Headroom
â˘âŻ Ensure resources available
â˘âŻ Based on MaxContainers strategy limit
â˘âŻ Or Percentage Utilisation
â˘âŻ Or CPU and RAM allocation
â˘âŻ Scale Docker Host Cluster Automatically
â˘âŻ Add new Docker hosts
â˘âŻ Remove empty Docker hosts
Copyright 2015 by Cloudsoft Corporation Limited
26. @grkvlt
Clocker Features
â˘âŻDocker Extensions to Brooklyn
ââŻDocker Image as First-Class Service Type
ââŻPlacement Strategies for Containers
ââŻCreate Docker Images and Networks
â˘âŻ Manages Docker Engine and Swarm
ââŻDeployment and Management
ââŻInstallation and Configuration
ââŻSoftware-Defined Networking
Copyright 2015 by Cloudsoft Corporation Limited
27. @grkvlt
Container Management
â˘âŻ Sources
â˘âŻ Docker Image Definition
â˘âŻ Docker Hub or Registry
â˘âŻ Dockerfile
â˘âŻ Brooklyn Entity Definition
â˘âŻ Create Image Automatically
â˘âŻ Commit or Push for Reuse
Copyright 2015 by Cloudsoft Corporation Limited
30. @grkvlt
Software-Defined Networking
â˘âŻ Needed for Seamless Provisioning
â˘âŻ Host to Host Communication
â˘âŻ Same LAN Segment
â˘âŻ No Port Forwarding
â˘âŻ Natural Application Configuration
â˘âŻ Initial Driver was EPMD Applications
â˘âŻ Useful for any opinionated applications
Copyright 2015 by Cloudsoft Corporation Limited
31. @grkvlt
Networking Providers
â˘âŻ Implementation Agnostic
â˘âŻ L2 overlay, L3 routing etc.
â˘âŻ Similar to Hypervisor in Clouds
â˘âŻ Generic Interfaces
â˘âŻ Host Component
â˘âŻ Service Component (or Endpoint)
â˘âŻ Same idea as Docker Network Plugins
Copyright 2015 by Cloudsoft Corporation Limited
32. @grkvlt
Networking Capabilities
â˘âŻ Attach Containers to Networks
Â
â˘âŻ Create Networks as Required
â˘âŻ Also Attach to VMs and Metal
â˘âŻ Provide Multiple Networks
â˘âŻ Per-Application or Shared
â˘âŻ Segmented Private Address Space
â˘âŻ Docker Port Forwarding for Ingress
Copyright 2015 by Cloudsoft Corporation Limited
33. @grkvlt
Network Provisioning
â˘âŻ Minimal (Zero!) Configuration
â˘âŻ Use Sensible Defaults
â˘âŻ Allows SDN or Cloud Specific Configuration
â˘âŻ Allocate Address Space on Demand
â˘âŻ IP Pool Controlled by Clocker
-Ââ
 type:
 brooklyn.networking.VirtualNetwork
Â
Â
 networkId:
 database-Âânet
Â
Â
 cidr:
 192.168.34.0/24
Â
Â
 gateway:
 192.168.34.1
Â
Â
 dnsServers:
Â
Â
 -Ââ
 $brooklyn:entity("bind-Ââserver").attributeWhenReady("host.address")
Â
Â
 addIptablesRules:
 true
Â
-Ââ
 type:
 brooklyn.networking.OpenStackVirtualNetwork
Â
Â
 networkId:
 couchbase-Âânet
Â
Copyright 2015 by Cloudsoft Corporation Limited
35. @grkvlt
Metaswitch Project Calico
â˘âŻ SDN for Bare Metal, VMs and Containers
â˘âŻ Layer 3
â˘âŻ Uses OS IP routing and forwarding
â˘âŻ Configuration in an etcd Cluster
â˘âŻ Version 0.4.9 in Clocker
â˘âŻ 0.6.0 with libnetwork when Docker stable
â˘âŻ Spans VMs and Containers
â˘âŻ OpenStack Neutron network driver
Copyright 2015 by Cloudsoft Corporation Limited
37. @grkvlt
Networking Capabilities
â˘âŻ Wide Area and Multi Region SDN
â˘âŻ VPN or IPIP and NAT configuration
â˘âŻ Cross Platform SDN
â˘âŻ Both VMs and Containers on one VLAN
â˘âŻ Name Resolution and Service Discovery
â˘âŻ Contributing to Weave DNS for orchestration
â˘âŻ Use traditional external BIND service entity
â˘âŻ Brooklyn can inject correct endpoint address
Copyright 2015 by Cloudsoft Corporation Limited
40. @grkvlt
Application Blueprint 1
Copyright 2015 by Cloudsoft Corporation Limited
id:
 my-Ââapplication
Â
location:
 my-Ââdocker-Ââcloud
Â
services:
Â
-Ââ
 type:
 docker:redis:3
Â
Â
 id:
 redis
Â
Â
 openPorts:
 6379
Â
-Ââ
 type:
 docker:amouat/dnmonster:1.0
Â
Â
 id:
 dnmonster
Â
Â
 openPorts:
 8080
Â
-Ââ
 type:
 docker:amouat/identidock:1.0
Â
Â
 id:
 identidock
Â
Â
 portBindings:
Â
Â
Â
Â
 80:
 9090
Â
Â
 links:
Â
Â
 -Ââ
 $brooklyn:component("redis")
Â
Â
 -Ââ
 $brooklyn:component("dnmonster")
Â
41. @grkvlt
Application Blueprint 2
Copyright 2015 by Cloudsoft Corporation Limited
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:amouat/dnmonster:1.0
Â
Â
 id:
 dnmonster
Â
Â
 openPorts:
 8080
Â
-Ââ
 type:
 docker:amouat/identidock:1.0
Â
Â
 id:
 identidock
Â
Â
 portBindings:
Â
Â
Â
Â
 80:
 9090
Â
Â
 links:
Â
Â
 -Ââ
 $brooklyn:component("redis")
Â
Â
 -Ââ
 $brooklyn:component("dnmonster")
Â
42. @grkvlt
Application Blueprint 3
Copyright 2015 by Cloudsoft Corporation Limited
id:
 my-Ââapplication
Â
location:
 my-Ââdocker-Ââcloud
Â
services:
Â
-Ââ
 type:
 org.apache.brooklyn.entity.nosql.redis.RedisStore
Â
Â
 location:
 jclouds:softlayer:ams01
Â
Â
 id:
 redis
Â
Â
 install.version:
 3.0.0
Â
-Ââ
 type:
 docker:amouat/dnmonster:1.0
Â
Â
 id:
 dnmonster
Â
Â
 openPorts:
 8080
Â
-Ââ
 type:
 docker:amouat/identidock:1.0
Â
Â
 id:
 identidock
Â
Â
 portBindings:
Â
Â
Â
Â
 80:
 9090
Â
Â
 links:
Â
Â
 -Ââ
 $brooklyn:component("redis")
Â
Â
 -Ââ
 $brooklyn:component("dnmonster")
Â
43. @grkvlt
Application Blueprint 4
Copyright 2015 by Cloudsoft Corporation Limited
id:
 my-Ââapplication
Â
location:
 jclouds:softlayer:ams01
Â
services:
Â
-Ââ
 type:
 org.apache.brooklyn.entity.nosql.redis.RedisStore
Â
Â
 id:
 redis
Â
Â
 install.version:
 3.0.0
Â
-Ââ
 type:
 docker:amouat/dnmonster:1.0
Â
Â
 id:
 dnmonster
Â
Â
 openPorts:
 8080
Â
-Ââ
 type:
 docker:amouat/identidock:1.0
Â
Â
 id:
 identidock
Â
Â
 portBindings:
Â
Â
Â
Â
 80:
 9090
Â
Â
 links:
Â
Â
 -Ââ
 $brooklyn:component("redis")
Â
Â
 -Ââ
 $brooklyn:component("dnmonster")
Â
44. @grkvlt
Application Blueprint 5
Copyright 2015 by Cloudsoft Corporation Limited
id:
 my-Ââapplication
Â
services:
Â
-Ââ
 type:
 org.apache.brooklyn.entity.nosql.redis.RedisStore
Â
Â
 location:
 jclouds:softlayer:ams01
Â
Â
 id:
 redis
Â
Â
 install.version:
 3.0.0
Â
-Ââ
 type:
 marathon:amouat/dnmonster:1.0
Â
Â
 location:
 my-Ââmesos-Ââcluster
Â
Â
 id:
 dnmonster
Â
Â
 openPorts:
 8080
Â
-Ââ
 type:
 docker:amouat/identidock:1.0
Â
Â
 location:
 my-Ââdocker-Ââcloud
Â
Â
 id:
 identidock
Â
Â
 portBindings:
Â
Â
Â
Â
 80:
 9090
Â
Â
 links:
Â
Â
 -Ââ
 $brooklyn:component("redis")
Â
Â
 -Ââ
 $brooklyn:component("dnmonster")
Â
45. @grkvlt
â˘âŻ Orchestrated Docker deployment and
configuration, with Project Calico SDN
â˘âŻ Brooklyn application blueprints deployed with
network topology linked to OpenStack using
Project Calico
â˘âŻ Automated attachment of containers to multiple
dynamic networks
â˘âŻ Zero Config Multi-Target Deployment
Copyright 2015 by Cloudsoft Corporation Limited
Features
47. @grkvlt
Roadmap 1
â˘âŻ Mesos Integration
â˘âŻ View and manage existing Mesos clusters
â˘âŻ Provide Mesos as another Brooklyn endpoint
â˘âŻ Run Marathon tasks for Brooklyn entities
â˘âŻ Future Possibilities...
â˘âŻ Brooklyn as a Mesos framework or scheduler
â˘âŻ Integrate with other frameworks like Riak BDP
Copyright 2015 by Cloudsoft Corporation Limited