Upload
ontico
View
265
Download
4
Embed Size (px)
Citation preview
2
Whoami 2009г, Xen, InfiniBand, custom L2 over L3, Chef
2012г, Devops :)
2011г, Chef, Web, Rails, soft skills
• Анализ текущей ситуации в индустрии, обозначение проблем
• DC/OS: место под солнцем, концепция, компоненты
• Наш опыт
3
План
7
– конфигурация ПО: Chef/Ansible
– деплой: Capistrano, Fabric
– configuration drift
DB/back/frontИзменения:
8
DB/back/front
– рассчитать потребление
ресурсов просто
– понятно какой компонент где
запускать
Поддержка:
9
– стандарт упаковки
– не собираем на продакшене(ruby,
python)
– конфигурация вместе с сервисом
DB/back/frontDocker экосистема упрощает жизнь:
11
Микросервисы
– 10/20/30 компонентов
– могут иметь связи any-to-any
– компоненты появляются и
исчезают
– реестр сервисов(static, dynami,
service discovery)
Устройство проекта:
12
Микросервисы
– конфигурация ПО: Chef/Ansible
– capistrano/fabric – неудобно
– configuration drift!!!
Изменения:
14
Docker экосистема опять все
упрощает:
Микросервисы
– стандартизация
– изоляция
– docker compose
– chef/ansible
– большая плотность на один хост
18
Свой low-level под каждую площадку
Способ деплоя зависит от площадки
Сложность поддержки:
количество сервисов X количество площадок
Жизнь вне AWS
19
Когда вы в последний раз выделяли память для запуска
приложения на своем ноутбуке? (OS делают это за нас уже
почти пол века!)
Рефлексия
19
Когда вы в последний раз выделяли память для запуска
приложения на своем ноутбуке? (OS делают это за нас уже
почти пол века!)
Зачем чинить то, что сломалось?
Рефлексия
19
Когда вы в последний раз выделяли память для запуска
приложения на своем ноутбуке? (OS делают это за нас уже
почти пол века!)
Зачем чинить то, что сломалось?
Зачем нам концепция “Сервер”?
Рефлексия
20
“Почему я вообще должен об этом всем думать? Я же
DevOps, я хочу docker и общаться в telegram за devops
практики!”
23
Data Center Operation System(DC/OS)
– Автоматическое управление
ресурсами в рамках всего ДЦ
– Автоматический Service Discovery
для всех компонентов вашего
проекта
25
Это что за ребята?
2009 Mesos initial white paper
May 2013 2.25M(Seed)
Jun 2014 $10.5M(A), Dec $36M(B)
25
Это что за ребята?
2009 Mesos initial white paper
May 2013 2.25M(Seed)
Jun 2014 $10.5M(A), Dec $36M(B)
Apr 2016 DC/OS Opensource
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
28
OS
Llinux, BSD, Windows
init, systemd, cron, …
YourApps | Kafka | HDFS
Packages, DNS, Auth, Network, …
30
DC/OS
Mesos
YourApps | Kafka | HDFS
Llinux, BSD, Windows
init, systemd, cron, …
YourApps | Kafka | HDFS
Packages, DNS, Auth, Network, …
31
Mesos – Distrubuted systems kernel
Задачи похожи:
Нет, это не замена linux kernel
Другой уровень абстракции
31
Mesos – Distrubuted systems kernel
Задачи похожи:
– управление ресурсами
Нет, это не замена linux kernel
Другой уровень абстракции
31
Mesos – Distrubuted systems kernel
Задачи похожи:
– управление ресурсами
– управление процессами
Нет, это не замена linux kernel
Другой уровень абстракции
31
Mesos – Distrubuted systems kernel
Задачи похожи:
– управление ресурсами
– управление процессами
– изоляция процессов
Нет, это не замена linux kernel
Другой уровень абстракции
32
Mesos – Distrubuted systems kernel
– Запускается на каждой машине
– Masters HA используя ZooKeeper
32
Mesos – Distrubuted systems kernel
– Запускается на каждой машине
– Masters HA используя ZooKeeper
– Скейлится до 10000 хостов
32
Mesos – Distrubuted systems kernel
– Запускается на каждой машине
– Masters HA используя ZooKeeper
– Скейлится до 10000 хостов
– SDK для написания
распределенных приложений
33
Mesos – Distrubuted systems kernel
– Изоляторы: Docker и Mesos
контейнеры
– Дифференциация через Roles
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
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
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
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]
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
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
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
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
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
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
46
DC/OS
Mesos
Marathon, Kubernetes, Spark
YourApps | Kafka | HDFS
Llinux, BSD, Windows
init, systemd, cron, …
YourApps | Kafka | HDFS
Packages, DNS, Auth, Network, …
47
Marathon – Distrubuted systems init
– Принцип как у systemd
– Другой уровень абстракции
– Health check приложений
47
Marathon – Distrubuted systems init
– Принцип как у systemd
– Другой уровень абстракции
– Health check приложений
– Rolling deploy pattern
48
Marathon – Distrubuted systems init
– HA используя ZooKeeper
– Нативная поддержка Docker
– Web UI, REST API, Event API
48
Marathon – Distrubuted systems init
– HA используя ZooKeeper
– Нативная поддержка Docker
– Web UI, REST API, Event API
– Декларативное описание
приложений
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” ..........
57
Marathon – your-app.json
............ "healthChecks": [{"gracePeriodSeconds": 60,"intervalSeconds": 10,"maxConsecutiveFailures": 3,"path": "/","portIndex": 0,"protocol": "HTTP","timeoutSeconds": 10
}]............
60
Mesos Frameworks – Kafka
Старт kafka framework в marathon (отдельное приложение)
kafka framework стартует брокеры
60
Mesos Frameworks – Kafka
Старт kafka framework в marathon (отдельное приложение)
kafka framework стартует брокеры
kafka framework управляет жизненным циклом брокеров:
60
Mesos Frameworks – Kafka
Старт kafka framework в marathon (отдельное приложение)
kafka framework стартует брокеры
kafka framework управляет жизненным циклом брокеров:
создание/удаление топиков, брокеров, ребалансировка итд.
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, …
75
DC/OS CLI
dcos marathon app add ./python-look-and-feel.json
dcos package install kafka --options=kafka-custom.json
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
76
DC/OS Service Discovery
Network & Service Discovery
DC/OS Dashboard
Packages: Cosmos, Universe
DC/OS CLI
77
Network
Docker BRIDGE, HOST
77
Network
Docker BRIDGE, HOST
projectcalico.org, calico-mesos
79
Service Discovery – Minuteman
Распределенный балансировщик
для использования внутри mesos
iptables NFQueue + erlang daemon
79
Service Discovery – Minuteman
Распределенный балансировщик
для использования внутри mesos
iptables NFQueue + erlang daemon
Marathon network labels
79
Service Discovery – Minuteman
Распределенный балансировщик
для использования внутри mesos
iptables NFQueue + erlang daemon
Marathon network labels
Для постоянных подключений
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
82
Traefik
– работает через Marathon Event API
– zerotime rolling deployment pattern
HTTP Балансировщик для микросервисов
82
Traefik
– работает через Marathon Event API
– zerotime rolling deployment pattern
– собственные метрики, API
HTTP Балансировщик для микросервисов
82
Traefik
– работает через Marathon Event API
– zerotime rolling deployment pattern
– собственные метрики, API
– TLS / Websockets / HTTP2
HTTP Балансировщик для микросервисов
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') }}
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' }}
87
Точки внимания
– Мониторинг – prometheus & marathon labels?
– Централизованные логи
– Продумайте вашу сеть
88
Docs
http://dcos.io
http://www.meetup.com/DC-OS-Online-Meetup
DC/OS slack чатик – http://chat.mesosphere.com
89
Подкаст
Сайт: http://devopsdeflope.ru
Новости: https://telegram.me/devops_deflope
90
Meetup
http://www.meetup.com/DevOps-Moscow-in-Russian/
91
@ex_sample
http://telegram.me/minicon
Спасибо, вопросы