66
ХРАНИЛИЩЕ 101 ИЛИ КРАТКОЕ РУКОВОДСТВО ПО СОЗДАНИЮ СВОЕЙ АЛЬТЕРНАТИВЫ AMAZON S3 Максим Музафаров

Хранилище 101

Embed Size (px)

Citation preview

Page 1: Хранилище 101

ХРАНИЛИЩЕ 101ИЛИ КРАТКОЕ РУКОВОДСТВО ПО СОЗДАНИЮ СВОЕЙ

АЛЬТЕРНАТИВЫ AMAZON S3

Максим Музафаров

Page 2: Хранилище 101

Ликбез

Page 3: Хранилище 101

• Простота протокола

Файлохранилище

Page 4: Хранилище 101

• Простота протокола• Резервирование

Файлохранилище

Page 5: Хранилище 101

• Простота протокола• Резервирование• Отказоустойчивость

Файлохранилище

Page 6: Хранилище 101

• Простота протокола• Резервирование• Отказоустойчивость• Доступность

Файлохранилище

Page 7: Хранилище 101

• Простота протокола• Резервирование• Отказоустойчивость• Доступность• Администрирование

Файлохранилище

Page 8: Хранилище 101

S3

REST API

I/O Admin Public

Page 9: Хранилище 101

LibreS3OpenStackCeph

Собственное файлохранилище

Page 10: Хранилище 101

LibreS3OpenStackCeph

Собственное файлохранилище

Page 11: Хранилище 101

LibreS3OpenStackCeph

Собственное файлохранилище

Page 12: Хранилище 101

Ceph• CEPH FS• S3• Swift

Собственное файлохранилище

Page 13: Хранилище 101

Установка Ceph

Page 14: Хранилище 101

Архитектура

ceph# • Обычный сервер• 8 ядер ЦПУ• 16GB ОЗУ• 500GB HDD

Page 15: Хранилище 101

Архитектура

ceph1 ceph3ceph2

CentOS CentOS CentOS

Page 16: Хранилище 101

Архитектура

ceph1 ceph3ceph2

mon1 mon2 mon3

Page 17: Хранилище 101

Архитектура

ceph1 ceph3ceph2

mon1 mon2 mon3

osd.0 osd.1 osd.2

Page 18: Хранилище 101

Архитектура

ceph1 ceph3ceph2

mon1 mon2 mon3

osd.0 osd.1 osd.2

mds

Page 19: Хранилище 101

Подготовка сервера

Репозиторий на ceph1[Ceph] name=Ceph packages for $basearch gpgkey=https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc enabled=1 baseurl=http://ceph.com/rpm-firefly/el6/$basearch priority=1 gpgcheck=1 type=rpm-md

Page 20: Хранилище 101

Создание кластера

Репозиторий на ceph1ceph-deploy new ceph1 ceph2 ceph3

Page 21: Хранилище 101

Создание кластера

Репозиторий на ceph1ceph-deploy new ceph1 ceph2 ceph3ceph-deploy install ceph1 ceph2 ceph3

Page 22: Хранилище 101

Создание кластера

Репозиторий на ceph1ceph-deploy new ceph1 ceph2 ceph3ceph-deploy install ceph1 ceph2 ceph3ceph-deploy mon create-initial

Page 23: Хранилище 101

Создание кластера

Репозиторий на ceph1ceph-deploy new ceph1 ceph2 ceph3ceph-deploy install ceph1 ceph2 ceph3ceph-deploy mon create-initialceph-deploy admin ceph1 ceph2 ceph3

Page 24: Хранилище 101

Кластер

Создание кластера

ceph1 ceph3ceph2

mon1 mon2 mon3

ceph status

Page 25: Хранилище 101

Хранилище

ssh ceph# mkdir /opt/osd#

Page 26: Хранилище 101

Хранилище

ssh ceph# mkdir /opt/osd#ceph-deploy osd prepare ceph#:/path

Page 27: Хранилище 101

Хранилище

ssh ceph# mkdir /opt/osd#ceph-deploy osd prepare ceph#:/pathceph-deploy osd activate ceph#:/path

Page 28: Хранилище 101

Хранилище

ceph1 ceph3ceph2

mon1 mon2 mon3

osd.0 osd.1 osd.2

ceph osd tree

Page 29: Хранилище 101

Метаданные

ceph-deploy mds create ceph1

ceph1

mon1

osd.0

mds

Page 30: Хранилище 101

Где же S3?

Page 31: Хранилище 101

Rados GW

ceph1 ceph3ceph2

mon1 mon2 mon3

osd.0 osd.1 osd.2

mds

RGW1 RGW2 RGW3

Page 32: Хранилище 101

