Upload
ontico
View
169
Download
9
Embed Size (px)
Citation preview
Особенности архитектуры распределённого хранилища в DropboxСлава Бахмутов — Dropbox SRE
1
Автор доклада• Слава Бахмутов• Site reliability engineer в Dropbox
• Евангелист Go, соведущий golangshow.com
• twitter: m0sth8• email: [email protected]
2
Dropbox
500 млн пользователей
более 1.2 млрд новых файлов каждый день
3
200 000 бизнесов
Инфраструктура
MetaData ServersMetaData
ServersMetaData Servers
DataBaseDataBase
DataBaseDataBase
MetadataServers
MetaData ServersMetaData
ServersMetaData ServersBlock
StorageServers
Amazon S3
2011
4
Блочное хранилище
2015MetaData ServersMetaData
ServersMetaData ServersBlock StorageServers
Amazon S3
DataBDataBDataBMP Go + Rust
5
Magic pocket
6
Magic pocket
7
Magic pocket
8
Magic pocket
• Inside the Magic Pocket• Pocket watch: Verifying exabytes of data
https://blogs.dropbox.com/tech/9
Availability Durability
10
Availability (доступность)
MTBF - mean time between failure
MTTR - mean time to repair
MTTR = "time to detect" + "time to remediate"
https://www.vividcortex.com/blog/the-factors-that-impact-availability-visualized11
Durability (сохранность)
12
Durability
fsync!
13
Durability
MTTF / AFR ?
14
https://www.backblaze.com/blog/hard-drive-reliability-stats-q1-2016/15
Durability
16
DurabilityRAID!
17
Durability
18
DurabilityMultisite
replication!
19
Durability
27 девяток!
20
Изоляция (Isolation)
Защита (Protection)
Контроль (Verification)
Автоматизация (Automation)
21
Изоляция (Isolation)
Защита (Protection)
Контроль (Verification)
Автоматизация (Automation)
22
Изоляция
• Физическая• Логическая• Эксплуатационная
23
Изоляция
• Физическая• Логическая• Эксплуатационная
24
Физическая изоляция1. Диск
2. Сервер
3. Стойка (rack)
4. Ряд (row)
5. Источник питания (power feed)
6. Кластер
7. Датацентр
8. Регион
25
Физическая изоляция
• Производители оборудования• Версии оборудования/прошивки
• Внешние бекапы
26
Изоляция
• Физическая• Логическая• Эксплуатационная
27
Логическая изоляция
• Failures cascade =(• Bugs propagate =(
28
Логическая изоляция
• Слабая связанность!
29
Логическая изоляция
• Zookeeper =(• Database =(
30
Логическая изоляцияDropbox West Dropbox East
put
getzone zone
31
Логическая изоляцияDropbox West Dropbox East
simple
☺ complicated!
☹complicated!
☹
32
Изоляция
• Физическая• Логическая• Эксплуатационная
33
Эксплуатационная изоляция
• Релиз процесс• Инструменты
• Контроль доступа
34
Эксплуатационная изоляция
testingtestingtestingtesting staging zone 1 zone 2,3
1 неделя 1 неделянедели
Релиз процесс
35
Изоляция (Isolation)
Защита (Protection)
Контроль (Verification)
Автоматизация (Automation)
36
Защита
• Валидация операций• Восстановление
• Тестирование
37
Защита
• Валидация операций• Восстановление
• Тестирование
38
Валидация операций
• Самый большой риск для системы - это оператор (Вы)
39
Валидация операций
• gsh --group memcache lifecycle=reinstall upgrade.sh
40
Валидация операций
• gsh --group memcache lifecycle=reinstall upgrade.sh
41
Валидация операций
• gsh --group "memcache lifecycle=reinstall" upgrade.sh
42
Валидация операций
• gsh --group memcache lifecycle=reinstall upgrade.sh
43
Валидация операций
• Оператор не виноват. Если что-то можно поломать - это будет поломано.
• Поменять синтаксис команды (gsh)
• Запретить перезагружать живые хосты (DB, memcache, storage)• Автоматизируем
44
Валидация операций
• gsh --group memcache lifecycle=reinstall -- upgrade.sh
45
Валидация операций
• sqlalchemy.sql.expression.update(table, whereclause=None, values=None, inline=False, ..., **kwargs)
46
Валидация операций
• ProxySQL:• запрет операций (DROP TABLE, ALTER, updates без where)
• throttling
47
Защита
• Валидация операций• Восстановление• Тестирование
48
Восстановление
• Создание бекапов• Постоянное восстановление из бекапов.
https://code.facebook.com/posts/1007323976059780/continuous-mysql-backup-validation-restoring-backups49
Восстановление
50
Тестирование
MTBF - mean time between failure
MTTR - mean time to repair = 0MTTR = "time to detect" + "time to remediate"
51
Изоляция (Isolation)
Защита (Protection)
Контроль (Verification)
Автоматизация (Automation)
52
Контроль
• Кто-то всегда напортачит, возможно даже вы
• Нужно уметь определять, когда что-то пошло не так
53
ВерификацияScanner Purpose
Cross-zone Verifier Application-level walker that verifies all data is in storage system and appropriate storage regions
Storage Watcher Sampled black-box check that retrieves puts after a minute, hour, day, week, etc.
Metadata Scanner Verify all data in the index is on the correct storage nodes
Trash Inspector Verifies all deleted extents contain only blocks that are deleted or have been moved to other storage nodes.
Disk Scrubber Verify data on disk is readable and conforms to checksums
54
Верификация
• Не протестированные верификаторы не верифицируют ничего
55
ВерификацияDRT - Disaster Recovery Testing
1. Зачем?
1. Ловим проблемы
2. Доказываем суждения
3. Спокойствие для дежурных
2. Регулярно и в продакшене
Hope is not a strategy- Ben Treynor (Google)
56
Изоляция (Isolation)
Защита (Protection)
Контроль (Verification)
Автоматизация (Automation)
57
Availability (доступность)
MTBF - mean time between failure
MTTR - mean time to repair
MTTR = "time to detect" + "time to remediate"
https://www.vividcortex.com/blog/the-factors-that-impact-availability-visualized58
Автоматизация
Ahumanoperatormustauthorizeexecutionhere,unlessthePrescriptionwasinstantiated
withrun_automatically=True+++
IssuesIssuePrescription+IssuePullPluginIssuePullPlugin--------*--------->DiagnosePlugin-------------+>RemediatePlugin---->verifiesthatthe------|^^^^+^^issueisnolonger^||||||aproblem|
HooksHooksHooksHooksHooksHooksHooks
Hookshavetheabilitytopostponeexecutionoreventocompletelydenyit
Параноидальная автоматизация
59
Naoru
Alerting
60
Naoru
61
Naoru
AlertingDiagnose
Plugin
62
Naoru
1. Проверить что ssh работает
2. Подключиться по IPMI
A. Нет ответа - Перезагрузка
B. Зависло в initramfs - Деаллокация машины
C. CPU soft lockup - Перезагрузка
63
Naoru
Alerting Diagnose Plugin
Remediate Plugin
Авторизация оператором
64
Naoru
65
Naoru
Alerting Diagnose Plugin
Remediate Plugin
Авторизация оператором
Hooks
66
Naoru
67
Naoru
Alerting Diagnose Plugin
Remediate Plugin
Авторизация оператором
Hooks
68
Naoru
69
Naoru
Alerting Diagnose Plugin
Remediate Plugin
Авторизация оператором
HooksHooks
70
Другие решенияOpen-source:• https://github.com/StackStorm
• http://riemann.io/
• https://www.opsgenie.com/
• FBAR (facebook auto-remediation)
• Nurse (linkedin)
71
Автоматизация
• Сложная и долгая автоматизация• Обновление ядра или версии БД
• Перемещение серверов из одной стойки в другую
• http://bitly.com/stm-dropbox <- пример
72
Wheelhouse
73
Wheelhouse
74
Wheelhouse
75
Wheelhouse
76
Wheelhouse
77
Wheelhouse
78
Wheelhouse
79
Wheelhouse
80
Wheelhouse
81
Wheelhouse
• Только один маленький блок• Переиспользуем в других проектах
82
Изоляция (Isolation)
Защита (Protection)
Контроль (Verification)
Автоматизация (Automation)
83
Вопросы?
• Слава Бахмутов• Site reliability engineer в Dropbox
• twitter: m0sth8• email: [email protected]
84
85