Налаштування Distributed Storage (Ceph/GlusterFS) для кластерів

Кластер зростає, а дані починають губитися й гальмувати саме тоді, коли навантаження максимальне. Ми налаштовуємо розподілене сховище Ceph під ключ: проєктуємо схему розміщення, розгортаємо та перевіряємо відмовостійкість на реальних сценаріях. У результаті кластер витримує вихід вузла без зупинки сервісів і рівніше тримає піки.
Часті запитання

Чому розподілене сховище Ceph втрачає швидкість і дані

Розподілене сховище Ceph розкладає кожен об'єкт на кілька дисків за картою розміщення, а цілісність тримається на репліках і моніторах кластера.

Поки вузли однорідні й мережа між ними справляється, система працює рівно; щойно одна умова виходить за межі — починається деградація кластера зберігання: спочатку просідання відгуку, потім недоступність частини даних.

Типова причина перша — перекіс розміщення даних. Накопичувачі надходять партіями різного обсягу, вузли вводяться по одному, ваги в карті виставлені «на око», і на одних дисках лежить удвічі більше груп розміщення, ніж на інших.

Перевантажені впираються в межу за операціями, але кластер вважає їх живими — відгук зростає по всьому ланцюжку реплік.

Друга — обладнання та мережа. Повільний диск або перевантажений канал між вузлами перетворюють планову заміну накопичувача на повільне відновлення даних: переміщення реплік триває годинами й забирає пропускну здатність у робочих навантажень.

Без лімітів за швидкістю та пріоритетами фонова перебудова забиває мережу, і кластер переходить у другу хвилю просідання.

Третя — правила відновлення й обслуговування: надто агресивні пороги відмови, відсутність пріоритету для критичних даних, роботи без перевірки, що репліки встигли зійтися. Дані втрачаються не в момент збою, а коли друга відмова лягає на незавершене відновлення.

Далі розбираємо, як це закривається: аудит карти розміщення, вирівнювання ваг, ліміти фонових операцій і регламент, за якого заміна диска не перетворюється на аварію.

Що дає налаштоване сховище: швидкість і відмовостійкість

Розподілене сховище Ceph об'єднує диски всіх вузлів у єдиний пул, тому операції читання та запису розподіляються між кількома машинами.

Час відгуку під навантаженням перестає залежати від одного масиву: зі зростанням кількості одночасних звернень він збільшується плавно, а не ступенями, коли всі запити впираються в перевантажений диск.

Відмовостійкість сховища будується на реплікації: копії блоків розміщуються на різних вузлах і в різних стійках, тому вихід з ладу диска або цілого сервера не перериває доступність даних.

Відновлення запускається автоматично й іде у фоні, не витісняючи робоче навантаження, — час відновлення кластера вимірюється хвилинами, а не нічним вікном простою.

Із переліку відмов зникають цілі класи: переповнення одного тому, деградація масиву під час перебудови, ручне перенесення даних під час заміни сервера.

Зниження простою помітне в роботі — сервіс продовжує відповідати, поки вузол, що вийшов з ладу, замінюють, а планове обслуговування користувачі взагалі не помічають.

Ефект ми вимірюємо, а не описуємо словами: знімаємо метрики до й після — затримку операцій, частку повільних відповідей, час відновлення після примусової відмови вузла.

Навантажувальні сценарії повторюють реальний профіль звернень, тому продуктивність сховища оцінюється на бойових даних, а не на синтетиці.

Варіанти розміщення даних: реплікація, коди надлишковості, гібрид

Режим зберігання вибирають за профілем навантаження та ціною помилки, а не за «швидкістю взагалі». Реплікація тримає кілька повних копій об'єкта: запис підтверджується після фіксації на різних вузлах, читання йде з будь-якої копії, відновлення — простим копіюванням.

Коди надлишковості ділять об'єкт на фрагменти даних і перевірні блоки: корисної ємності більше, але кожен запит збирається з кількох вузлів.

Варіант Коли підходить Обмеження
Реплікація, 2–3 копії Бази даних, віртуальні машини, черги: часте перезаписування та жорсткі вимоги до затримки Корисна ємність падає до третини, відновлення копіює об'єкт цілком
Коди надлишковості, схема виду 4+2 Архіви, резервні копії, медіа, рідко читані дані Затримка на дрібних операціях, складання та відновлення потребують обміну між вузлами
Гібрид Метадані та «гарячі» томи — на реплікації, холодні дані — на кодах Два профілі обслуговування: окремі правила розміщення та окремий моніторинг

Рівень надлишковості задають домени відмови: три копії в одній стійці не рятують у разі відмови стійки, тому правила розміщення розносять фрагменти по серверах і зонах.

У Ceph це задається правилами розміщення на рівні пулів — один кластер обслуговує і репліковані, і кодовані пули.

Орієнтир під час вибору режиму зберігання: спочатку зафіксувати допустиму затримку та профіль операцій, потім порахувати корисну ємність і час відновлення, і тільки потім задавати схему розміщення даних.

