Через тернии к Сeph
Уход иностранных компаний с отечественного рынка не пощадил и сферу информационных технологий. Если «Макдональдс» просто сменил название на «Вкусно - и точка», то в сфере программного и аппаратного обеспечения всё гораздо сложнее. Перед многими компаниями встал вопрос: как дальше хранить растущий массив информации. И тут все вспомнили про SDS. Что это такое?
Software-defined storage - это группа программного обеспечения, позволяющая построить хранилище на базе локальных дисков стандартных серверов.
Одним из самых интересных SDS считается свободное программное обеспечение - Ceph. В статье я расскажу вам историю одного из успешных проектов её внедрения.
Все дороги ведут к Ceph
Когда-то я работал в подразделении крупной ИТ-организации. Компания предоставляла услуги централизованной ИТ-инфраструктуры. Её база была достаточно классической: несколько ферм виртуализации с классическими системами хранения данных (СХД) больших вендеров под ногами.
С увеличением информационных систем росли не только объёмы данных, но и узлы скопления информации. В то время как другие подразделения доверяли свои данные виртуальным машинам, мы поступили иначе. Мы закупили классические СХД с модулями файлового доступа для централизованных систем, которые мы обслуживаем. Такие СХД мало того, что были дорогими, так ещё и потеряли актуальность в связи с ростом объёмов и нагрузок.
Наша цель была по максимуму использовать отечественные разработки и ПО с открытым исходным кодом. В тот момент российский производитель предложил нам протестировать свой продукт. Это был SDS, который мог предоставлять доступ к распределённой файловой системе по протоколу NFS. Также продукт давал доступ к объектному хранилищу S3 и выступал в качестве блочного хранилища с возможностью экспортировать тома по iSCSI.
На фоне переоснащения одного из проектов у нас высвободились некоторые сервера. Идея превратить их в дешёвое хранилище показалась удачной. Мы запустили тестирование софта. Возникающие при этом проблемы начали постепенно убивать наш позитивный настрой. Вишенкой на торте стала, мягко говоря, низкая производительность конструкции.
Тогда я уже немного почитал про SDS и понял, что по функционалу наиболее близким аналогом является Ceph. Я собрал тестовый стенд на Ceph.
Неожиданно Ceph превзошёл отечественный аналог по всем фронтам, притом на меньшем количестве оборудования! С этого и началась история его внедрения в нашу компанию.
Как всё проектировалось
Когда мы начали внедрять Ceph, в нашей организации были два полноценных центра обработки данных (ЦОД). Для надёжности большинство сервисов проектировалось с учётом требований работы одновременно на двух площадках. Новое хранилище должно было предоставлять сервис для хранения данных системам, спроектированным на случай отказа одного из центра обработки данных. В связи с этим СХД тоже должна была пережить отказ площадки.
Больше всего нас интересовала распределённая файловая система. Репликация через два независимых кластера для неё на тот момент была недоступна. Из-за этого появились ограничения в конечном дизайне. В результате мы решили делать растянутый на два ЦОДа кластер. Нам повезло, что сеть это позволяла.
Для сохранности данных мы выбрали фактор репликации 4 с минимальным размером 2. То есть если количество реплик станет меньше двух, то кластер остановит работу. Мы задали логику так, чтобы при записи в каждый ЦОД создавались по две копии. А если одна из площадок выйдет из строя, то система продолжит работать на двух репликах. При этом после её возвращения в ЦОД докатываются изменения.
Для первой версии системы мы взяли 12 серверов на каждую площадку. Наша конфигурация дала нам примерно 750 TB полезного пространства. Конфигурация серверов была примерно такой:
- 2 x cpu Intel Xeon e5-2640 v3
- 32G RAM
- 8 x HDD 4T 7200
- 4 x 1G Network
Мы решили использовать физические узлы только для хранения данных, а все служебные компоненты размещать в виртуальных машинах на продуктивных фермах виртуализации. На место DVD-привода мы подключили маленькие харды под операционную систему. Сетевые интерфейсы собрали в два агрегата. Первый предназначен для публичной сети, второй - для кластерной.
Запускайте бычка
Пусконаладочные работы заняли около месяца. Это не много для такого проекта. И вот мы наконец-то собрали кластер, который удовлетворяет всем нашим требованиям. Тестирование вышло не долгим так, как файловая СХД уже не вытягивала, мы начали синхронизировать данные почтовой системы, в которую входят десятки тысяч ящиков в формате mailbox. В это время мы выявили и исправили ряд багов, вызванных проблемами конфигурации. Так мы понемногу начали привыкать к Сeph.
Перенос почтовых данных занял около месяца. Самым проблемным местом оказался не Сeph, а файловая СХД. Так как файлер создавал много проблем, мы переключили почтовую систему практически сразу после полной синхронизации.
Первый крупный сбой
В целом переключение прошло успешно. Почтовая система стала работать стабильнее, и мы начали завозить туда новые сервисы. Спустя месяц в кластер начал заезжать первый сервис, который смог переписаться с файловой системы на объектное хранилище S3.
И тут классическая драма: через пару месяцев Сeph перестал работать. Несколько дисков неожиданно заполнились на 95%, и кластер перешёл в состояние full, что переводится как «полный». Система перешла в режим readonly, то есть «только для чтения». Для нас это было равносильно её остановке.
Это была не первая «поломка». Однако предыдущие аварии не приводили к длительным отказам, и в основном система преодолевала их самостоятельно. В этот раз сбой продлился несколько часов. Мы не понимали почему диски, заполненные на 80%, неожиданно становились переполнены, поэтому поиск безопасного решения занял больше времени, чем обычно.
Что повлияло на аварию:
- неоптимальная конфигурация;
- неоптимальное распределение данных;
- увеличение прироста данных в связи с большим количеством заводимых систем;
- игнорирование ограничителей переполнения при резервировании пространства для переноса данных с одного диска на другой;
- выход одного сервера.
Вероятно, без любого из этих факторов авария бы не случилась. Затруднил ситуацию и недостаток опыта, в следствии чего специалисты вовремя не заметили проблему, и потратили много времени на траблшутинг и устранение сбоя. В тот момент мы поняли, что систему нужно срочно модернизировать.
Первый апгрейд
За время эксплуатации продукта мы выявили слабые места этой конфигурации. Проведя дополнительный анализ, мы решили выполнить апгрейд не только жёстких дисков, но также докинуть оперативной памяти, увеличить сеть и добавить NVMe-накопители. Сложная процедура закупки требовала много времени, и нам пришлось на время перестать выделять объёмы новым системам и приостановить перенос тех, которые не успели доехать. Несколько месяцев ушло на закупку. Ещё столько же понадобилось на пе- резаливку узлов, так как менялась их конфигурация приходилось накатывать каждый узел с нуля.
Осложняла всё частичная ребалансировка данных в кластере, которая возникает при вводе нового узла. Чтобы уменьшить негативное воздействие на потребителей, перезаливку приходилось делать ночью и не более двух узлов за раз. Это была не последняя перезаливка кластера. После неё таких процедур понадобилось довольно много. Через 4-5 месяцев кластер увеличился до 2.4 ПБ, и мы возобновили выделение ресурсов и перевод систем.
Спустя время мы обновили программное обеспечение, переехав с ветки mimic на ветку nautilus. В «наутилусе» добавили предупреждение, что база данных OSD вылезает с быстрых дисков на медленные. Это привело к необходимости реконфигурации узлов хранения и к ещё одной перезаливке всех узлов кластера.
Всего за несколько лет работы кластер прошёл примерно 5-6 расширений и вырос до объёма в 9 ПБ, а до конца лета запланировано ещё одно расширение до 12 ПБ.
Сеть имеет значение
Серh работает по сети и очень сильно зависит от её качества. Однажды в разгар рабочего дня он у нас отвалился, и все зависимые системы встали. Это была очередная серьёзная авария. Мониторинг показывал, что у нас упали примерно 15% OSD, и количество падений продолжало расти. В логах было видно, что OSD отстреливают друг друга по таймауту. Однако все узлы были доступны и с них удавалось пингануть соседние хосты. Мы не сразу поняли, что OSD из одного ЦОДа помечают OSD из другого, как мёртвые. Ещё какое-то время нам понадобилось, чтобы локализовать и устранить проблему. Виной всему был роутинг, который поломался между ЦОДами в приватном сегменте. Вследствие этого 80% демонов хранения упали. Ожидание подъёма системы было для нас настоящим испытанием, так как мы не тестировали такую ситуацию.
Какие перспективы у Ceph?
Ceph позволяет построить систему хранения практически под любые задачи. При правильном подходе к проектированию система способна пережить практически любые сбои, за исключением необдуманных действий персонала. В реалиях секционных ограничений система хранения данных на базе Сeph позволяет не только удовлетворять текущие потребности, но и планировать рост. Это впечатляет, ведь на рынке классических систем хранения данных всё достаточно грустно. Мы не собираемся останавливаться на достигнутом и продолжаем наращивать мощности, а также проектируем новые кластеры для внедрения.
Казанский Александр
Head of SRE, более 20 лет в ИТ, большая экспертиза в создании больших ИТ инфраструктур высокой критичности.
ceph.expert
