close

Вход

Забыли?

вход по аккаунту

?

PPT, 2 МБ

код для вставкиСкачать
Распределенная отказоустойчивая
система хранения статичных данных
Глеб Воронич
gleb@ihc.ru
Требования к системе хранения
Надежность
Простота эксплуатации для админов
Простота для разработчиков
Прозрачность для пользователей
Возможность вносить изменения в схему
отдачи
Распределенные ФС
Плюсы:
Репликация происходит сама по себе
•
Минусы:
Недостаточная производительность
•Зависимость от Fiber/10GE/InfiniBand
•Сложность настройки и сопровождения
•Сложность восстановления ФС
•Lock Managers, blah-blah-blah
•
А что еще есть?
Плюсы:
Отказоустойчивость
Поддержка
сторонними
специалистами
Backup не нужен (если верить на слово)
•
•
•
Минусы:
Географическая
удаленность
Цена!
Хранение 100Tb — $7168/мес
•
•
MogileFS
MogileFS
What did u say?
MogileFS
Brad Fitzpatrick
Создатель
LiveJournal
Основатель
Danga
Interactive
Сейчас работает в Google
•
•
•
Danga Interactive
memcached
OpenID
•
•
What did u say?
MogileFS
Brad Fitzpatrick
Создатель
LiveJournal
Основатель
Danga
Interactive
Сейчас работает в Google
•
•
•
Danga Interactive
memcached
OpenID
•
•
Преимущества
Уровень приложения
Отсутствие SPOF
Автоматическая репликация
на основе классов
RAID больше не нужен
Свобода выбора ФС
API
Java
Perl
PHP
Python
Ruby
Архитектура
Tracker (mogilefsd)
Database (MySQL/PostgreSQL)
Storage Node (mogstored)
Термины и определения
Домен — namespace
Класс — политика
Хост — Storage Node
Девайс — виртуальное устройство
Flat Namespaces (домены)
namespace1:/path/to/file
namespace2:/path/to/file
namespaceN:/path/to/file
Storage Node изнутри
Любой дистрибутив Linux
Не требуется делать все с нуля
WebDAV Server (e.g. Nginx)
/var/mogdata VS /home/ivan/WTF
Девайс = директория
/dev132/0/178/804/0178804170.fid
Можно даже...
Но лучше так
Command Line Interface
mogadm host add node1.project.com --ip=10.20.30.40 --status=alive
mogadm device add node1.project.com dev10
mogadm domain add project.com
mogadm domain add happycontent.net
mogadm class add project.com images --mindevcount=4 -replpolicy="MultipleHosts"
Command Line Interface
mogadm settings set network_zones near,far
mogadm settings set zone_near 10.5.0.0/16
mogadm settings set zone_far 10.6.0.0/16
mogadm class add happycontent.net images --mindevcount=1
--replpolicy="HostsPerNetwork(near=2,far=1)"
Как это выглядит в коде?
<?php
$client = new MogileFs();
$client->connect('10.20.30.5', 7001, 'project.com');
$client->put('/images/img.png', 'img.png', 'images');
?>
## http://static.project.com/images/img.png
Как это отдается?
Собственный backend
Гибкость и безграничные
возможности
•
Nginx + mogilefs_module
Простота настройки
location /mogile {mogilefs_domain test.mogile;mogilefs_class class2;mogilefs_tracker 10.20.30.40:70
Минимальные ресурсы
•Высокая скорость
•
Где отказоустойчивость?
Где отказоустойчивость?
Master - Master
Active - Standby
Состояние storage проверяет
сам tracker
Где отказоустойчивость?
Где отказоустойчивость?
Автоматическое определение недоступности девайсов и хостов
0.0 [ 1] dev8
448.738
422.177
26.561 94.08% writeable 0.0 [ 1] dev9
45
Девайсы
alive
down
dead
readonly
drain
Device Weight
dev10 weight=100
dev15 weight=200
dev20 weight=400
Плюшки
FSCK
Rebalancing
Поддержка
memcached
mogadm rebalance settingsrebal_policy
= from_percent_used=95
to_percent_free=50
Rebalancing
$ mogadm rebalance test
Tested rebalance policy...
Policy: etc
Source:from_hostsfro
m_devicesfrom_perce
nt_usedfrom_percent_
freefrom_space_usedf
rom_space_freefid_ag
elimit_typelimit_bylimit
Target:to_hoststo_dev
icesto_percent_usedto
_percent_freeto_spac
e_usedto_space_free
not_to_hostsnot_to_d
evicesuse_dest_devsl
eave_in_drain_mode
# host ids# device ids# 0.nn * 100
# old | new
# global | device
# size | count | percent | none
# 100g | 10% | 5000
# all | N (list up to N devices to rep pol)
Source devices:
- 100
- 102
- 103
- 104
Destination devices:
- 156
- 157
- 158
- 159
$ mogadm rebalance status
Rebalance is running
Rebalance status:
bytes_queued = 126008251219
completed_devs = 102,125,151,148
fids_queued = 519021
sdev_current = 119
sdev_lastfid = 54646960511250969
sdev_limit = 2840763873
source_devs = 108,115,103,113,152,142,107
Быстро, масштабно, надежно.
23 млн файлов
180 Tb данных
mysql> select count(fid) as files,
sum(length)/1099511627776 as
size
from file\G******************files:
23925095 size: 184.0754
Быстро, масштабно, надежно.
Ни единого разрыва
Ни одного утраченного файла
Быстро, масштабно, надежно.
Ежедневно:
2.5
млн
просмотров
350 тыс пользователей
•
•
Ежемесячно:
3.5
Tb
данных
30 тыс файлов
•
•
Быстро, масштабно, надежно.
Min 4 Gbps
Max 13 Gbps
https://code.google.com/p/mogilefs/
Спасибо!
Глеб Воронич
gleb@ihc.ru
Документ
Категория
Презентации
Просмотров
4
Размер файла
2 364 Кб
Теги
1/--страниц
Пожаловаться на содержимое документа