Шлюзceph-deploy rgw create ceph1 ceph2 ceph3

Page 33: Хранилище 101

Шлюзceph-deploy rgw create ceph1 ceph2 ceph3 настраиваем apache && mod_fastcgi

Page 34: Хранилище 101

Шлюзceph-deploy rgw create ceph1 ceph2 ceph3 настраиваем apache && mod_fastcgi создаем ключи для каждого шлюза

Page 35: Хранилище 101

Шлюзceph-deploy rgw create ceph1 ceph2 ceph3 настраиваем apache && mod_fastcgi создаем ключи для каждого шлюза создаем директорию для файлов шлюза

Page 36: Хранилище 101

Шлюзceph-deploy rgw create ceph1 ceph2 ceph3 настраиваем apache && mod_fastcgi создаем ключи для каждого шлюза создаем директорию для файлов шлюза #!/bin/shexec /usr/bin/radosgw -c /etc/ceph/ceph.conf \-n client.radosgw.gateway1

Page 37: Хранилище 101

Настройка[client.radosgw.gateway1]

rgw_enable_ops_log = false rgw_print_continue = false rgw_dns_name = s3.example.com rgw_enable_usage_log = false host = ceph1 log_to_stderr = false keyring = /etc/ceph/ceph.client.radosgw.keyring log_file = /var/log/ceph/radosgw.log rgw_socket_path = /var/run/ceph.rgw.gw1.sock

Page 38: Хранилище 101

Управляем

Page 39: Хранилище 101

Новый пользователь S3

radosgw-admin user create \ —uid=root \ —display-name='Administrator' \ —[email protected]

Page 40: Хранилище 101

Новый пользователь Swift

radosgw-admin subuser create \ —uid=root \ —subuser=admin:swift \ —access=full \ —key-type=swift \ —gen-secret

Page 41: Хранилище 101

Права администратораradosgw-admin caps add \ —uid=root \ —caps="users=*" radosgw-admin caps add \ —uid=root \ —caps="metadata=*"

Page 42: Хранилище 101

Проблемы?

Page 43: Хранилище 101

Упала реплика?

ceph statusподнимаемнаслаждаемся перебалансировкой

Page 44: Хранилище 101

Упал монитор?

ceph status поднимаем если потеряна карта - импортируем с работающего наслаждаемся перебалансировкой

Page 45: Хранилище 101

Потеряли ключи?

ceph statusсоздаем новые ключидля osd/монитора/rgwнаслаждаемся перебалансировкой

Page 46: Хранилище 101

S3 API

Page 47: Хранилище 101

S3 API

полная поддержка AWS клиентов(с точностью до имен параметров)

Page 48: Хранилище 101

Наблюдаем

Page 49: Хранилище 101

? ? ?Crapworks

Dashboards

Calamari Krakendash

Page 50: Хранилище 101

Calamari

Официальная

Много внимания работе кластера

Нет управления S3

Сложна для изменения

Page 51: Хранилище 101

Crapworks

Python/Flask

Легкая

Использует librados напрямую

Page 52: Хранилище 101

Krakendash

Python/Django

Легкая

Использует S3 API

Page 53: Хранилище 101

Krakendash возможности

•Мониторинг свободного места

• Состояния кластера

• Текущие операции кластера

Page 54: Хранилище 101

Нужно для S3

• Занятое место по пользователям

S3

• Состояние RGW серверов

• Управление пользователями

Page 55: Хранилище 101

Krakendash + S3

• Рисуем диаграмму для каждого пользователя и

бакета

• Проверяем доступность rgw по локальным именам

• Добавляем создание и изменение пользователей

S3 и Swift

• Всю нагрузку убираем в Graphite

Page 56: Хранилище 101

Krakendash + S3

GitHub m-messiah / krakendash

Page 57: Хранилище 101

Krakendash + S3 + Service

m-messiah / krakendash

Page 58: Хранилище 101

Используем

Page 59: Хранилище 101

Обработка документов

Page 60: Хранилище 101

Обработка документов

S3 S3

Page 61: Хранилище 101

Общие файлы сайтов

www1 www2 www3

css/js log upload backup other

Page 62: Хранилище 101

Общие файлы сайтов

www1 www2 www3

\\web\files ?

Page 63: Хранилище 101

Общие файлы сайтов

www1 www2 www3

s3.example.com

Page 64: Хранилище 101

Upload

StorageSFTP

FTP SMTP

Page 65: Хранилище 101

Upload

SwFTPSFTP

FTP SMTP

github/ softlayer / swftp

S3

Page 66: Хранилище 101

Максим Музафаров[email protected]

ВОПРОСЫ?

www.kontur.ru