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

DC OS more than PAAS

DC OS more than PAAS

Avatar for Nikita Borzykh

Nikita Borzykh

May 31, 2016

Other Decks in Technology

Transcript

  1. 2 Whoami 2009г, Xen, InfiniBand, custom L2 over L3, Chef

    2012г, Devops :) 2011г, Chef, Web, Rails, soft skills
  2. • Анализ текущей ситуации в индустрии, обозначение проблем • DC/OS:

    место под солнцем, концепция, компоненты • Наш опыт 3 План
  3. 5   &QEMGT 2##5 #PUKDNG 6GUV-KVEJGP #PUKDNG %JGH &QEMGT!!

    %JGH!!  &QEMGT #PUKDNG %JGH Buzz график $W\\ !!! !! !!
  4. 9 – стандарт упаковки – не собираем на продакшене(ruby, python)

    – конфигурация вместе с сервисом DB/back/front Docker экосистема упрощает жизнь:
  5. 11 Микросервисы – 10/20/30 компонентов – могут иметь связи any-to-any

    – компоненты появляются и исчезают – реестр сервисов(static, dynami, service discovery) Устройство проекта:
  6. 14 Docker экосистема опять все упрощает: Микросервисы – стандартизация –

    изоляция – docker compose – chef/ansible – большая плотность на один хост
  7. 17 Жизнь вне AWS “Обычная” площадка $CTGOGVCN #RRU $CTGOGVCN 8/ņU

    DEV/QA в офисе !!! #RRU 8/ņU Облако #RRU #RRU #RRU !!! #RRU !!! Где-то у заказчика
  8. 18 Свой low-level под каждую площадку Способ деплоя зависит от

    площадки Сложность поддержки: количество сервисов X количество площадок Жизнь вне AWS
  9. 19 Когда вы в последний раз выделяли память для запуска

    приложения на своем ноутбуке? (OS делают это за нас уже почти пол века!) Рефлексия
  10. 19 Когда вы в последний раз выделяли память для запуска

    приложения на своем ноутбуке? (OS делают это за нас уже почти пол века!) Зачем чинить то, что сломалось? Рефлексия
  11. 19 Когда вы в последний раз выделяли память для запуска

    приложения на своем ноутбуке? (OS делают это за нас уже почти пол века!) Зачем чинить то, что сломалось? Зачем нам концепция “Сервер”? Рефлексия
  12. 20 “Почему я вообще должен об этом всем думать? Я

    же DevOps, я хочу docker и общаться в telegram за devops практики!”
  13. 23 Data Center Operation System(DC/OS) – Автоматическое управление ресурсами в

    рамках всего ДЦ – Автоматический Service Discovery для всех компонентов вашего проекта
  14. 25 Это что за ребята? 2009 Mesos initial white paper

    May 2013 2.25M(Seed) Jun 2014 $10.5M(A), Dec $36M(B)
  15. 25 Это что за ребята? 2009 Mesos initial white paper

    May 2013 2.25M(Seed) Jun 2014 $10.5M(A), Dec $36M(B) Apr 2016 DC/OS Opensource
  16. 25 Это что за ребята? 2009 Mesos initial white paper

    May 2013 2.25M(Seed) Jun 2014 $10.5M(A), Dec $36M(B) Apr 2016 DC/OS Opensource Mar 2016 $73.5M(C) from MS and HPE
  17. 26 Кто пользуется? – Apple(Siri) – Airbnb – Adobe –

    Verizon – PayPal – eBay – Express 42 ;-)
  18. 28 OS Llinux, BSD, Windows init, systemd, cron, … YourApps

    | Kafka | HDFS -GTPGN +PKVU[UVGO 5GTXKEGU #RRU Packages, DNS, Auth, Network, …
  19. 30 DC/OS Mesos YourApps | Kafka | HDFS Llinux, BSD,

    Windows init, systemd, cron, … YourApps | Kafka | HDFS -GTPGN +PKVU[UVGO 5GTXKEGU #RRU Packages, DNS, Auth, Network, …
  20. 31 Mesos – Distrubuted systems kernel Нет, это не замена

    linux kernel Другой уровень абстракции
  21. 31 Mesos – Distrubuted systems kernel Задачи похожи: Нет, это

    не замена linux kernel Другой уровень абстракции
  22. 31 Mesos – Distrubuted systems kernel Задачи похожи: – управление

    ресурсами Нет, это не замена linux kernel Другой уровень абстракции
  23. 31 Mesos – Distrubuted systems kernel Задачи похожи: – управление

    ресурсами – управление процессами Нет, это не замена linux kernel Другой уровень абстракции
  24. 31 Mesos – Distrubuted systems kernel Задачи похожи: – управление

    ресурсами – управление процессами – изоляция процессов Нет, это не замена linux kernel Другой уровень абстракции
  25. 32 Mesos – Distrubuted systems kernel – Запускается на каждой

    машине – Masters HA используя ZooKeeper
  26. 32 Mesos – Distrubuted systems kernel – Запускается на каждой

    машине – Masters HA используя ZooKeeper – Скейлится до 10000 хостов
  27. 32 Mesos – Distrubuted systems kernel – Запускается на каждой

    машине – Masters HA используя ZooKeeper – Скейлится до 10000 хостов – SDK для написания распределенных приложений
  28. 33 Mesos – Distrubuted systems kernel – Изоляторы: Docker и

    Mesos контейнеры – Дифференциация через Roles
  29. 34 Mesos Standby Mesos Master Leader Mesos Master Standby Mesos

    Master Mesos Executor Docker Executor Task Task Mesos Agent 1HHGT Mesos Executor Docker Executor Task Task Mesos Agent Framework scheduler ZK ZK ZK User
  30. 35 Standby Mesos Master Leader Mesos Master Standby Mesos Master

    Mesos Executor Docker Executor Task Task Mesos Agent Mesos Executor Docker Executor Task Task Mesos Agent Framework scheduler ZK ZK ZK User 6CUMKPKV Mesos – Task Launch
  31. 36 Standby Mesos Master Leader Mesos Master Standby Mesos Master

    Mesos Executor Docker Executor Task Task Mesos Agent Mesos Executor Docker Executor Task Task Mesos Agent Framework scheduler ZK ZK ZK User 4GUQWTEGQHHGT 1HHGT Mesos – Task Launch
  32. 38 Standby Mesos Master Leader Mesos Master Standby Mesos Master

    Mesos Executor Docker Executor Task Task Mesos Agent Mesos Executor Docker Executor Task Task Mesos Agent Framework scheduler ZK ZK ZK User #EEGRV1HHGT 1HHGT Mesos – Task Launch
  33. 39 Standby Mesos Master Leader Mesos Master Standby Mesos Master

    Mesos Executor Docker Executor Task Task Mesos Agent Mesos Executor Docker Executor Task Task Mesos Agent Framework scheduler ZK ZK ZK User 6CUMNCWPEJ 6CUMNCWPEJ Mesos – Task Launch
  34. 40 Standby Mesos Master Leader Mesos Master Standby Mesos Master

    Mesos Executor Docker Executor Task Task Mesos Agent Mesos Executor Docker Executor Task Task Mesos Agent Framework scheduler ZK ZK ZK User 'ZGEWVQTNCWPEJ Mesos – Task Launch
  35. 41 Mesos – Task Launch Standby Mesos Master Leader Mesos

    Master Standby Mesos Master Mesos Executor Docker Executor Task Task Mesos Agent Mesos Executor Docker Executor Task Task Mesos Agent Framework scheduler ZK ZK ZK User 4GVWTP6CUMUVCVWU
  36. 42 Mesos – Fault Tollerance New Leader Mesos Master Leader

    Mesos Master Standby Mesos Master Mesos Executor Docker Executor Task Task Mesos Agent Mesos Executor Docker Executor Task Task Mesos Agent Framework scheduler ZK ZK ZK User
  37. 43 Mesos – Fault Tollerance New Leader Mesos Master Leader

    Mesos Master Standby Mesos Master Mesos Executor Docker Executor Task Task Mesos Agent Mesos Executor Docker Executor Task Task Mesos Agent Framework scheduler ZK ZK ZK User
  38. 46 DC/OS Mesos Marathon, Kubernetes, Spark YourApps | Kafka |

    HDFS Llinux, BSD, Windows init, systemd, cron, … YourApps | Kafka | HDFS -GTPGN +PKVU[UVGO 5GTXKEGU #RRU Packages, DNS, Auth, Network, …
  39. 47 Marathon – Distrubuted systems init – Принцип как у

    systemd – Другой уровень абстракции
  40. 47 Marathon – Distrubuted systems init – Принцип как у

    systemd – Другой уровень абстракции – Health check приложений
  41. 47 Marathon – Distrubuted systems init – Принцип как у

    systemd – Другой уровень абстракции – Health check приложений – Rolling deploy pattern
  42. 48 Marathon – Distrubuted systems init – HA используя ZooKeeper

    – Нативная поддержка Docker – Web UI, REST API, Event API
  43. 48 Marathon – Distrubuted systems init – HA используя ZooKeeper

    – Нативная поддержка Docker – Web UI, REST API, Event API – Декларативное описание приложений
  44. 56 Marathon – your-app.json .......... "id": "/test-group/python-look-and-feel", "instances": 2, "cpus":

    0.2, "disk": 0, "mem": 128, "cmd": "python -m SimpleHTTPServer 8000” ..........
  45. 57 Marathon – your-app.json ............ "healthChecks": [{ "gracePeriodSeconds": 60, "intervalSeconds":

    10, "maxConsecutiveFailures": 3, "path": "/", "portIndex": 0, "protocol": "HTTP", "timeoutSeconds": 10 }] ............
  46. 60 Mesos Frameworks – Kafka Старт kafka framework в marathon

    (отдельное приложение) kafka framework стартует брокеры
  47. 60 Mesos Frameworks – Kafka Старт kafka framework в marathon

    (отдельное приложение) kafka framework стартует брокеры kafka framework управляет жизненным циклом брокеров:
  48. 60 Mesos Frameworks – Kafka Старт kafka framework в marathon

    (отдельное приложение) kafka framework стартует брокеры kafka framework управляет жизненным циклом брокеров: создание/удаление топиков, брокеров, ребалансировка итд.
  49. 61 DC/OS Mesos Marathon, Сhronos, your app DC/OS Services YourApps

    | Kafka | HDFS Llinux, BSD, Windows init, systemd, cron, … YourApps | Kafka | HDFS -GTPGN +PKVU[UVGO 5GTXKEGU #RRU Packages, DNS, Auth, Network, … &%15
  50. 75 DC/OS CLI dcos marathon app add ./python-look-and-feel.json dcos package

    install kafka --options=kafka-custom.json dcos kafka topic create --replication 2 test-topic
  51. 79 Service Discovery – Minuteman Распределенный балансировщик для использования внутри

    mesos iptables NFQueue + erlang daemon Marathon network labels Для постоянных подключений
  52. 80 Service Discovery – Minuteman service2 VIP: 10.10.0.10 meson-agent-host Minuteman

    meson-agent-host Minuteman service1 service2 VIP: 10.10.0.10 service2 VIP: 10.10.0.10
  53. 82 Traefik – работает через Marathon Event API – zerotime

    rolling deployment pattern HTTP Балансировщик для микросервисов
  54. 82 Traefik – работает через Marathon Event API – zerotime

    rolling deployment pattern – собственные метрики, API HTTP Балансировщик для микросервисов
  55. 82 Traefik – работает через Marathon Event API – zerotime

    rolling deployment pattern – собственные метрики, API – TLS / Websockets / HTTP2 HTTP Балансировщик для микросервисов
  56. 83 %+ )+6 %+ 'PIKPG &QEMGTTGIKUVT[ CRR CRR CRR &%15

    'PIKPG 5GTXKEG &KUEQXGT[ CRR CRR CRR CRR CRR CRR CRR CRRP Continuous Delivery
  57. 85 Jenkins CI node('jenkins-dnd') { docker.withRegistry('https://registry.demo.express42.net', '5ffddaa8-50f7-4b97-910d-dc476707e1dd') { stage 'Checkout

    repository' git credentialsId: '19da5a63-278a-4664-a187-5a804d6e033a', url: '[email protected]:express42/microservices-demo-apps.git' stage 'Pull latest blog-ui image' docker.image('blog-ui:latest').pull() stage 'Build blog-ui image' image = docker.build('blog-ui', 'blog_ui') stage 'Push blog-ui image' image.push('latest') } }
  58. 86 Jenkins CI stage 'Make blog-ui docker image' build 'build-blog-ui'

    stage 'Make blog-backend docker image' build 'build-blog-backend' stage 'Request for approval' input 'Ready to go?' node('jenkins-dnd') { stage 'Deploy to DEMO' git credentialsId: '19da5a63-278a-4664-a187-5a804d6e033a', url: '<URL>' dcos_image = docker.image('<URL>/dcos_cli:latest') marathonctl_image.inside() { sh 'dcos marathon group update /microservices-demo ./blog1.json' } }
  59. 87 Точки внимания – Мониторинг – prometheus & marathon labels?

    – Централизованные логи – Продумайте вашу сеть