Как упростить жизнь системному администратору с...

Preview:

DESCRIPTION

В наши времена облаков и Big Data трудно представить себе проект без хранилища данных. И сложностей с ним вроде бы нет — поставил, настроил и забыл. Но как быть, если хранилище живёт одновременно в нескольких дата-центрах, в нём лежит 4 петабайта данных, качество железа и сети оставляет желать лучшего, а количество системных администраторов ограничено? В докладе я расскажу о нашем решении этой проблемы, которое мы назвали Mastermind, о том, как работает фантазия сисадминов, когда в их руки попадает удобный инструмент, и о том, с какими проблемами мы столкнулись в распределённой среде.

Citation preview

1

Андрей Василенков

Как упростить жизнь системному администраторус помощью Python

Разработчик

3

Хранилище медиа-данных

• 4 Петабайта данных;

• ~5K rps;

• 4000 дисков;

• 150 серверов.

4

Хранилище медиа-данных

Как устроить хранилище?

1.Большие DHT-кольца с репликацией:

плюсы:

•фиксированное число групп, клиент всегда знает, куда писать;

минусы:

•при расширении кольца переезд большого количества данных по сети;

•долго работает восстановление.

5

Хранилище медиа-данных

Как устроить хранилище?

2.Не использовать DHT, много маленьких групп по одной ноде, репликация между маленькими группами:

плюсы:

•много маленьких идентичных групп, легко восстанавливать;

•новые группы можно создавать в новых датацентрах и объединять в реплики с группами в старых;

•можно освобождать старые датацентры.

минусы:

•клиент не знает ничего о существующих группах;

•нужно научиться управлять таким кластером.

6

Mastermind

• знает обо всех группах в кластере;

• помнит историю;

• хранит особые настройки каплов и неймспейсов;

• облегчает админам управление кластером:o добавление новых групп;o восстановление сломанных групп;o перенос группы с одной машины на другую;o синхронизация реплик друг с другом.

7

Mastermind

Состояние кластера:

•доступность групп;

•состояние групп;

•структура каплов;

•настройки каплов;

•настройки

неймспейсов;

•история групп.

DC 1

DC 2

1.1.1.1

…:1001

:1024

1.1.1.2

…:1001

:1024

2.2.1.2

…:1001

:1024

MastermindMastermind

pingsta

tread_data(m

etakey)

1.1.10.10

:1001

2.2.10.10

:1001:1001

8

Mastermind

Неймспейсы:

-нужны для физического и логического разделения данных различных проектов;

-позволяют иметь отдельные настройки (количество групп в капле, ключи авторизации, настройки политики записи данных).

9

Mastermind

Балансировка групп учитывает:

-свободное место на дисках;

-загрузку ЦП ноды;

-IOPS дисков;

-загрузку сетевого интерфейса;

-временно замороженные каплы.

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

10

Mastermind

История групп:

-на каких нодах жила группа;

-в каких каплах она была участником.

История позволяет:

-автоматизировать управление группой;

-обнаруживать ошибки настройки.

11

Mastermind: как это работает?

12

Mastermind: как это работает?

13

Mastermind: как это работает?

*

* изображение взято с сайтаhttp://lurkmore.to/WTF

14

Mastermind: как это работает?

Зачем нам Cocaine?

•решает все инфраструктурные задачи приложенияo деплой;o мониторинг работоспособности приложения;o горизонтальное масштабирование.

Как сделать python-приложение облачным:

•взять cocaine-framework-python;

•создать объект Worker и определить его API;

•запустить Worker.

15

Mastermind + Cocaine

Нужно ли платить за Cocaine?

•приложение должно слать heartbeat-запросы в облако;

•приложение должно обрабатывать ответы на heartbeat-запросы.

Все это делает Cocaine Python Framework:

•один процесс на Tornado;

•нельзя блокировать главный поток надолго.

16

Mastermind + Cocaine

Облако => неконтролируемое количество процессов:

•несколько процессов mastermind в разных датацентрах;

•несколько процессов mastermind на одной ноде.

Традиционные вопросы:

•чтение данных;

•запись данных:o обновление в рамках одного процесса (threading.Lock);o последовательное чтение и обновление;o обновление с помощью распределенных блокировок

(ZooKeeper).

17

Mastermind

Какие действия администратора можно оптимизировать:

•восстановление данных группы из реплики;

•переезд группы с одной физической машины на другую;

•синхронизация реплик друг с другом.

Одна общая задача – запуск команд на машинах хранилища.

18

Mastermind Minion

Запускает локальные команды на машинах с данными.

•работает на Tornado;

•знает о статусе запущенных команд;

•читает вывод команд и умеет его парсить;

•предоставляет небольшое json-API, которое использует mastermind:

o запустить команду;o получить статус команды;o получить список всех команд.

19

Mastermind Minion

*Изображение взято с сайта minionslovebananas.com, персонаж из кинофильма Despicable Me 2, Universal Studios

*

20

Mastermind

Очередь комплексных задач хранилища:

•задача – набор заданий, которые выполняются строго последовательно;

•список задач хранится в метабазе во вторичных индексах;

•только один процесс mastermind должен иметь доступ к изменению списка задач в один момент времени – распределенная блокировка.

21

Flowmastermind

22

Flowmastermind

23

Flowmastermind

24

Flowmastermind

25

Flowmastermind

26

Flowmastermind

27

Flowmastermind

28

Flowmastermind

29

Flowmastermind

30

Flowmastermind

31

Flowmastermind

32

Flowmastermind

33

Спасибо за внимание!

34

Андрей Василенков

https://github.com/nobodyisme/flowmastermind

indigo@yandex-team.ru

https://github.com/yandex

https://github.com/nobodyisme/mastermind

https://github.com/nobodyisme/mastermind-minion

Recommended