Налаштування Object Storage Cross-Region Replication (CRR)

Один регіон — єдина точка відмови: збій зони або помилкове видалення забирає дані, на яких тримається продукт. Ми налаштовуємо cross-region replication під ключ: проєктуємо топологію, автоматизуємо правила синхронізації та передаємо регламенти супроводу. Об'єкти залишаються доступними для читання й запису, навіть коли регіон недоступний.
Часті запитання

Що ламається без cross-region replication

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

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

Друга половина проблеми — якість копій у резервному регіоні.

Cross-region replication увімкнено, але лаг між записом і появою об’єкта в іншому регіоні вимірюється годинами, частину бакетів додано пізніше і вони не потрапили в правила, а життєві цикли забрали нерепліковане в холодний архів.

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

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

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

Що дає відмовостійке зберігання об’єктів

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

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

Перемикання на резервний регіон за відпрацьованим сценарієм займає десятки хвилин замість годин відновлення з офлайн-копій.

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

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

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

Це принципово, бо тихо пошкоджений об’єкт небезпечніший за відсутній — застосунок читає його як валідний і віддає користувачеві.

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

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

Варіанти синхронізації між регіонами

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

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

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

Варіант Коли підходить Обмеження
Асинхронна синхронізація Основний обсяг даних, великі об’єкти, припустиме відставання копії Копія з’являється із затримкою; при відмові джерела можлива втрата останніх записів
Синхронний запис у два регіони Критичні префікси, де копія потрібна в момент запису Зростає час відповіді, відмова цільового регіону блокує операції
Ланцюжок регіонів Георозподілена доставка, коли прямий перенос дорожчий за каналом Затримка сумується за ланкою, розрив середнього вузла зупиняє весь потік, діагностика складніша
Вибіркова синхронізація префіксів Частина даних не повинна залишати регіон Кожне нове правило потрібно підтримувати — пропущений префікс залишається без копії

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

Порядок впровадження: від аудиту до передачі

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

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

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

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

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

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

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

  7. Передача в експлуатацію. Документуємо схему, ролі та регламент відкату, навчаємо чергову зміну, закріплюємо відповідальних за зміни правил.

Конфігурації, політики та регламенти на виході

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

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

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

Як прибрали залежність від одного регіону

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

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

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

Під реплікацію потрапили 46 млн об’єктів; відставання копії від джерела тримається в межах кількох хвилин, і це прийнято як робочий режим.

Що показали навчання з відключення

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

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

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

Чим cross-region replication відрізняється від резервного копіювання

Cross-region replication і резервне копіювання вирішують різні завдання, хоча обидва зберігають дані за межами основного регіону.

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

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

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

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

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

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

Вибір починається з питання: потрібно підняти робочий контур або відкотити дані на конкретний момент.

Технічні сумніви перед запуском

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

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

Що буде зі старими об’єктами при увімкненні?

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

Як перевіряється цілісність після перенесення?

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

Що якщо цільовий регіон недоступний?

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

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

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

Чи потрібна зворотна синхронізація?

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

Обговоримо завдання синхронізації регіонів

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

  • Перелік бакетів і призначення даних: що критично, а що відновлюється з джерела.
  • Обсяг і характер зростання: кількість об’єктів, середній розмір, частка дрібних файлів.
  • Цільові регіони та вимоги до затримки доступу до репліки з кожного.
  • Схема доступів: ролі та політики в обох регіонах, чи окремий контур під реплікацію.
  • Правила життєвого циклу: що зберігати, що видаляти, чи потрібен захист від видалення в приймача.
  • Вимоги до відмови: ручне переключення або автоматичне, припустимий час недоступності.
  • Обмеження: шифрування своїм ключем, нормативні вимоги до місця зберігання.

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

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

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

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

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