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

34
1

Upload: yandex

Post on 10-May-2015

897 views

Category:

Internet


2 download

DESCRIPTION

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

TRANSCRIPT

Page 1: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

1

Page 2: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

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

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

Разработчик

Page 3: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

3

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

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

• ~5K rps;

• 4000 дисков;

• 150 серверов.

Page 4: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

4

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

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

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

плюсы:

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

минусы:

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

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

Page 5: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

5

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

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

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

плюсы:

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

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

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

минусы:

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

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

Page 6: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

6

Mastermind

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

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

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

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

Page 7: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

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

Page 8: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

8

Mastermind

Неймспейсы:

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

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

Page 9: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

9

Mastermind

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

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

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

-IOPS дисков;

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

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

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

Page 10: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

10

Mastermind

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

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

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

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

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

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

Page 11: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

11

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

Page 12: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

12

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

Page 13: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

13

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

*

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

Page 14: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

14

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

Зачем нам Cocaine?

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

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

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

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

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

Page 15: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

15

Mastermind + Cocaine

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

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

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

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

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

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

Page 16: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

16

Mastermind + Cocaine

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

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

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

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

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

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

(ZooKeeper).

Page 17: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

17

Mastermind

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

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

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

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

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

Page 18: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

18

Mastermind Minion

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

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

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

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

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

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

Page 19: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

19

Mastermind Minion

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

*

Page 20: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

20

Mastermind

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

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

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

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

Page 21: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

21

Flowmastermind

Page 22: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

22

Flowmastermind

Page 23: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

23

Flowmastermind

Page 24: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

24

Flowmastermind

Page 25: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

25

Flowmastermind

Page 26: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

26

Flowmastermind

Page 27: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

27

Flowmastermind

Page 28: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

28

Flowmastermind

Page 29: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

29

Flowmastermind

Page 30: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

30

Flowmastermind

Page 31: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

31

Flowmastermind

Page 32: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

32

Flowmastermind

Page 33: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

33

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

Page 34: Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс

34

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

https://github.com/nobodyisme/flowmastermind

[email protected]

https://github.com/yandex

https://github.com/nobodyisme/mastermind

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