Особенности архитектуры распределённого хранилища в...

Post on 06-Jan-2017

169 Views

Category:

Engineering

9 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Особенности архитектуры распределённого хранилища в DropboxСлава Бахмутов — Dropbox SRE

1

Автор доклада• Слава Бахмутов• Site reliability engineer в Dropbox

• Евангелист Go, соведущий golangshow.com

• twitter: m0sth8• email: m0sth8@gmail.com

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: m0sth8@gmail.com

84

85

top related