, Полное руководство Ceph

Полное руководство Ceph

Ник Фиск

 

{Прим. пер.: рекомендуем сразу обращаться к нашему переводу 2 издания вышедшего в феврале 2019 Полного руководства Ceph Ника Фиска}

Первая публикация на английском языке: Май 2017

Ссылка на продукт: 1220217

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

При подготовке этой книги были предприняты все усилия чтобы гарантировать точность представленной информации. Тем не менее, информация, содержащаяся в этой книге, продаётся без гарантии в явном или неявном виде. Ни авторы, ни Packt Publishing, ни их дилеры и дистрибьюторы не будут нести ответственность за любые убытки, вызванные или предположительно вызванные прямо или косвенно этой книгой.

Packt Publishing пыталась предоставить информацию о товарных знаках обо всех компаниях и продуктов, упомянутых в данной книге для надлежащего использования капиталов. Тем не менее, Packt Publishing не может гарантировать точность этой информации.

Опубликовано Packt Publishing Ltd.

Livery Place

35 Livery Street

Birmingham B3 2PB, UK

ISBN-13 978-1-78588-894-6

www.packtpub.com

2017-06-04

 Состав исполнителей

Авторы
Ник Фиск
Рецензент
Редактор выпуска
Картикей Пандей
Редактор
Манси Сангхави
Редактор разработки содержания
Радхика Атиткар
Технические редакторы
Девеш Чагх
Бхагьяшри Рей
Литературный редактор
Том Джейкоб
Координатор проекта
Кинджал Бейри
Корректор
Safis editing
Составитель указателя
Мариаммал Четьяр
Графика
Кирк Д'Пенья
Координатор производства
Апрна Бхагат

 Об авторах

Ник Фиск .

 Рецензент

.

 www.PacktPub.com

 Содержание

