43
Clocker Deploying Complex Applica3ons on Docker using Apache Brooklyn

Deploying Complex Applications on Docker using Apache Brooklyn

Embed Size (px)

DESCRIPTION

Talk given at CloudOpen, Dusseldörf, October 2014

Citation preview

  • 1. ClockerDeployingComplexApplica3onsonDockerusingApacheBrooklyn

2. DeployingComplexApplica1onsonDockerusingApacheBrooklynAndrewKennedy@grkvltCloudOpenOctober2014DusseldrfGermany 3. Introduc1on AndrewKennedy SoIwareEngineer OpenSource github.com/grkvlt CloudsoICorpora1on ScoMsh(Bri1sh?European!)Company WereHiring 4. Introduc1on Clocker Docker ApacheBrooklyn ApacheJclouds Weave Demonstra1on Roadmap 5. ClockerProject Whatdoesitdo? ManagesDockerInfrastructure DeploysBlueprintstoDocker Whatisit? BrooklynApplica1on BrooklynLoca1on 6. Docker Popular HugeEcosystem Growing Complex Containers Isola1on Performance Composable 7. Docker 8. DoLcikmeirtaL3imointsa3ons 9. DockerLimita1ons Mul1pleHosts Networking SameIssue Communica1onBetweenServices Orchestra1on ControlofContainers ContainerManagement 10. ClockerProject GitHub OpenSource Java RecentlyDeveloped S1llBetaStatus 0.7.0-SNAPSHOT 11. WhyClocker DockerPopularity SolveSomeLimita1ons BestofBreedComponents BrooklynIntegra1on VirtualMachinestooCoarse ContainertoEn1tyMapping 12. ClockerComponents ApacheBrooklyn CloudsoIProduct OpenSourceJava DonatedtotheASF IncubatorStatus 13. ApacheBrooklyn Applica1onManagementPlaborm AutonomicCompu1ngPrinciples Deploy,ManageandMonitorBlueprints Services(En11es) State(Sensors) Ac1ons(Effectors) 14. BrooklynBlueprintid:nodejs-hello-world-applicationname:"Node.JSHelloWorldApplication"origin:"https://github.com/grkvlt/node-hello-world.git/"locations:-jclouds:softlayer:ams01services:-serviceType:brooklyn.entity.webapp.nodejs.NodeJsWebAppServiceid:nodejsname:"Node.JS"brooklyn.config:gitRepoUrl:"https://github.com/grkvlt/node-hello-world.git"appFileName:app.jsappName:node-hello-world 15. ApacheBrooklyn Deployment Provisioning Loca1ons Installa1onandCustomiza1on Packages,Scripts,Chef,SaltStack Management Policies AutoScaling,Resilience,Performance,Access 16. ApacheJclouds JavaCloudLibrary APIAgnos1c CloudStack,OpenStack,AWSEC2,GCE CreateVirtualMachines ReturnSSHEndpoint ManageProper1es 17. ApacheJclouds DriversforRESTAPIs DockerDriver Wrifenby@turlinux VirtualContainer UsingSSHDaemon SameEndpointTypeasVM Composi1ononanyImageorDockerfile 18. Weave SoIwareDefinedNetworking EthernetSwitch UserSpace DockerContainer SniffsTrafficonHost ForwardsoverTCP 19. Weave 20. WhatisClocker? 21. WhatisClocker? BrooklynApplica1on DockerInfrastructure DockerEngine DockerContainers WeaveInfrastructure WeaveContainer 22. WhatisClocker? BrooklynLoca1on Des1na1onforBlueprints AddedFeatures CreateContainers ProvisionDockerHosts AfachtoWeaveNetwork ManageApplica1on 23. ClockerArchitecture 24. ClockerArchitecture 25. ClockerFeatures Applica1onDeployment OasisCAMPBlueprint SameasCoreBrooklyn MixedDes1na1ons SomeVirtualMachines SomeBareMetal SomeContainers 26. ClockerFeatures Applica1onDeployment OasisCAMPBlueprint SameasCoreBrooklyn DockerExtensions ContainerorImage PlacementStrategy DockerfileURL 27. ClockerPlacement DemandSide NewContainer SupplySide Where? PlacementStrategy ProvisioningStrategy 28. ClockerPlacement PlacementStrategies DepthFirst BreadthFirst CPUUsage AffinityorAn1Affinity MemoryorCPUCoreAvailability 29. ClockerPlacement ProvisioningStrategy NewDockerHostLoca1on Constraints DockerInfrastructureConstraints En1tyorApplica1onConstraints UserDefinedStrategies IntelligentContainerOrchestra1on 30. ClockerPlacement Determinis1c Simple PredicateandComparatordocker.container.strategies:-$brooklyn:object:type:"brooklyn.location.docker.strategy.BreadthFirstPlacementStrategybrooklyn.config:maxContainers:16-$brooklyn:object:type:"brooklyn.location.docker.strategy.CpuUsagePlacementStrategybrooklyn.config:maxCpuUsage:0.75 31. ContainerManagement Sources DockerImageDefini1on DockerHub Dockerfile BrooklynEn1tyDefini1on CreateImageAutoma1cally 32. ContainerManagementid:dockerfile-mysqlname:"DockerHubMySQLApplication"origin:"https://registry.hub.docker.com/_/mysql/"locations:-my-docker-cloudservices:-serviceType:brooklyn.entity.container.docker.application.DockerfileApplicationid:mysqlname:"MySQL"brooklyn.config:docker.dockerfile.url:file://Users/grkvlt/Git/docker-library/mysql/5.6/env:MYSQL_ROOT_PASSWORD:"s3cr3t" 33. ContainerManagement Installa1onofServices DefinedbyBrooklynorDockerfile CommontoallEn1tyInstances CommitImage AvailablefornextEn1ty PushImage AvailableforallHosts 34. Networking SharedWeaveLAN CommontoAllContainers Private(LinkLocal)Addresses ClockerControlsIPAlloca1on Applica1onsSegmentedbyCIDR DockerPortForwardingAccess 35. Networking S1llFirstSteps NameResolu1on BINDandDNSmasq NeededforJMXetal EnablesManyMoreEn11es ButNeedsTested! 36. Demonstra3on 37. RoadmapNow ImprovementsToNetworking DNSandDNSmasqIntegra1on WorkinProgress BeferGeMngStarted SelfHos1ngonLocalhost BrooklynDockerfile 38. RoadmapSoon BeferIntegra1onwithRepositories DockerHub,Ar1factory,Quay.io PrivateRepositories EasierApplica1onDefini1on OpenStandard? KubernetesPods? 39. RoadmapNext Integra1on GoogleKubernetes ClusterHQFlocker Ar1factory Improvements Bootstrapping 40. Summary Clocker Brooklyn+Docker+Jclouds+Weave Solves DockerNetworking ContainerPlacement Applica1onDefini1on 41. AudienceQues1ons?1. WheredoyouseeDockernetworkinggoing?2. Whataboutorchestra1on?3. WhatfeatureswouldbemostusefultoenhanceDockerusability? 42. Thanks!Ques1ons? 43. WebResourceshttp://clocker.io/http://brooklyn.io/http://docker.io/http://github.com/zettio/weave/http://abstractvisitorpattern.co.uk/