Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс
Upcoming SlideShare
Loading in...5
×
 

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

on

  • 639 views

В наши времена облаков и Big Data трудно представить себе проект без хранилища данных. И сложностей с ним вроде ...

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

В докладе я расскажу о нашем решении этой проблемы, которое мы назвали Mastermind, о том, как работает фантазия сисадминов, когда в их руки попадает удобный инструмент, и о том, с какими проблемами мы столкнулись в распределённой среде.

Statistics

Views

Total Views
639
Views on SlideShare
389
Embed Views
250

Actions

Likes
0
Downloads
6
Comments
0

1 Embed 250

https://tech.yandex.ru 250

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • DHT-кольца? <br />
  • Структура каплов – что такое каплы? <br />
  • Таблицу маршрутизации можно кэшировать <br />
  • Cocaine – разрабатываются свои средства синхронизации. <br />

Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс Как упростить жизнь системному администратору с помощью Python – Андрей Василенков, Яндекс Presentation 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 ping stat read_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