Предисловие
Что охватывает эта книга
Что вам нужно для этой книги
Для кого эта книга
Соглашения
Обратная связь с читателями
Поддержка пользователей
Загрузка кодов примеров
Опечатки
Незаконное тиражирование
Вопросы
Глава 1. Планирование Ceph
Что такое Ceph?
Как работает Ceph?
Варианты применения Ceph
Замена вашего массива хранения на Ceph
Производительность
Надёжность
Использование общедоступного оборудования
Особые случаи применения
Виртуализация на основе OpenStack или KVM
Большая куча блочных хранилищ
Объектное хранилище
Объектное хранилище применяемое для индивидуальных приложений
Распределённые файловые системы - веб ферма
Распределённые файловые системы - замена файлового сервера SMB
Проектирование инфраструктуры
SSD
Бытовые
Для продвинутых
SSD корпоративного уровня
Корпоративные - для интенсивного чтения
Корпоративные - для обычного применения
Корпоративные - для интенсивной записи
Оперативная память
ЦПУ
Диски
Сетевая среда
Необходимость сети 10G
Проектирование сетевой среды
Размеры узла OSD
Области отработки отказа
Стоимость
Энергоснабжение
Как спланировать успешную реализацию Ceph
Осознание ваших требований и того как они относятся к Ceph
Определение целей с тем, чтобы вы могли калибровать его как успешный проект
Выбор вашего оборудования
Подготовка себя и своей команды к применению Ceph
Исполнение PoC для определения того, отвечает ли Ceph поставленным целям
Применение практического опыта для развёртывания вашего кластера
Определение процесса изменения управления
Создания плана резервного копирования и восстановления
Выводы
Глава 2. Развёртывание Ceph
Подготовка вашего окружения при помощи Vagrant и VirtualBox
Требования системы
Получение и установка Virtualbox
Установка Vagrant
Инструмент ceph-deploy
Координация
Ansible
Установка Ansible
Создание вашего файла учёта ресурсов
Переменные
Тестирование
Очень простой план
Добавление модулей Ansible Ceph
Развёртывание проверочного кластера при помощи Ansible
Изменение и настройка управления
Выводы
Глава 3. BlueStore
Что такое BlueStore?
Зачем оно?
Требования Ceph
Ограничения файлового хранения
Почему BlueStore является решением?
Как работает BlueStore
RocksDB
Отложенная запись
BlueFS
Как применять BlueStore
Обновление OSD в вашем кластере
Выводы
Глава 4. Удаляющее кодирование для лучшей эффективности хранения
Что такое удаляющее кодирование?
K+M
Как работает удаляющее кодирование в Ceph?
Алгоритмы и профили
Jerasure
ISA
LRC
SHEC {и далее}
Где я могу применять удаляющее кодирование?
Создание пула удаляющего кодирования
Запись поверх пулов удалённого кодирования при помощи Kraken
Демонстрация
Поиск неисправностей для ошибки 2147483647
Воспроизводство данной проблемы
Выводы
Глава 5. Разработка при помощи librados
Что такое librados?
Как применять librados?
Пример приложения librados
Пример приложения librados с атомарными операциями
Пример приложения librados, которое использует наблюдателей и уведомителей
Выводы
Глава 6. Распределённые вычисления при помощи классов RADOS Ceph
Примеры приложений и преимущества использования классов RADOS
Написание примера класса RADOS в Lua
Написание класса RADOS, который эмулирует распределённые вычисления
Подготовка к построению среды
Класс RADOS
Клиентские приложения librados
Вычисление MD5 в самом клиенте
Вычисление MD5 в OSD через класс RADOS
Проверка
Возражения против класса RADOS
Выводы
Глава 7. Мониторинг Ceph
В чём заключается важность мониторинга Ceph
Что подлежит мониторингу
Состояние Ceph
Операционная система и оборудование
Интеллектуальная статистика
Сетевая среда
Счётчики производительности
Состояния PG - хорошо, плохо и опасно
Хорошо
Активное состояние
Чистое состояние
Очистка и глубокая чистка
Плохо
Несогласованное состояние
Состояния заполнения, ожидания заполнения, восстановления, ожидания восстановления
Состояние деградации
Пересоставление карты
Опасно
Незавершённое состояние
Состояние останова
Состояние чрезмерной заполненности
Мониторинг Ceph при помощи collectd
Graphite
Grafana
collectd
Развёртывание collectd при помощи Ansible
Простые запросы Graphite для Ceph
Число OSD Up и In
Отображение наиболее отклоняющихся от нормы OSD
Общее число IOP по всем OSD
Общее значение MBps по всем OSD
Ёмкость и использованность кластера
Среднее значение латентности
Индивидуальные подключаемые модули collectd Ceph
Выводы
Глава 8. Множество уровней в Ceph
Сопоставление множества уровней и кэширования
Как работает многоуровневость Ceph
Что из себя представляет фильтр bloom
Режимы многоуровневости
Отложенная запись
Упреждение
Упреждающее чтение
Посредничество
Посредническое чтение
Варианты применения
Создание уровней в Ceph
Тонкая настройка уровней
Сброс и вытеснение
Представления
Дросселирование представлений
Наблюдаемые параметры
Многоуровневость с пулами удаляющего кодирования
Альтернативные механизмы кэширования
Выводы
Глава 9. Тонкая настройка Ceph
Латентность
Эталонное тестирование
Инструменты эталонного тестирования
Fio
Sysbench
Ping
iPerf
Сетевое эталонное тестирование
Эталонное тестирование дисков
Эталонное тестирование RADOS
Эталонное тестирование RBD
Рекомендуемые регулировки
ЦПУ
Файловое хранилище
Загруженность кэша VFS
WBThrottle и/или nr_requests
Дросселирование очереди файлового хранилища
filestore_queue_low_threshhold
filestore_queue_high_threshhold
filestore_expected_throughput_ops
filestore_queue_high_delay_multiple
filestore_queue_max_delay_multiple
Расщепление PG
Очистка
Приоритеты OP
Сетевая среда
Общая настройка системы
Ядро RBD
Глубина очереди
Упреждающее чтение
Распространение PG
Выводы
Глава 10. Поиск неисправностей
Восстановление несогласованных объектов
Заполненные OSD
Ведение журналов OSD
Малая производительность
Причины
Возросшая рабочая нагрузка клиентов
Останов OSD
Восстановление и наполнение
Очистка
Подрезка снимков
Проблемы с оборудованием или драйверами
Наблюдение
iostat
htop
atop
Диагностика
Очень низкая производительность или отсутствие ввода/ вывода
Биения OSD
Кадры Jumbo
Начинающие отказывать диски
Медленные OSD
Расследование PG в состоянии down
Большие базы данных монитора
Выводы
Глава 11. Восстановление после сбоев
Что из себя представляет катастрофа?
Как избежать потери данных
Что может повлечь вывод из строя или утрату данных?
Зеркалирование RBD
Журнал
Демон rbd-mirror
Настройка зеркалирования RBD
Отработка восстановления RBD
Восстановление RBD
Утраченные объекты и неактивные PG
Восстановление при полном отказе монитора
Применение инструмента хранения объекта Ceph
Внесение утверждений
Пример утверждения
Выводы
Приложение A: Ceph поверх RDMA
Настройка RDMA Ceph
Ссылки
Предварительные требования
Создание кластера Ceph
Решения RDMA/ RoCE
Асинхронная система сообщений Ceph
Обзор
Сервер
Инициализация
Привязка и ожидание
Обработка события
Добавление ожидания fd
Приём соединения
Добавление приёма fd
Взаимодействие
Клиент
Выводы
Стек асинхронной системы сообщений Ceph
Введение
Инициализация
Worker
Socket
Ожидание
Соединение
Выводы
Сетевой интерконнект Ангара
Приложение B: Архитектура Ceph
Кластер хранения Ceph
Хранение данных
Масштабирование и высокая доступность
Введение в CRUSH
Карта кластера
Мониторы с высокой доступностью
Аутентификация с высокой доступностью
Разрешение гипермасштабирования интеллектуальных демонов
Динамическое управление кластером
Обзор пулов
Установление соответствия PG для OSD
Одноранговость и множества
Повторная балансировка
Согласованность данных
Удаляющее кодирование
Чтение и запись кодированных фрагментов
Прерванные полные записи
Многоуровневое кэшировние
Расширение Ceph
Выводы
Протокол Ceph
Родной протокол и librados
Поиск/ уведомление объекта
Расщепление данных
Клиенты Ceph
Хранилище объектов Ceph
Блочное устройство Ceph
Файловая система Ceph
Указатель

 Предисловие

