Как упростить жизнь системному администратору с...
Post on 10-May-2015
900 Views
Preview:
DESCRIPTION
TRANSCRIPT
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
top related