Геораспределенный кластер S3: как мы отвели запись и чтение в разные ДЦ и сэкономили 85% трафика на синхронизации
У клиента работало S3-хранилище на базе одного сервера Minio. Этот сервер одновременно принимал новые файлы (пользователи загружали фото) и раздавал их при миллионах просмотров. Вся инфраструктура стояла в одном дата-центре. Централизованная балансировка и геораспределенность отсутствовали полностью.
Ключевые боли:
- Перегрузка мастера - сервер физически не успевал обрабатывать одновременные запросы на запись и чтение.
- Сетевой канал упирался в потолок - расширение канала дорого и не решало проблему архитектурно.
- Отсутствие балансировки - вся нагрузка на чтение шла на тот же узел, что и запись.
- Рост дельты - за год между мастером и репликами накапливалось расхождение объемом более 1 ТБ, а полная репликация была слишком дорогой.
Решение
Вместо доработки монолитной схемы мы предложили геораспределенную архитектуру с разделением ролей на базе open-source компонентов. Заказчик был заранее проинформирован, что решение собирается из стандартных open-source продуктов, а наша роль - предоставить полный цикл внедрения и сопровождения.
Что выполнила наша команда:
- Спроектировали геораспределенный кластер с мастером на запись и тремя слейвами на чтение.
- Настроили балансировку запросов на чтение через Round Robin DNS на Cloud.
- Реализовали репликацию свежих данных с мастера на слейвы через Mirror Nginx.
- Разработали и внедрили механизм синхронизации по 404 (по требованию + фоновая досинхронизация).
- Провели нагрузочное тестирование и мониторинг кластера.
- Передали документацию и обучили команду клиента.
Функциональность внедренного решения
- Разделение ролей - мастер в ДЦ №1 только на запись, 3 слейва в ДЦ №2 только на чтение.
- Балансировка чтения - Round Robin DNS распределяет запросы пользователей между тремя слейвами.
- Репликация свежих данных - Mirror Nginx дублирует новые файлы на все слейвы практически в реальном времени.
- Синхронизация по 404 - если файла нет на слейве, он подтягивается с мастера и сохраняется локально.
- Фоновая досинхронизация - раз в сутки слейвы анализируют логи 404 и добирают популярные «промахи».
- API-совместимость - клиентское приложение продолжает работать с S3 API без изменений.
Результаты и преимущества для клиента
✅ Устранена перегрузка мастера - канал мастера больше не забит чтением, он занят только записью и редкими 404-запросами.
✅ Прозрачность синхронизации - мы видим все промахи 404 и контролируем дельту.
✅ Скорость раздачи для пользователей выросла - три слейва в отдельном ДЦ + балансировка.
✅ Экономия трафика на синхронизации - 70-85% вместо полной репликации всех данных.
✅ Дельта перестала быть проблемой - 404-механизм добирает потерянные объекты без ручного вмешательства.
✅ Горизонтальное масштабирование - при росте нагрузки достаточно добавить новые слейвы на чтение.
Роль нашей компании
- Подбор архитектуры под задачу клиента (Minio + Mirror Nginx + 404-механизм).
- Полный цикл DevOps: развертывание, настройка кластера, мониторинг, резервное копирование.
- Разработка и внедрение кастомного механизма синхронизации по 404.
- Обучение персонала и подготовка инструкций.
- Сопровождение и техподдержка 24/7 (по SLA).
Отправить заявку
Оставьте заявку, и мы свяжемся с вами в течение суток













