2026 Аренда Mac Mini 7×24: локальный DNS-кэш dnsmasq и unbound, таймауты upstream DoH, пробы здоровья и матрица порогов для длинных ночных батчей
Марафонские батчи на арендованной Mac Mini с OpenClaw падают по хвосту из‑за DNS и медленного DoH без локального кэша. Ниже — dnsmasq против unbound, таблицы таймаутов и проб, шесть шагов с конфигами, тренды 7×24 и установка OpenClaw 2026.5.x на loopback.
Контекст: OpenClaw в блоге, Healthchecks, 7×24 самовосстановление, SSH и VNC.
Три операционных узких места DNS на арендованном узле
- Коррелированные задержки. Без локального кэша пауза DoH даёт общий хвост для всех воркеров и тянет ночной срез без роста CPU.
- Ложноположительные пробы. Внешний curl зелёный при том что loopback перегружен или отдаёт старые TXT/CAA и ломает TLS посередине импорта.
- Шторм перезапусков. Короткие таймауты upstream плюс launchd без ThrottleInterval крутят демон кэша на каждом флапе и забивают inode логов.
Матрица решений: dnsmasq, unbound или только системный stub
Одна Mac Mini в аренде: лёгкий форвардер, рекурсор с метриками или системный stub с непрозрачной очередью. На узле без выделенного администратора чаще выигрывает dnsmasq за счёт простого reload, тогда как команды с жёстким SLO по сертификатам и prefetch обычно переносят нагрузку на unbound и принимают чуть больший RAM footprint ночью.
| Критерий | dnsmasq | unbound | Только stub macOS |
|---|---|---|---|
| Память и кривая сопровождения | Низкая, быстрый reload конфигурации | Растёт с размером кэша ночью | Нет отдельного процесса, мало рычагов |
| Валидация и prefetch | Ограниченно, упор на форвардинг | Богатые счётчики и контроль зон | Зависит от политики системы |
| Наблюдаемость 7×24 | Парсинг query log или внешний экспортёр | unbound-control stats и тренды | Сложнее снять детальный срез |
| Когда выбирать | Лёгкий форвардер и маршруты по доменам | Строгие бюджеты и телеметрия батча | Короткие эксперименты без SLA |
Таблица порогов: DoH, полный запрос и синтетическая проба
Стартовые ворота; ужесточайте при простое GPU.
| Сигнал | Порог | Действие оператора |
|---|---|---|
| TLS и connect к DoH | до восьмисот миллисекунд на тёплом пути | Второй upstream, ротация после двух промахов, запись причины в лог шлюза перед ретраем батча |
| Полный бюджет ответа | две секунды горячий путь, пять холодный prefetch | Логировать batch_id при превышении, помечать сегмент как частичный и не смешивать с успешным merge webhook |
| Проба dig на loopback | каждые шестьдесят секунд, грейс двадцать секунд | Целиться в форвардер 127.0.0.1 а не в публичный anycast |
Шесть шагов внедрения с исполняемыми фрагментами
- Loopback первым. Ставьте
127.0.0.1после старта демона и успешногоdig @127.0.0.1из plist батча. - dnsmasq. Минимальный конфиг для быстрого отката по SSH.
listen-address=127.0.0.1
cache-size=10000
min-cache-ttl=60
server=1.1.1.1
server=8.8.8.8
- unbound forward-tls-upstream. Порт 853 и явные адреса снижают неопределённость относительно DoH за прокси.
forward-zone:
name: "."
forward-tls-upstream: yes
forward-addr: 1.1.1.1@853
forward-addr: 8.8.8.8@853
- Проба и Healthchecks.
dig +time=2 +tries=1 @127.0.0.1 health.runmini.testрядом с ping из гайда Healthchecks. - ThrottleInterval. Девяносто–сто двадцать секунд между рестартами plist при флапе upstream.
- Откат. Копия старого конфига и атомарная подмена для восстановления по SSH за одну минуту.
Наблюдаемость 7×24: тренды перед пользовательским сбоем
unbound-control в JSON Lines или query log dnsmasq в тот же конвейер что nginx перед OpenClaw.
- Тренд один: среднее время рекурсии растёт три часа при плоском CPU — ранний upstream или истощение кэша.
- Тренд два: повторы TLS на DoH коррелируют с очередью webhook и задержкой ping Healthchecks.
- Тренд три: минуты отказа dig на loopback сопоставляйте с ретраями задач против ложного зелёного внешнего резолвера.
Эскалация если резолвер и JSON health шлюза деградировали в одном пятиминутном bucket; в логах те же batch_id и RFC3339 что в webhook. Отдельно стройте скользящее окно по доле NODATA и SERVFAIL от upstream чтобы ловить деградацию раньше роста задержки HTTP клиентов батча и не путать симптом с обычной загрузкой CPU на Apple Silicon.
OpenClaw 2026.5.x: установка и сцена согласования с DNS
Node 24 и OpenClaw 2026.5.x в lockfile как в runbook серии. Перед npm install проверьте registry.npmjs.org через форвардер за две секунды; избегайте двойного пути HTTP_PROXY плюс DoH.
Дымовой маршрут шлюза: health по IP и имя только через DNS в логах с одним batch_id для jq-среза ночи на Mac Mini. После деплоя зафиксируйте digest базового образа и версию npm в том же артефакте что и checksum конфигурации резолвера чтобы откат шлюза и откат DNS не расходились по процедурам постмортема.
Опорные величины для ссылок в постмортеме
- cache-size 10000, min-cache-ttl 60 согласно фрагменту dnsmasq.
- TLS 800 мс тёплый путь; полный ответ 2 с горячий и 5 с холодный prefetch.
- Проба 60 с, грейс 20 с; ThrottleInterval 90–120 с для plist кэша.
- Окно merge алертов пять минут по хешу тела webhook как в соседних runbook OpenClaw чтобы ночной шум не дублировал DNS и приложение.
Итог и оформление аренды узла
Mac Mini M4 под шлюз и локальный DNS: главная, тарифы, помощь SSH/VNC, pokupka, блог.
Итог: запас APFS под логи резолвера и шлюза, длительная аренда при ежедневных батчах, исходящие HTTPS под DoH, пробы на loopback.