Upgrade to Pro — share decks privately, control downloads, hide ads and more …

codecentric training day

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.

codecentric training day

Avatar for Michael Hausenblas

Michael Hausenblas

June 03, 2016
Tweet

More Decks by Michael Hausenblas

Other Decks in Technology

Transcript

  1. © 2016 Mesosphere, Inc. All Rights Reserved. USING DC/OS 1

    Michael Hausenblas, Developer & Cloud Advocate | 2016-06-03, codecentric, Solingen
  2. © 2016 Mesosphere, Inc. All Rights Reserved. sys admin devops

    developer architect data engineer data scientist
  3. © 2016 Mesosphere, Inc. All Rights Reserved. SOME ADMINISTRATIVE THINGS

    … 3 • Clusters: go to http://301.sh/cct2016 • We have clusters prepared → team up in groups of 3-4 people • One person should drive, others help/comment/plan • Join DC/OS Slack Community • http://chat.dcos.io/ • will invite you to private channel #cc2016 • Proctors are around: Bernd, Jens, Tobi
  4. © 2016 Mesosphere, Inc. All Rights Reserved. DISTRIBUTED APPLICATION 6

    hardware OS app hardware OS hardware OS hardware OS hardware OS hardware OS hardware OS
  5. © 2016 Mesosphere, Inc. All Rights Reserved. DISTRIBUTED OS +

    DISTRIBUTED APP 7 hardware OS app hardware OS hardware OS hardware OS hardware OS hardware OS hardware OS distributed OS
  6. © 2016 Mesosphere, Inc. All Rights Reserved. DC/OS BENEFITS 13

    • One cluster for • stateless services such as Web servers & app servers (via Marathon) • stateful services like PostgreSQL, MemSQL, Kafka, Cassandra, etc. • elastic data processing via Spark, Akka, etc. • CI/CD, for example Jenkins+Marathon • Dynamic partitioning of your cluster, depending on your needs • Increased utilization (10% → 80%+)
  7. © 2016 Mesosphere, Inc. All Rights Reserved. APACHE MESOS 17

    • A top-level ASF project • A cluster resource negotiator • Scalable to 10,000s of nodes but also useful for a handful of nodes • Fault-tolerant, battle-tested • An SDK for distributed apps • Native Docker support mesos.apache.org
  8. © 2016 Mesosphere, Inc. All Rights Reserved. MESOS
 ARCHITECTURE 18

    http://mesos.berkeley.edu/mesos_tech_report.pdf Marathon
 scheduler Spark
 scheduler Spark
 executor Marathon
 executor Spark
 executor Marathon
 executor Mesos Agent Mesos Agent Mesos Agent Mesos
 Master Standby
 Master Standby
 Master Framework
  9. © 2016 Mesosphere, Inc. All Rights Reserved. MESOS
 RESOURCES 19

    • resource—anything a task consumes to carry out its work • standard resources cpu
 mem
 disk
 ports • to guarantee fair allocation across resource types —Dominant Resource Fairness (DRF) algorithm
  10. © 2016 Mesosphere, Inc. All Rights Reserved. MARATHON 36 Also

    acts as the distributed init system for DC/OS • starts instances of a long-running services • restarts the instances if they crash • supports health checks • supports multitude of upgrade strategies • HA built in
  11. © 2016 Mesosphere, Inc. All Rights Reserved. MARATHON
 ORGANIZATIONAL PRIMITIVES

    37 • groups can contain one or more apps/groups • good for dependency management/scaling • labels → good for non-hierarchical organization https://mesosphere.com/blog/2015/06/21/web-application-analytics-using-docker-and-marathon/
  12. © 2016 Mesosphere, Inc. All Rights Reserved. MARATHON
 APP SPEC

    38 { "id": "/webserver", "instances": 5, "cpus": 0.1, "mem": 128, "container": { "type": "DOCKER", "docker": { "image": "nginx:1.9.14", "network": "BRIDGE", "portMappings": [ { "containerPort": 80, "hostPort": 0 } ] } }, "upgradeStrategy": { "minimumHealthCapacity": 0.9 }, "acceptedResourceRoles": [ "slave_public" ] }
  13. © 2016 Mesosphere, Inc. All Rights Reserved. MARATHON HTTP API

    40 https://mesosphere.github.io/marathon/docs/generated/api.html
  14. © 2016 Mesosphere, Inc. All Rights Reserved. ELASTIC DATA PIPELINES

    WITH DC/OS 43 https://mesosphere.com/infinity/
  15. © 2015 Mesosphere, Inc. All Rights Reserved. 44 EXAMPLE 1

    github.com/mesosphere/cassandra-kairosdb-tutorial
  16. © 2015 Mesosphere, Inc. All Rights Reserved. 45 EXAMPLE 2

    mesosphere.com/blog/2015/11/18/dcos-time-series-demo/
  17. © 2016 Mesosphere, Inc. All Rights Reserved. CONTAINER
 101 48

    The why and the what: • Containers vs VMs • app-level dependency management • lightweight (startup time, footprint, average runtime) • isolation & security
  18. © 2016 Mesosphere, Inc. All Rights Reserved. CONTAINER
 101 49

    • namespaces (isolation) • Isolate PIDs between processes • Isolate process to network resources • Isolate the hostname to fake it out (UTS) • Isolate the filesystem mount points (chroot) • Isolate inter process communication (IPC) • Isolate specific users to specific processes • cgroups (limiting & accounting)
 https://sysadmincasts.com/episodes/14-introduction-to-linux-control-groups-cgroups
  19. © 2016 Mesosphere, Inc. All Rights Reserved. DOCKER 51 Registries

    • Docker Hub
 https://hub.docker.com/ • Google Cloud
 https://cloud.google.com/tools/container-registry/ • AWS
 https://aws.amazon.com/ecr/ • Run your own
 https://docs.docker.com/registry/deploying/
  20. © 2016 Mesosphere, Inc. All Rights Reserved. CI/CD PIPELINES 56

    https://github.com/mesosphere/training/tree/master/dcos-bootcamp-04-2016/ci-cd
  21. © 2016 Mesosphere, Inc. All Rights Reserved. DC/OS SERVICE DISCOVERY

    58 DNS-based easy to integrate SRV records no health checks TTL Proxy-based no port conflicts fast failover no UDP management of VIPs (Minuteman) or service ports (Marathon-lb) Application-aware developer fully in control and full-feature implementation effort requires distributed state management (ZK, etcd or Consul) examples:
 Mesos-DNS,Consul examples:
 Minuteman, Marathon-lb examples:
 Roll-your-own, Finagle
  22. © 2016 Mesosphere, Inc. All Rights Reserved. LOAD BALANCING TERMINOLOGY

    59 rolling deployment bring up N instances of new app & terminate N instances of old app until all old instances are gone goal: minimize capacity requirements blue-green deployment launch a new stack and switch traffic from old to new when the new instances are healthy goal: minimize impact of regressions, friction, delays, and allow easy rollbacks canary deployment bring up a new stack, start by routing a small portion of traffic to the new app, and slowly increase goal: test production traffic slowly & safely
  23. © 2016 Mesosphere, Inc. All Rights Reserved. DC/OS LOAD BALANCING

    60 • Cluster-internal: Minuteman, a L4 distributed LB, usage via VIP in Marathon • Internal or edge: Marathon-lb, dynamically updates HAProxy, usage via package+service ports in Marathon • External, for example Azure's offerings
  24. © 2016 Mesosphere, Inc. All Rights Reserved. DEPLOYMENT STRATEGIES 61

    • Based on health checks • Policy via • minimumHealthCapacity float value between 0—1, specifies % of app instances to maintain healthy while performing deployment • maximumOverCapacity float value between 0 — 1, specifies the maximum % of instances that can be over capacity during deployment
  25. © 2016 Mesosphere, Inc. All Rights Reserved. 67 WHERE CAN


    I LEARN MORE? http://shop.oreilly.com/product/9781939902184.do 67 http://shop.oreilly.com/product/0636920035671.do
  26. © 2016 Mesosphere, Inc. All Rights Reserved. 68 WHERE CAN


    I LEARN MORE? 68 https://www.nginx.com/resources/library/docker-networking/
  27. © 2016 Mesosphere, Inc. All Rights Reserved. 69 WHERE CAN


    I LEARN MORE? http://shop.oreilly.com/product/0636920039952.do https://manning.com/books/mesos-in-action 69
  28. © 2016 Mesosphere, Inc. All Rights Reserved. Q & A

    70 • @mhausenblas • mhausenblas.info • [email protected] https://dcos.io