.

 Что охватывает эта книга

Глава 1. Планирование Ceph

Глава 2. Развёртывание Ceph

Глава 3. BlueStore

Глава 4. Удаляющее кодирование для лучшей эффективности хранения

Глава 5. Разработка при помощи librados

Глава 6. Распределённые вычисления при помощи классов RADOS Ceph

Глава 7. Мониторинг Ceph

Глава 8. Множество уровней в Ceph

Глава 9. Тонкая настройка Ceph

Глава 10. Поиск неисправностей

Глава 11. Восстановление после сбоев

Приложение A. Ceph поверх RDMA

 Что вам нужно для этой книги

.

 Для кого эта книга

.

 Разделы

.

 Соглашения

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

Кодовые слова в тексте, имена таблиц базы данных, имена папок, имена файлов, расширения файлов, имена путей, модели URL-адресов, ввод пользователя, и регулировки Twitter представлены следующим образом: "Вручную постройте требуемую корневую файловую систему и настройте файлы с применением таких инструментов как debootstrap и yum" на свой сервер Hyper-V, на который вы собираетесь импортировать данную виртуальную машину.

Блок кода записываются следующим образом:


#define _GNU_SOURCE
#include<stdlib.h>
#include<stdio.h>
#include<signal.h>
#include<sched.h>

staticintchildFunc(void *arg)
{
  printf("UID inside the namespace is %ld\n", (long) geteuid());
  printf("GID inside the namespace is %ld\n", (long) getegid());
}
 	   

Когда мы хотим привлечь ваше внимание к некоторой определённой части блока кода, соответствующие строки и элементы выделяются жирным шрифтом:


<head>
#define _GNU_SOURCE
#include
#include
#include
#include

staticintchildFunc(void *arg)
{
  printf("UID inside the namespace is %ld\n", (long) geteuid());
  printf("GID inside the namespace is %ld\n", (long) getegid());
}
 	   

Любой ввод и вывод командной строки записываются так:


root@ubuntu:~# lsb_release -dc
Description:    Ubuntu 14.04.5 LTS
Codename:       trusty
root@ubuntu:~#
 	   

Новые термины и важные слова отображаются жирным шрифтом. Слова, которые вы видите на экране, например, в меню или блоках диалогов появляются в тексте следующим образом: "Переместитесь в Networking support | Networking options | 802.1d Ethernet Bridging и выберите либо Y для компиляции всей функциональности моста в данном ядре, либо M для компиляции его в виде отдельного модуля."

[Замечание]Замечание

Предостережения или важные замечания появляются в блоках подобных этому.

[Предостережение]Предостережение

.

[Совет]Совет

Советы и ловкие приёмы возникают таким образом.

 Обратная связь с читателями

Обращения наших читателей всегда приветствуются. Дайте нам знать что вы думаете об этой книге - что вам нравится или не нравится. Обратная связь с читателями важна нам, так как помогает нам разрабатывать издания, от которых вы на самом деле получите максимальную пользу.

Для отправки обычного отклика просто пошлите электронное письмо на адрес feedback@packtpub.com с упоминанием заголовка книги в теме вашего сообщения.

