50
one-cloud Система управления датацентром в ОК Олег Анастасьев @m0nstermind [email protected]

One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

  • Upload
    ontico

  • View
    304

  • Download
    3

Embed Size (px)

Citation preview

Page 1: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

one-cloud Система управления датацентром в ОК

Олег Анастасьев @m0nstermind [email protected]

Page 2: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

2

4

ЦОД

500

Стоек

8000

Серверов

Железо в Одноклассниках

Page 3: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

3

инженеры

сетевики

админы

разработчики(функциональные команды )

Page 4: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

4

Работает так

web frontend API music

app server

one-graph user-cache black-list

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

Page 5: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• 1 сервер = 1 задача • Это просто:

• В массовом управлении

• В диагностике и мониторинге

• 1 сервис = Х серверов • Просто распределяется ресурс

• Специализированные конфигурации • Это эффективно

5

Железо в Одноклассниках

Page 6: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

6

Самое дорогое - это сервера

Самое дорогое - место в ДЦУтилизация стоек - 11 %

Нужно повышать утилизацию

Page 7: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• 1 сервер = Х задач • Все сложно:

• Конфигурация

• Диагностика

• Нет изоляции

7

Повышаем %% по-простому

Page 8: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• Конфигурация • Образы ФС

• Многослойность, Таги, Реестр

• Изоляция • память, ЦПУ

8

Контейнеризируем

Page 9: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• Размещение контейнеров на сервера • Упаковка по ресурсам: ЦП, память, трафик • Может быть сложным: стойки, залы • На 8,000 вручную - не вариант

• Выделение ресурсов на проект • Больше самостоятельности • Сохраняя контроль

9

Другая часть проблем

Нужен управляющий слой

Page 10: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

10

Три квадратика

docker daemon

one-cloud miniond

one-cloud masters

Linux Kernel

Page 11: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

Распределение ресурсов

Page 12: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• Ресурс это: • ЦПУ • Память • Трафик • Диски ( место, тип, iops )

• Ресурсы конечны • Нужно ограничивать

12

Распределение ресурсов

cpu = 1500 mem = 1.5 T lan_in = 32 gbitlan_out = 32 gbit hdd = 20x15TQ

Но на что поставить квоту?

Page 13: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

13

Работает так

web frontend API music

app server

one-graph user-cache black-list

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

Page 14: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

14

front

web frontend API music

one-graph

user-cache

black-list

app server

cache

db

app server

photo-cache group-cache

musicweb

Page 15: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

15

.

cachefront

web music

api …group1 group2…

user-cache

Иерархия

Q

group1.web.front api.music.front user-cache.cache

Page 16: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• Имя • Квота на ресурсы • Права пользователей

• Отправка сервиса для dev

• Административные права для ops/admin

• Отправляем сервисы • Выполняются в пределах квоты

16

Иерархическая очередь

group1.web.front

cpu = 1500 mem = 1.5 TQ ( )

Submit, Admin

Page 17: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• Сервис имеет: • Полное имя • Манифест

( ресурсы, конфигурация, репликация, отказы )

• И экземпляры

17

Сервисы

ok-web.group1.web.front

1.ok-web.group1.web.front

…2.ok-web.group1.web.front

42.ok-web.group1.web.front

ok-app.group1.web.front

Page 18: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

Классы изоляции задач

Page 19: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

19

Классы задач в ОК

• С малой задержкой : prod • важна скорость ответа ( latency )

• Расчетные : batch • важна пропускная способность ( throughput ) • Map Reduce, ML, DWH, etc.

• Фоновые : idle • тесты, пересчеты, конвертации

Page 20: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• С малой задержкой • важна скорость ответа

( latency )

• размещение резервированием

20

Классы задач в ОК : prod

t

cores

1

2

3

4

0

max

avg

alloc: cpu = 4 (max)

task 1 task 2 task 3 task 4

Page 21: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

21

Классы задач в ОК : batch

t

avg

cores

1

2

3

4

0

min

• Расчетные • важна пропускная способность

( throughput )

• Map Reduce, ML, DWH, etc.

alloc: cpu = [1, * )

Page 22: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

22

prod + batch = love

t

cores

1

2

3

4

0

• С малой задержкой • важна скорость ответа

• размещение резервированием

• Расчетные • важна средняя скорость

• MapRed, ML, etc.

Page 23: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

23

Как это сделать в docker run

prod, cpu = 4

batch, cpu = [1, * )

—cpuset = 1-4 —cpuquota = 400 000 —cpuperiod = 100 000

?

Page 24: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

24

Как это сделать в docker run

prod, cpu = 4

batch, cpu = [1, * )

—cpuquota = 400 000 —cpuperiod = 100 000

—cpushares = 1 024batch, cpu = [2, * )

—cpushares = 2 048

Page 25: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• SCHED_OTHER • обычный в Linux

• SCHED_BATCH • ресурсоемкий; штраф за активацию

• SCHED_IDLE • фоновый < nice -19

25

Linux CPU scheduler policies

*man sched_setschedulergithub.com/odnoklassniki/one-nio

Page 26: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

26

Как это сделать в docker run

prod, cpu = 4

batch, cpu = [1, * )

—cpuquota = 400 000 —cpuperiod = 100 000

