Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

DC/OS – больше чем PAAS, Никита Борзых (Express 42)

1,064 views

Published on

Доклад про ближайшее будущее в эксплуатации распределённых систем.
Компания Mesosphere весной 2016 сделала свою платформу DC/OS (data center operation system) бесплатной и открытой. Платформа DC/OS унифицирует и упрощает процесс поставки и эксплуатации систем.

Основными особенностями платформы являются:
– переход от host centric к resource centric подходу для всех компонентов вашего проекта за счёт представления серверов как ресурсов для приложения (с помощью mesos и marathon);
– наличие инструментов автоматического восстановления вашего проекта после аварии;
– marketplace для приложений. Например, можно развернуть MySQL, Elasticsearch, Kafka или mongodb кластер, используя готовые скрипты развертывания. Процесс развертывания кастомизируется, в случае необходимости можно описать кастомные приложения и поправить скрипты существующих;
– наличие API для интеграции в ваши системы CI/CD, мониторинга, и т.д.

Основные компоненты DC/OS:
– Apache Mesos — абстракция над датацентром, которая представляет сервера (физические и виртуальные) как ресурсы и распределяет эти ресурсы на основании данных о потребностях приложения;
– Marathon — система распределённого запуска приложений (в т.ч. docker контейнеров), основной фишкой является возможность декларативного описания вашей системы. Вы можете описать, сколько ресурсов нужно вашему приложению, зависимости между приложениями, и в каком порядке производить деплой.

Доклад разбит на три части:
– Интро про DC/OS, сравнение с kubernetes и coreos стеком;
– Рассказ про компоненты mesos и marathon, как их можно использовать с докером (и без!) уже сейчас;
– Опыт Express 42. Мы построили CI/CD платформу для приложений, с использованием Mesos, Marathon, Docker и Jenkins 2.0.

Published in: Engineering
  • Be the first to comment