Если у вас существует тема, в которой у вас имеется опыт и вы заинтересованы либо в написании, либо во вкладе в книгу, обратитесь к руководству по адресу www.packtpub.com/authors.

 Поддержка пользователей

Теперь, когда вы являетесь гордым владельцем книги Packt, у нас есть целый ряд моментов для помощи вам в получении максимальной выгоды от вашей покупки.

 Загрузка примеров кода

Вы можете загрузить файлы примеров кода по адресу из своей учётной записи: http://www.packtpub.com. Если вы приобрели книгу где- либо ещё, вы можете посетить http://www.packtpub.com/support и зарегистрироваться для получения этих файлов по электронной почте непосредственно на свой адрес.

Вы можете загрузить эти файлы с кодом выполнив следующие шаги:

  1. Зарегистрируйтесь на нашем вебсайте при помощи своего адреса электронной почты и пароля.

  2. Переместите указатель мыши на закладку SUPPORT в верхней части.

  3. Кликните по Code Downloads & Errata.

  4. Введите название книги в блок Search.

  5. Выберите книгу для которой вы ищете для загрузки файлы исходного кода.

  6. В ниспадающем меню выберите где вы приобрели эту книгу.

  7. Кликните по Code Download.

Вы также можете загрузить фалы кодов кликнув по кнопке Code Files вебстраницы на вебсайте Packt Publishing. Доступ к данной странице может быть получен путём ввода названия книги в блоке Search. Отметим, что вы должны быть зарегистрированы со своеЙ учётной записью Packt.

После загрузки убедитесь, пожалуйста, что вы раззиповали или раскрыли эту папку при помощи самой последней версии:

  1. WinRAR / 7-Zip для Windows

  2. Zipeg / iZip / UnRarX для Mac

  3. 7-Zip / PeaZip для Linux

Пакет с кодом для данной книги также размещён на GitHub по адресу https://github.com/PacktPublishing/Containerization-with-LXC. У нас также имеются прочие наборы из нашего богатого каталога книг и видео доступные на https://github.com/PacktPublishing/. Следите за ними!

 Загрузка цветных изображений данной книги

Также мы снабжаем вас неким PDF файлом, который имеет цветные изображения применяемых в данной книге снимков экрана/ схем. Эти цветные изображения помогут вам лучше понять все изменения в имеющемся выводе. Вы можете загрузить этот файл с https://www.packtpub.com/sites/default/files/downloads/ContainerizationwithLXC_ColorImages.pdf.

 Опечатки

Хотя мы и предприняли все меры чтобы обеспечить точность нашего содержимого, ошибки всё- таки возможны. Если вы обнаружили ошибку в нашей книге - возможно, ошибку в тексте или в коде - мы будем признательны если вы сообщите об этом нам. Сделав это, вы можете предостеречь остальных читателей от разочарования и помочь нам улучшить последующие версии данной книги. Если вы обнаружили ошибку, пожалуйста, сообщите о ней посетив www.packtpub.com/submit-errata, выбрав вашу книгу, кликнув на ссылку Errata Submission Form, и заполнив подробности найденной вами ошибки. Когда ваша ошибка будет проверена, вы получите уведомление и ошибка будет выложена на наш веб- сайт или добавлена в какой- нибудь перечень существующих ошибок с заголовком раздела Errata.

Для просмотра ранее выявленных ошибок посетите www.packtpub.com/books/content/support и введите название нужной книги в поле поиска. Необходимая информация появится в разделе Errata.

 Незаконное тиражирование

Пиратство, защищённых авторским правом материалов в Интернете является постоянной проблемой во всех средствах массовой информации. В Packt мы подходим к защите наших авторских прав и лицензий очень серьёзно. Если вы столкнётесь с какой-либо незаконной копией наших работ в любой форме в Интернете, пожалуйста, предоставьте нам сразу адрес местонахождения или имя веб-сайта, чтобы мы могли принять меры. {Прим. пер.: Согласно закону об авторском праве РФ, авторские права на перевод принадлежат авторам этого перевода. Данным переводом, по нашему мнению, мы служим популяризации основных стратегических направлений развития тем Packt. В случае наличия конструктивных предложений, готовы к тесному сотрудничеству.}

Пожалуйста, обратитесь по адресу copyright@packtpub.com со ссылкой на материалы содержащие признаки нарушения авторских прав.

Мы выражаем вам признательность в защите наших авторов и нашей возможности доносить до вас имеющего ценность содержимого.

 Вопросы

Если у вас есть проблемы по любым сторонам данной книги, вы можете контактировать с нами по адресу questions@packtpub.com и мы предпримем все меры в отношении ваших проблем.