140
DC/OS – Больше чем PAAS* Никита Борзых, Экспресс 42 *Рассказ про будущее

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

  • Upload
    ontico

  • View
    264

  • Download
    4

Embed Size (px)

Citation preview

DC/OS – Больше чем PAAS*

Никита Борзых, Экспресс 42

*Рассказ про будущее

2

Whoami 2009г, Xen, InfiniBand, custom L2 over L3, Chef

2012г, Devops :)

2011г, Chef, Web, Rails, soft skills

• Анализ текущей ситуации в индустрии, обозначение проблем

• DC/OS: место под солнцем, концепция, компоненты

• Наш опыт

3

План

4

💰

Ценность

5

Buzz график

6

1/2/3 приложения

и/или монолитное приложение

хранилище данных

DB/back/frontУстройство проекта:

7

– конфигурация ПО: Chef/Ansible

– деплой: Capistrano, Fabric

– configuration drift

DB/back/frontИзменения:

8

DB/back/front

– рассчитать потребление

ресурсов просто

– понятно какой компонент где

запускать

Поддержка:

9

– стандарт упаковки

– не собираем на продакшене(ruby,

python)

– конфигурация вместе с сервисом

DB/back/frontDocker экосистема упрощает жизнь:

10

(Микро)сервисы

11

Микросервисы

– 10/20/30 компонентов

– могут иметь связи any-to-any

– компоненты появляются и

исчезают

– реестр сервисов(static, dynami,

service discovery)

Устройство проекта:

12

Микросервисы

– конфигурация ПО: Chef/Ansible

– capistrano/fabric – неудобно

– configuration drift!!!

Изменения:

13

Микросервисы

– рассчитать потребление

ресурсов сложно

– ручная аллокация

приложений

Поддержка:

14

Docker экосистема опять все

упрощает:

Микросервисы

– стандартизация

– изоляция

– docker compose

– chef/ansible

– большая плотность на один хост

15

Микросервисы

16

Микросервисы

17

Жизнь вне AWS

“Обычная” площадка DEV/QA в офисе Облако Где-то у заказчика

18

Свой low-level под каждую площадку

Способ деплоя зависит от площадки

Сложность поддержки:

количество сервисов X количество площадок

Жизнь вне AWS

19

Рефлексия

19

Когда вы в последний раз выделяли память для запуска

приложения на своем ноутбуке? (OS делают это за нас уже

почти пол века!)

Рефлексия

19

Когда вы в последний раз выделяли память для запуска

приложения на своем ноутбуке? (OS делают это за нас уже

почти пол века!)

Зачем чинить то, что сломалось?

Рефлексия

19

Когда вы в последний раз выделяли память для запуска

приложения на своем ноутбуке? (OS делают это за нас уже

почти пол века!)

Зачем чинить то, что сломалось?

Зачем нам концепция “Сервер”?

Рефлексия

20

“Почему я вообще должен об этом всем думать? Я же

DevOps, я хочу docker и общаться в telegram за devops

практики!”

21

Работать должны роботы!

22

Datacenter is a new computer

23

Data Center Operation System(DC/OS)

23

Data Center Operation System(DC/OS)

– Автоматическое управление

ресурсами в рамках всего ДЦ

23

Data Center Operation System(DC/OS)

– Автоматическое управление

ресурсами в рамках всего ДЦ

– Автоматический Service Discovery

для всех компонентов вашего

проекта

24

DC/OS

24

DC/OS

– Cloud agnostic

24

DC/OS

– Cloud agnostic

– Единая точка управления

проектом и датацентром через

WEB UI и CLI

25

Это что за ребята?

25

Это что за ребята?

2009 Mesos initial white paper

25

Это что за ребята?

2009 Mesos initial white paper

May 2013 2.25M(Seed)

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

26

Кто пользуется?– Apple(Siri)

– Airbnb

– Adobe

– Verizon

– PayPal

– eBay

– Express 42 ;-)

27 `

Место в пищевой цепи(*)

28

OS

Llinux, BSD, Windows

init, systemd, cron, …

YourApps | Kafka | HDFS

Packages, DNS, Auth, Network, …

29

DC/OS

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

Другой уровень абстракции

31

Mesos – Distrubuted systems kernel

Задачи похожи:

– управление ресурсами

– управление процессами

– изоляция процессов

Нет, это не замена linux kernel

Другой уровень абстракции

32

Mesos – Distrubuted systems kernel

32

Mesos – Distrubuted systems 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

33

Mesos – Distrubuted systems kernel

– Изоляторы: Docker и Mesos

контейнеры

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

47

Marathon – Distrubuted systems init

– Принцип как у systemd

47

Marathon – Distrubuted systems init

– Принцип как у systemd

– Другой уровень абстракции

47

Marathon – Distrubuted systems init

– Принцип как у systemd

– Другой уровень абстракции

– Health check приложений

47

Marathon – Distrubuted systems init

– Принцип как у systemd

– Другой уровень абстракции

– Health check приложений

– Rolling deploy pattern

48

Marathon – Distrubuted systems init

48

Marathon – Distrubuted systems init

– HA используя ZooKeeper

48

Marathon – Distrubuted systems init

– HA используя ZooKeeper

– Нативная поддержка Docker

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

}]............

58

Marathon – Rolling Deploy pattern

59

Mesos Frameworks

60

Mesos Frameworks – Kafka

60

Mesos Frameworks – Kafka

Старт kafka framework в marathon (отдельное приложение)

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, …

62

DC/OS Dashboard

DC/OS CLI

Network & Service Discovery

DC/OS Dashboard

Packages: Cosmos, Universe

68

DC/OS Packages

DC/OS CLI

Network & Service Discovery

DC/OS Dashboard

Packages: Cosmos, Universe

73

DC/OS CLI

Network & Service Discovery

DC/OS Dashboard

Packages: Cosmos, Universe

DC/OS CLI

74

DC/OS CLI

74

DC/OS CLI

– Полное управление всем DC/OS

стеком

74

DC/OS CLI

– Полное управление всем DC/OS

стеком

– Расширения для CLI

75

DC/OS CLI

75

DC/OS CLI

dcos marathon app add ./python-look-and-feel.json

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

77

Network

Docker BRIDGE, HOST

projectcalico.org, calico-mesos

78

MesosDNS

79

Service Discovery – Minuteman

79

Service Discovery – Minuteman

Распределенный балансировщик

для использования внутри 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

81

Express 42 доставляет!

82

TraefikHTTP Балансировщик для микросервисов

82

Traefik

– работает через Marathon Event API

HTTP Балансировщик для микросервисов

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 Балансировщик для микросервисов

83

Continuous Delivery

84

Jenkins CI

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

[email protected]

Спасибо, вопросы