DC/OS – больше чем PAAS, Никита Борзых (Express 42)

  1. 1. DC/OS – Больше чем PAAS* Никита Борзых, Экспресс 42 *Рассказ про будущее
  2. 2. 2 Whoami 2009г, Xen, InfiniBand, custom L2 over L3, Chef 2012г, Devops :) 2011г, Chef, Web, Rails, soft skills
  3. 3. • Анализ текущей ситуации в индустрии, обозначение проблем • DC/OS: место под солнцем, концепция, компоненты • Наш опыт 3 План
  4. 4. 4 💰 Ценность
  5. 5. 5 Buzz график
  6. 6. 6 1/2/3 приложения и/или монолитное приложение хранилище данных DB/back/front Устройство проекта:
  7. 7. 7 – конфигурация ПО: Chef/Ansible – деплой: Capistrano, Fabric – configuration drift DB/back/front Изменения:
  8. 8. 8 DB/back/front – рассчитать потребление ресурсов просто – понятно какой компонент где запускать Поддержка:
  9. 9. 9 – стандарт упаковки – не собираем на продакшене(ruby, python) – конфигурация вместе с сервисом DB/back/front Docker экосистема упрощает жизнь:
  10. 10. 10 (Микро)сервисы
  11. 11. 11 Микросервисы – 10/20/30 компонентов – могут иметь связи any-to-any – компоненты появляются и исчезают – реестр сервисов(static, dynami, service discovery) Устройство проекта:
  12. 12. 12 Микросервисы – конфигурация ПО: Chef/Ansible – capistrano/fabric – неудобно – configuration drift!!! Изменения:
  13. 13. 13 Микросервисы – рассчитать потребление ресурсов сложно – ручная аллокация приложений Поддержка:
  14. 14. 14 Docker экосистема опять все упрощает: Микросервисы – стандартизация – изоляция – docker compose – chef/ansible – большая плотность на один хост
  15. 15. 15 Микросервисы
  16. 16. 16 Микросервисы
  17. 17. 17 Жизнь вне AWS “Обычная” площадка DEV/QA в офисе Облако Где-то у заказчика
  18. 18. 18 Свой low-level под каждую площадку Способ деплоя зависит от площадки Сложность поддержки: количество сервисов X количество площадок Жизнь вне AWS
  19. 19. 19 Рефлексия
  20. 20. 19 Когда вы в последний раз выделяли память для запуска приложения на своем ноутбуке? (OS делают это за нас уже почти пол века!) Рефлексия
  21. 21. 19 Когда вы в последний раз выделяли память для запуска приложения на своем ноутбуке? (OS делают это за нас уже почти пол века!) Зачем чинить то, что сломалось? Рефлексия
  22. 22. 19 Когда вы в последний раз выделяли память для запуска приложения на своем ноутбуке? (OS делают это за нас уже почти пол века!) Зачем чинить то, что сломалось? Зачем нам концепция “Сервер”? Рефлексия
  23. 23. 20 “Почему я вообще должен об этом всем думать? Я же DevOps, я хочу docker и общаться в telegram за devops практики!”
  24. 24. 21 Работать должны роботы!
  25. 25. 22 Datacenter is a new computer
  26. 26. 23 Data Center Operation System(DC/OS)
  27. 27. 23 Data Center Operation System(DC/OS) – Автоматическое управление ресурсами в рамках всего ДЦ
  28. 28. 23 Data Center Operation System(DC/OS) – Автоматическое управление ресурсами в рамках всего ДЦ – Автоматический Service Discovery для всех компонентов вашего проекта
  29. 29. 24 DC/OS
  30. 30. 24 DC/OS – Cloud agnostic
  31. 31. 24 DC/OS – Cloud agnostic – Единая точка управления проектом и датацентром через WEB UI и CLI
  32. 32. 25 Это что за ребята?
  33. 33. 25 Это что за ребята? 2009 Mesos initial white paper
  34. 34. 25 Это что за ребята? 2009 Mesos initial white paper May 2013 2.25M(Seed)
  35. 35. 25 Это что за ребята? 2009 Mesos initial white paper May 2013 2.25M(Seed) Jun 2014 $10.5M(A), Dec $36M(B)
  36. 36. 25 Это что за ребята? 2009 Mesos initial white paper May 2013 2.25M(Seed) Jun 2014 $10.5M(A), Dec $36M(B) Apr 2016 DC/OS Opensource
  37. 37. 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
  38. 38. 26 Кто пользуется? – Apple(Siri) – Airbnb – Adobe – Verizon – PayPal – eBay – Express 42 ;-)
  39. 39. 27 ` Место в пищевой цепи(*)
  40. 40. 28 OS Llinux, BSD, Windows init, systemd, cron, … YourApps | Kafka | HDFS Packages, DNS, Auth, Network, …
  41. 41. 29 DC/OS
  42. 42. 30 DC/OS Mesos YourApps | Kafka | HDFS Llinux, BSD, Windows init, systemd, cron, … YourApps | Kafka | HDFS Packages, DNS, Auth, Network, …
  43. 43. 31 Mesos – Distrubuted systems kernel Нет, это не замена linux kernel Другой уровень абстракции
  44. 44. 31 Mesos – Distrubuted systems kernel Задачи похожи: Нет, это не замена linux kernel Другой уровень абстракции
  45. 45. 31 Mesos – Distrubuted systems kernel Задачи похожи: – управление ресурсами Нет, это не замена linux kernel Другой уровень абстракции
  46. 46. 31 Mesos – Distrubuted systems kernel Задачи похожи: – управление ресурсами – управление процессами Нет, это не замена linux kernel Другой уровень абстракции
  47. 47. 31 Mesos – Distrubuted systems kernel Задачи похожи: – управление ресурсами – управление процессами – изоляция процессов Нет, это не замена linux kernel Другой уровень абстракции
  48. 48. 32 Mesos – Distrubuted systems kernel
  49. 49. 32 Mesos – Distrubuted systems kernel – Запускается на каждой машине
  50. 50. 32 Mesos – Distrubuted systems kernel – Запускается на каждой машине – Masters HA используя ZooKeeper
  51. 51. 32 Mesos – Distrubuted systems kernel – Запускается на каждой машине – Masters HA используя ZooKeeper – Скейлится до 10000 хостов
  52. 52. 32 Mesos – Distrubuted systems kernel – Запускается на каждой машине – Masters HA используя ZooKeeper – Скейлится до 10000 хостов – SDK для написания распределенных приложений
  53. 53. 33 Mesos – Distrubuted systems kernel
  54. 54. 33 Mesos – Distrubuted systems kernel – Изоляторы: Docker и Mesos контейнеры
  55. 55. 33 Mesos – Distrubuted systems kernel – Изоляторы: Docker и Mesos контейнеры – Дифференциация через Roles
  56. 56. 34 Mesos 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 ZKZKZK User
  57. 57. 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 ZKZKZK User Mesos – Task Launch
  58. 58. 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 ZKZKZK User Mesos – Task Launch
  59. 59. 37 Mesos – Offers cpus(fast):4; mem(fast):4096; ports(fast):[1025-7000] cpus(*):16; mem(*):8192; ports(*):[1025-65535] cpus(*):8; mem(*):32768; ports(*):[1025-65535]
  60. 60. 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 ZKZKZK User Mesos – Task Launch
  61. 61. 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 ZKZKZK User Mesos – Task Launch
  62. 62. 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 ZKZKZK User Mesos – Task Launch
  63. 63. 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 ZKZKZK User
  64. 64. 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 ZKZKZK User
  65. 65. 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 ZKZKZK User
  66. 66. 46 DC/OS Mesos Marathon, Kubernetes, Spark YourApps | Kafka | HDFS Llinux, BSD, Windows init, systemd, cron, … YourApps | Kafka | HDFS Packages, DNS, Auth, Network, …
  67. 67. 47 Marathon – Distrubuted systems init
  68. 68. 47 Marathon – Distrubuted systems init – Принцип как у systemd
  69. 69. 47 Marathon – Distrubuted systems init – Принцип как у systemd – Другой уровень абстракции
  70. 70. 47 Marathon – Distrubuted systems init – Принцип как у systemd – Другой уровень абстракции – Health check приложений
  71. 71. 47 Marathon – Distrubuted systems init – Принцип как у systemd – Другой уровень абстракции – Health check приложений – Rolling deploy pattern
  72. 72. 48 Marathon – Distrubuted systems init
  73. 73. 48 Marathon – Distrubuted systems init – HA используя ZooKeeper
  74. 74. 48 Marathon – Distrubuted systems init – HA используя ZooKeeper – Нативная поддержка Docker
  75. 75. 48 Marathon – Distrubuted systems init – HA используя ZooKeeper – Нативная поддержка Docker – Web UI, REST API, Event API
  76. 76. 48 Marathon – Distrubuted systems init – HA используя ZooKeeper – Нативная поддержка Docker – Web UI, REST API, Event API – Декларативное описание приложений
  77. 77. 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” ..........
  78. 78. 57 Marathon – your-app.json ............ "healthChecks": [{ "gracePeriodSeconds": 60, "intervalSeconds": 10, "maxConsecutiveFailures": 3, "path": "/", "portIndex": 0, "protocol": "HTTP", "timeoutSeconds": 10 }] ............
  79. 79. 58 Marathon – Rolling Deploy pattern
  80. 80. 59 Mesos Frameworks
  81. 81. 60 Mesos Frameworks – Kafka
  82. 82. 60 Mesos Frameworks – Kafka Старт kafka framework в marathon (отдельное приложение)
  83. 83. 60 Mesos Frameworks – Kafka Старт kafka framework в marathon (отдельное приложение) kafka framework стартует брокеры
  84. 84. 60 Mesos Frameworks – Kafka Старт kafka framework в marathon (отдельное приложение) kafka framework стартует брокеры kafka framework управляет жизненным циклом брокеров:
  85. 85. 60 Mesos Frameworks – Kafka Старт kafka framework в marathon (отдельное приложение) kafka framework стартует брокеры kafka framework управляет жизненным циклом брокеров: создание/удаление топиков, брокеров, ребалансировка итд.
  86. 86. 61 DC/OS Mesos Marathon, Сhronos, your app DC/OS Services YourApps | Kafka | HDFS Llinux, BSD, Windows init, systemd, cron, … YourApps | Kafka | HDFS Packages, DNS, Auth, Network, …
  87. 87. 62 DC/OS Dashboard DC/OS CLI Network & Service Discovery DC/OS Dashboard Packages: Cosmos, Universe
  88. 88. 68 DC/OS Packages DC/OS CLI Network & Service Discovery DC/OS Dashboard Packages: Cosmos, Universe
  89. 89. 73 DC/OS CLI Network & Service Discovery DC/OS Dashboard Packages: Cosmos, Universe DC/OS CLI
  90. 90. 74 DC/OS CLI
  91. 91. 74 DC/OS CLI – Полное управление всем DC/OS стеком
  92. 92. 74 DC/OS CLI – Полное управление всем DC/OS стеком – Расширения для CLI
  93. 93. 75 DC/OS CLI
  94. 94. 75 DC/OS CLI dcos marathon app add ./python-look-and-feel.json
  95. 95. 75 DC/OS CLI dcos marathon app add ./python-look-and-feel.json dcos package install kafka --options=kafka-custom.json
  96. 96. 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
  97. 97. 76 DC/OS Service Discovery Network & Service Discovery DC/OS Dashboard Packages: Cosmos, Universe DC/OS CLI
  98. 98. 77 Network
  99. 99. 77 Network Docker BRIDGE, HOST
  100. 100. 77 Network Docker BRIDGE, HOST projectcalico.org, calico-mesos
  101. 101. 78 MesosDNS
  102. 102. 79 Service Discovery – Minuteman
  103. 103. 79 Service Discovery – Minuteman Распределенный балансировщик для использования внутри mesos
  104. 104. 79 Service Discovery – Minuteman Распределенный балансировщик для использования внутри mesos iptables NFQueue + erlang daemon
  105. 105. 79 Service Discovery – Minuteman Распределенный балансировщик для использования внутри mesos iptables NFQueue + erlang daemon Marathon network labels
  106. 106. 79 Service Discovery – Minuteman Распределенный балансировщик для использования внутри mesos iptables NFQueue + erlang daemon Marathon network labels Для постоянных подключений
  107. 107. 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
  108. 108. 81 Express 42 доставляет!
  109. 109. 82 Traefik HTTP Балансировщик для микросервисов
  110. 110. 82 Traefik – работает через Marathon Event API HTTP Балансировщик для микросервисов
  111. 111. 82 Traefik – работает через Marathon Event API – zerotime rolling deployment pattern HTTP Балансировщик для микросервисов
  112. 112. 82 Traefik – работает через Marathon Event API – zerotime rolling deployment pattern – собственные метрики, API HTTP Балансировщик для микросервисов
  113. 113. 82 Traefik – работает через Marathon Event API – zerotime rolling deployment pattern – собственные метрики, API – TLS / Websockets / HTTP2 HTTP Балансировщик для микросервисов
  114. 114. 83 Continuous Delivery
  115. 115. 84 Jenkins CI
  116. 116. 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: 'git@github.com: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') } }
  117. 117. 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' } }
  118. 118. 87 Точки внимания – Мониторинг – prometheus & marathon labels? – Централизованные логи – Продумайте вашу сеть
  119. 119. 88 Docs http://dcos.io http://www.meetup.com/DC-OS-Online-Meetup DC/OS slack чатик – http://chat.mesosphere.com
  120. 120. 89 Подкаст Сайт: http://devopsdeflope.ru Новости: https://telegram.me/devops_deflope
  121. 121. 90 Meetup http://www.meetup.com/DevOps-Moscow-in-Russian/
  122. 122. 91 @ex_sample http://telegram.me/minicon sample.n@gmail.com Спасибо, вопросы

×