Вибір перевіряємо замірами на пілотному пулі — синтетика майже завжди розходиться з реальним профілем.

Порядок робіт: аудит кластера, схема, налаштування, перевірка, передача

Впровадження розподіленого сховища починається не зі встановлення, а з інвентаризації: аудит кластера зберігання показує реальну топологію — вузли, диски, мережу між стійками.

Без цих даних схема ламається на першій же відмові, тому робота йде етапами з перевірним результатом на кожному.

  1. Аудит кластера зберігання. Знімаємо топологію, стан дисків і лінків, заміряємо затримки на запис, позначаємо єдині точки відмови.
  2. Схема розміщення даних. Кількість копій, пули та правила розміщення по стійках і зонах: втрата вузла або стійки не повинна призводити до втрати даних.
  3. Підготовка вузлів зберігання. Розмітка дисків, розділення журналів і даних, окремий сегмент мережі під реплікацію — синхронізація не з'їдає клієнтський доступ.
  4. Налаштування розподіленого сховища. Розгортаємо кластер, піднімаємо керуючі вузли, задаємо політики відновлення та квоти, підключаємо клієнтів.
  5. Перевірка відмовостійкості. Вимикаємо диск, вузол і сегмент мережі, заміряємо час відновлення та стежимо, що застосунки зберігають доступ.
  6. Передача в експлуатацію. Схема, конфігурації, регламенти обслуговування, дашборди та алерти, навчання чергової зміни діям у разі відмови.

Політики доступу, схеми та регламенти: що залишається у замовника

Кластер передається не «працюючим сервером», а керованою системою: після здачі ваші інженери можуть змінювати пули, додавати вузли та розбирати інциденти, не звертаючись до нас за кожною правкою. Тому фінальний етап — це не запуск, а пакет артефактів, за якими кластер живе далі.

  • Топологія та схеми розміщення. Карта вузлів, дисків і зон, розподіл пулів за класами навантаження, кількість реплік на кожен пул і явні домени відмови — видно, яку стійку або зону втрата кластер переживає без зупинки.
  • Політики доступу до сховища. Хто й через що підключається: окремі ключі на сервіс, а не спільний, обмеження за пулами та правами на читання/запис, строк життя облікових даних і порядок їх ротації.
  • Розмежування ролей. Три рівні — адміністратор кластера, чергова зміна та власник сервісу; у кожного свій набір операцій, руйнівні дії потребують підтвердження та потрапляють у журнал.
  • Схема відмовостійкості. Що відбувається в разі відмови диска, вузла та цілої зони: скільки реплік залишається доступно, як запускається відновлення, за якого дефіциту місць кластер переходить у захисний режим.
  • Регламент обслуговування сховища. Планові вікна, порядок заміни дисків і виведення вузла без втрати даних, правила оновлення компонентів, перевірка цілісності та контроль зростання зайнятості.
  • Документація щодо кластера. Інструкції з типових операцій, карта залежностей між сервісами та пулами, порядок дій у разі деградації та правила ескалації.
  • Моніторинг і оповіщення. Порогові значення за затримками, заповненням і станом вузлів, маршрути сповіщень черговим, окремо — сигнали про повільне відновлення.
  • План перевірки та відновлення. Як відновлюється доступ після збою, де лежать резервні копії метаданих і конфігурацій, які перевірки проходять регулярно та що фіксується за підсумками.

Кейс: як кластер вийшов із деградації під час зростання навантаження

Початковий стан

Кластер Ceph розширювався разом із продуктом: диски додавали в міру заповнення, правило розміщення тримали в три репліки з рівною вагою вузлів, а відновлення після заміни диска йшло без обмеження смуги.

На піковому навантаженні черга відновлення перетиналася з клієнтським трафіком — час запису зростав разом із нею, а частка розміщень у стані відновлення трималася годинами. Деградація була не апаратною: кластер не встигав наздоганяти власне зростання.

Що змінили в схемі розміщення та правилах відновлення

Вузли розмітили за класами відмовостійкості та винесли журнал на окремі диски, щоб потік запису не конкурував із відновленням.

Правило розміщення прив'язали до класу відмовостійкості замість переліку вузлів, а смугу відновлення обмежили так, щоб клієнтський трафік завжди мав пріоритет. Перед змінами зняли метрики кластера до й після за кожним кроком, щоб бачити ефект окремо від зростання навантаження.

Показник До Після
Відновлення після заміни диска близько 18 годин 2–3 години
Частка розміщень у відновленні трималася годинами норма за хвилини
Затримка запису на піку зростала разом із чергою стабільна за того самого трафіку
Додавання вузла з перебудовою схеми без зупинки сервісів

Запас за смугою відновлення та зрозуміла схема розміщення повернули кластер у роботу за навантаження, яке до цього вело його в деградацію. Розширення тепер планується за метриками, а не за фактом заповнення дисків — нові вузли вводяться у схему без простою.

Чим Ceph відрізняється від класичного мережевого сховища