—cpushares = 1 024 [ —cap-add = SYS_NICE ]

+ SCHED_OTHER

+ SCHED_BATCH

+ SCHED_IDLEidle, cpu = [2, * )

—cpushares = 2 048 [ —cap-add = SYS_NICE ]

Page 27: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

27

Трафик

t

mbps

500

0

prod: lan = 500mbpsbatch: lan = [100, *)

• prod приоритетнее batch • batch > idle ( по avg )

• на исходящий трафик • и на входящий

Как это сделать в docker run ?Никак не сделать в docker run…

Page 28: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

28

Linux QoS

• Traffic Control ( tc ) • Hierarchical Fair Service Curve ( hfsc ) • 2 класса: prod; batch/idle

• modprobe ifb • для QoS входящего трафика

• регулируемая полоса для batch/idle • это пришлось дописать

http://lartc.org

Page 29: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

29

ok-web.group1.web.front.prod

catalog-manager.music.batch

transformer.music.idle

prod batch idle

…front

web music

musictransformer

musiccatalog

… …

Page 30: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• Трафик • внутренняя очередь сетевой карты • только TCP • ~ + 10 % к задержке

• CPU интенсивный batch • ~ нет влияния на prod

• Память • вымывается кэш CPU • ~ + 10% к задержке

30

Полная изоляция невозможна

Page 31: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

Отказоустойчивость

Page 32: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• Изоляция • квота на ресурсы • нет влияния на других

• Политики рестарта • ALWAYS, ON_FAILURE • NONE

32

Отказ контейнера

Page 33: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• Переносим! • Нужен Service Discovery

• ( даже для ip-per-container ) • Удобно • Много решений • +Баланcировщик

• Нужен ли Service Discovery ? • Балансировок уже много • Критическая система + Точка Отказа • Много переделывать. Очень много. Местами невозможно.

33

Отказ миньона

Page 34: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• IP статичны • закрепляются при создании сервиса • max( replicas ) • следуют за контейнером по сети

• DNS • живые и мертвые IP ( клиенты отфильтруют )

• Критичные сервисы - без DNS

34

Жизнь ( почти ) без Service Discovery

1.1.1.1

1.1.1.2…

ok-web.group1.web.front.prod

= 1.1.1.1

1.ok-web.group1.web.front.prod

Page 35: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

35

Сеть

M

route reflector

1.ok-web

eBGP

1.1.1.1bird

Page 36: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

36

Сеть

M route reflector

1.ok-web

eBGP

Multi Exit Discriminator

1.1.1.1

1.ok-web1.1.1.1

Mbird

Page 37: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

37

Сеть

M route reflector

1.ok-web

eBGP

1.1.1.1 : 1,000,000

1.ok-web1.1.1.11.1.1.1 : 999,999

Multi Exit Discriminator

M

Page 38: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

Аварии

Page 39: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• Отказ множества машин • Массовые миграции контейнеров • Нехватка ресурсов

• Отказ управляющего слоя

• Взлет количества алертов • Тормоза/Шум в мониторинге

39

Авария - это:

Page 40: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

40

prod batch idle

cachefront

web music

musictransformer

musiccatalog

… …

1 2

• Приоритет размещения • Выше приоритет - быстрее мигрирует • Применяется иерархически

0

10

Массовые миграции

0

1

Page 41: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

41

prod batch idle

cachefront

web music

musictransformer

musiccatalog

… …

• Приоритет вытеснения задачи • Вытесняет ( останавливает ) задачу с миньона • Часть задач остается неразмещенными

Нехватка ресурсов

2

10

10

00

Page 42: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

Тотальное разрушение

Page 43: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• Стихия

• Человеческий фактор

• Баги

43

Авария ДЦ целиком : причины

https://habrahabr.ru/company/dataline/blog/333578/

Это НЕ редкость !

#окживи

Page 44: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• 1 one-cloud = max( 1 ДЦ ) • Потеря облака = потеря 1 ДЦ

• Готовность приложений к потере ДЦ • Политика резервирования • Отказоустойчивые БД • Тестирование отказа/Учения

• 4 ДЦ = 4 one-cloud • Изолированы друг от друга

44

Изолировать !

Page 45: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• При потенциально опасных командах • Массовый останов

• При “странных” командах • Уменьшение реплик, смена имени образа сервиса

45

Проверка адекватности оператора

Page 46: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• Иерархия сервисов, видимость • prod + batch = плотная утилизация

• docker —cpu* + sched_setscheduler/chrt • cpuset

• Изоляция, отказы, изолента • Аварии, а также

• приоритеты и их польза в иерархии • ops неадекват страшнее стихии

46

45 плотно упакованных слайдов

Page 47: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)
Page 48: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

2 ЧАВО

Page 49: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

• prod vs batch/idle • = разные политики размещения

• Иерархические очереди • С приоритетами, правами, квотами

• Статические IP per container • Нужна интеграция с сетевой инфраструктурой, управление BGP MED • Управление пулами IP на очередях

• Простота • Простые и понятные имена контейнеров • Не нужны сложные pods

49

Почему не M*, K*, X

Page 50: One-cloud — система управления дата-центром в Одноклассниках / Олег Анастасьев (Одноклассники)

50

Потребление памяти