Три узких места при MinIO и параллельном CI
1. Паритет EC и планирование диска. Схема вроде EC:4+2 оставляет примерно две шестых полезного пространства под пользовательские объекты, плюс служебные каталоги heal. Если на Mac mini M4 том 1 ТБ также держит DerivedData и кеш компилятора, порог заполнения приходит раньше, чем ожидает команда объектного хранилища.
2. Репликация и конкуренция за сеть. Site replication между бакетами не знает о вашем ночном rsync артефактов: оба потока делят один uplink. Без календарного окна и лимита полосы задержка до удалённого региона превращается в очередь promote и ложные таймауты health-проверок.
3. Согласованность артефактов. Параллельные job-ы пишут в один префикс, пока шлюз OpenClaw не зафиксировал канареечный набор узлов. Если реплика MinIO отстаёт, часть билдов читает старую ревизию объекта, а часть уже видит новую — это хуже любого падения по CPU.
Матрица: EC на месте, репликация между регионами, гибрид
| Режим | Когда выбирать | Критерий приёмки |
|---|---|---|
| Только EC в одном регионе | Один пул Mac mini M4, SLA по потере узла, без географического DR | Heal завершён, parity дисков выдерживает двойной отказ по runbook |
| Межбакетная репликация | Два региона clustervps, нужен согласованный каталог объектов и журнал версий | Окно репликации зафиксировано, RPO измерен p95 за семь суток |
| EC плюс rsync кэша артефактов | Крупные tarball после Xcode, мелкие объекты остаются в MinIO | flock на promote, --bwlimit не ниже порога canary |
| Отключённый лимит сети | Никогда для межрегионального контура | Недопустимо: снимает узел с балансировки OpenClaw |
Параметры EC, окна репликации и rsync
| Параметр | Стартовое значение | Комментарий для M4-кластера |
|---|---|---|
| Стандартный класс EC | EC:4+2 или EC:6+3 | Меньше паритета — больше ТБ под объекты, но уже запас по дискам |
| Окно site replication | 02:00–05:00 локального региона | Сдвигайте на час при пересечении с резервным rsnapshot |
| rsync --bwlimit | 45000–90000 КБ/с на канал 1 ТБ узла | Пересчитайте из Мбит/с: умножьте на 122 и разделите на восемь |
| Параллельные rsync | Не более двух сессий на исходящий линк | Третья сессия отодвигает health OpenClaw за предел SLO |
OpenClaw: канарейка и health-пробы в двух словах
На шлюзе OpenClaw держите узкий канареечный процент трафика на узлах с новой конфигурацией MinIO: пока mc ready и выборочный GET по контрольному объекту зелёные, остальная сетка остаётся на прежней ревизии. Liveness может проверять только процесс агента, а readiness обязан включать задержку до бакета и глубину очереди репликации; иначе Kubernetes или Nomad отправит на узел новые job-ы, когда объектное хранилище ещё догоняет предыдущий снимок.
Шесть шагов внедрения без простоя CI
- Зафиксируйте схему EC и запас по диску. Пересчитайте полезный объём после паритета и зарезервируйте не менее пятнадцати процентов под heal и временные multipart-части.
- Опишите окно репликации. Запишите в runbook часы, допустимый RPO и действие при пропуске окна: пауза новых promote или снижение параллелизма сборки.
- Настройте rsync с лимитом. Используйте
rsync -az --partial --delete-delay --bwlimit=...и отдельный lock-файл, чтобы артефакты не пересекались с потоком site replication. - Проведите сухой прогон heal. Снимите метрики до и после искусственного удаления одной дисковой ноды в тестовом стенде на Mac mini M4.
- Подключите OpenClaw digest. Краткий JSON с регионом, версией MinIO, глубиной репликации и кодом последнего webhook снижает время разбора инцидента.
- Привяжите водяные знаки к мониторингу. Те же пороги, что в таблице приёмки ниже, должны дублироваться в алертах, иначе команда узнаёт о переполнении из Xcode, а не из дашборда.
Приёмка диска 1 ТБ и 2 ТБ: цифры для цитирования
- Том 1 ТБ: предупреждение при семидесяти процентах занятого пространства, мягкая очистка кеша при восьмидесяти пяти, жёсткая остановка новых записей в объектный префикс при девяноста пяти процентах.
- Том 2 ТБ: те же доли, но абсолютные пороги 1,4 ТБ, 1,65 ТБ и 1,85 ТБ для связки MinIO плюс локальный кеш компиляции.
- Глубина репликации: не более восьми тысяч отставших объектов в очереди между бакетами в рабочий день; выше — режим только чтения для promote.
Если после ночного окна глубина не падает, сначала проверьте лимит rsync, затем ошибки heal, и только потом увеличивайте полосу: иначе вы купите мгновенный прогресс ценой нестабильного latency для параллельных job-ов. Для смежной архитектуры с файловым кешем поверх объектного хранилища смотрите JuiceFS S3 cache на кластере Mac mini M4; для альтернативы мелким файлам — матрицу SeaweedFS и rsync. Расширенные сценарии канареечного трафика описаны в OpenClaw multi-AZ canary.
Закрепите MinIO, EC и rsync на выделенных Mac mini M4
Выберите регион, диск 1 ТБ или 2 ТБ и число узлов: публичные тарифы и оформление аренды доступны без отдельного договора. Масштабируйте кластер, когда матрица выше пройдена на вашем стенде.