Класичний мережевий масив — це контролери та полиці з дисками, які віддають томи мережею. Масштабується він вертикально: додати полицю, замінити контролер на старшу модель, розширити пул.

Ємність при цьому зростає, а от сумарна продуктивність і кількість операцій за секунду впираються в контролер — і перебудова накопичувачів під час заміни диска помітно б'є по затримках.

Розподілене сховище влаштоване інакше: кожен вузол одночасно зберігає дані та обслуговує запити, а розкладку об'єктів по дисках обчислює алгоритм, а не прошивка контролера.

Тому тут працює горизонтальне розширення: додали вузол — зросли і ємність, і продуктивність усієї системи, без простою та міграції томів. Копії розміщуються на різних вузлах і в різних стійках, тож вихід з ладу сервера або полиці не зупиняє запис.

Зворотний бік — трафік. Реплікація та відновлення йдуть тією ж мережею, що й клієнтські запити, тому якість зв'язку між вузлами стає критичною, а експлуатація потребує моніторингу заповнення дисків, стану копій і швидкості самовідновлення.

Звичний мережевий масив виграє там, де обсяг передбачуваний, навантаження не зростає кратно, а вузлів віртуалізації небагато.

Розподілена модель виправдана за швидкого зростання даних, вимоги переживати відмову вузла без ручного втручання та необхідності віддавати сховище і блоками, і об'єктами одним пулом.

Вибір архітектури зберігання — це не питання «що сучасніше». Рахуємо профіль навантаження, допустиму затримку, кількість дрібних операцій, готовність команди супроводжувати таку систему.

Якщо розподілена модель дає надлишковість там, де вона не потрібна, ви платите складністю ні за що — і навпаки.

Технічні сумніви: відмовостійкість, міграція, сумісність

Сумніви технічного замовника на цьому етапі не про встановлення, а про поведінку системи в аварії та під час переїзду. Розбираємо чотири питання, які найчастіше виникають під час вибору розподіленого сховища Ceph.

Що станеться в разі відмови вузла зберігання?

Кластер тримає кілька копій кожного об'єкта на різних серверах і в разі втрати вузла відновлює репліки з уцілілих — читання та запис продовжуються. Ключове — правила розміщення за доменом відмови: стійка, хост, диск. Тоді втрата цілої стійки не зупиняє дані, а перебудова йде у фоні та не блокує навантаження.

Чи можна переїхати без зупинки сервісів?

Переїзд відбувається під час роботи сервісів: спочатку піднімаємо нові вузли, даємо кластеру вирівняти розміщення, потім виводимо старі з поступовим зниженням ваги. Простій не потрібен, поки мережа встигає наздоганяти запис.

Хід міграції контролюємо за кількістю незавершених переміщень — якщо воно не зростає, вікно залишається керованим.

Чи стане це на поточне обладнання?

Звичайні сервери з локальними дисками — окремий дорогий клас заліза не потрібен. Змішаний парк допустимий, але диски та вузли вирівнюються за вагою, інакше швидкі машини забирають непропорційну частку даних. Єдине, на чому не варто економити, — зв'язок між серверами.

Як відстежувати стан і чи потрібні резервні копії?

Спостерігаємо частку розміщених груп, незавершені переміщення та затримки — алерти надходять раніше, ніж деградація стане помітною користувачу.

Резервні копії це не скасовує: знімки пулів захищають від збою носія, але не від помилкового видалення, тому копії виводимо на незалежний контур.

Обговоримо задачу: підберемо режим зберігання під ваш кластер

Оцінка впровадження сховища починається не з вибору технології, а з ваших вхідних даних: чим точніше описано профіль навантаження, тим менше припущень у плані робіт по кластеру. Зберіть те, що вже є під рукою, — цього достатньо для першого розрахунку.

  • кількість вузлів і дисків, їхній тип і спосіб підключення до сервера;
  • профіль навантаження: частка читання та запису, середній і максимальний розмір об'єкта, вимоги до затримки відгуку;
  • корисний обсяг зараз і прогноз зростання на рік уперед;
  • допустимий простій і допустима втрата даних — за який час відновлюємося і на яку точку відкочуємося;
  • що вже використовується: файлова система, томи, точки монтування, список споживачів;
  • обмеження майданчика: кількість стійок, мережа між вузлами, резервування живлення;
  • якщо розподілене сховище Ceph уже розгорнуто — вивантаження метрик і поточні правила розміщення даних.

Далі — розбір задачі зі зберігання: консультація інженера зі зберігання разом із вашою командою експлуатації, зазвичай один дзвінок.

Дивимося, де вузьке місце: диск, мережа, розмір пулу чи сам профіль навантаження, і перевіряємо, які режими надлишковості взагалі застосовні до ваших даних.

За підсумками повертаємося з підбором рішення та планом робіт по кластеру: рівень надлишковості та клас дисків, схема розміщення, етапи з точками перевірки, поведінка в разі відмови вузла. Опишіть задачу — повернемося з оцінкою та планом.

Наші компетенції:

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1393
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1368
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    815
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1139