ИИ / Автоматизация 6 мая 2026 г.

2026-05-06 — двойной шлюз OpenClaw: порты, OPENCLAW_STATE_DIR и развёртывание nginx upstream на арендованном облачном Mac Apple Silicon (Гонконг / Япония / Корея / Сингапур / США)

MacXCode Engineering Team 6 мая 2026 г. ~24 минуты чтения

Та же машинаПрокат Mac mini M4сверхуДва шлюза OpenClawЕсть много команд, которые хотят участвовать. рядом с спектаклемканарейкаотделен от веб-перехватчика клиента.постановкаНапример, чтобы иметь список разрешений модели . Неправильная конфигурация — конфликт портов, общий~/.openclaw, изменение веса nginx в середине запроса выглядит как сбой модели.502 штормОднако на самом деле это всего лишь трубопровод. этот2026-05-06Руководство по предотвращению столкновенийПорт прослушивания обратной связи, разделенныйOPENCLAW_STATE_DIRдерево,медленный_стартсnginxвверх по течению, изонд здоровьяРасположите их по порядку,Гонконг, Токио, Сеул, Сингапур, СШАПозволяет сливать трафик, не полагаясь на SSH-героев. Для агентов, читающих перекрывающиеся репозитории,вход в nginx и вебхук,зонд здоровья,приоритеты переменных среды launchd,Дисциплина файлового инструментаПожалуйста, подключитесь к.

Когда сложность двойных шлюзов того стоит?

Если бюджет позволяетВторой МакПожалуйста, отдайте приоритет добавлению узла-свидетеля.Страница ценВидеть. Даже если вы привязаны к одному из них, двойная конфигурация может пригодиться, когда:

  • С регулируемым и экспериментальным трафикомсписок разрешений моделиразные.
  • В постановке и производствеСекрет подписи вебхукаПериод вращения разный.
  • Закрепление процессораУ меня его нет, но мне нужна стена с радиусом взрыва между канарейкой и реальным сеансом.
Расчетное числовое значение:первый48 часовэто запрос на канареечные гири.5–12%и только пока бюджет ошибок зеленый.10%Повышайте постепенно.

Топология: параллельный активный/активный и основной/резервный.

Параллельный режим «активный/активный» подходит, когда вы можете рандомизировать клиентов или иметь полный контроль над весами nginx. Первичный/резервный предназначен для команд, которым требуется окончательная отладка, поэтому только один шлюз в любой момент времени имеет инструменты с большим объемом записи на общем зеркале git. ВыборзапускctlПожалуйста, задокументируйте этикетку в том же месте, что и README.

шаблон преимущество недостатки
Активный/активный Пропускная способность соответствует реальности Требуются идемпотентные веб-перехватчики и дедуплицированные побочные эффекты.
Основной/резервный Простые журналы, легкий откат Процессор простаивает, если в режиме ожидания не выполняются синтетические зонды

Порт, адрес привязки, метка запуска

лсофНе полагайтесь на свободный порт, который вы только что видели. Исправлено в plist и nginx. Пример настройки семантики:

экспорт OPENCLAW_GATEWAY_PORT_PRIMARY=18789 экспорт OPENCLAW_GATEWAY_PORT_CANARY=18890

Оба127.0.0.1привязать к0.0.0.0:443остается за nginx. только канарейка::1Если ваш восходящий поток использует только IPv4, вы будете гоняться за призрачными сбросами соединения. Семейство адресовДопуск исходящего DNS/TLSПожалуйста, следуйте инструкциям.

Каталог состояний: почему не следует делиться ~/.openclaw

Каждый шлюз имеет свой собственныйOPENCLAW_STATE_DIRтребуется (например,/var/lib/openclaw-prodи/var/lib/openclaw-canary). Совместное использование дома может привести к конфликтам файлов сеансов и загрязнению кешей, когда одна сторона передает ключ API. Если launchd использует один и тот же UID для обоих заданий, убедитесь, что каталоги разделены и не имеют общих корней sqlite или сеансов.

резервная копия:Сделайте снимок обоих каталогов состояний перед изменением весов nginx. Откат — этоrsyncизапускctl кикстартИ я не говорю о переустановке.

nginx восходящий поток: веса, медленный_старт, max_fails

Работающий серверный блокСтатья об обратном проксии продублируйте определение восходящего потока.

восходящий openclaw_primary {сервер 127.0.0.1:18789 max_fails = 3fail_timeout = 20 с; } восходящий openclaw_canary {server 127.0.0.1:18890 max_fails=1fail_timeout=10 с медленный_старт=30 с; }

в зависимости от толерантности к рискуSplit_clientsили взвешенныйproxy_passиспользовать.proxy_read_timeoutсоответствует максимально длинному разрешенному маршруту туда и обратно модели — разделение шлюзов не уменьшает задержку LLM.

При перезагрузке nginxworker_connectionsиподдерживать активностьПомните, что пулы рассчитаны на одного работника. Если вы не увеличите лимит, удвоив восходящий поток, вы достигнете потолка с повторными передачами пакетов веб-перехватчиков.stub_statusЕсли вы можете получить его, получите его, а если нет, проанализируйте время ответа восходящего потока в журнале доступа. р95 сразу после перезагрузки35%Если он подскакивает больше, я подозреваю, что рабочий голоден, а не настройки OpenClaw. Если нагрузка TLS высока, выровняйте шифры для staging и prod и не включайте случайно медленный маршрут только на канареечной стороне.

Рядом со снимком состояния OpenClaw отображается явныйархив nginx для откатаПожалуйста, задокументируйте. Для операторов, которые сделали снимок только дерева узлов и забыли о nginx,карта $http_x_forwarded_protoОпечатка в двух строках в парсере Fail Close приведет к одновременной поломке обоих шлюзов много раз.

Датчик работоспособности: включите оба зеленого цвета до начала движения транспорта.

проверка готовностиТа же матрица скручиваемости, что иобаВыполнить на локальном порту и после перезагрузки также выполнить через nginx. Отдельно регистрируйте статус HTTP, время восходящего соединения и время установления связи TLS, чтобы изолировать регрессии nginx от регрессий OpenClaw.

Контрольный список из 8 шагов по внедрению

  1. снимокplist, nginx, оба каталога состояний.
  2. установитьВторой шлюз (бинарные или npm-контакты такие же, как и в производстве).
  3. в каждом дереведоктор с открытым когтемНезависимо проверено.
  4. Канарские веса в nginx0(Черная дыра, пока не готова).
  5. Из постановкиСинтетический повтор вебхукаКопченый с.
  6. Увеличьте вес до ломтика канареечника (5–12%).
  7. 48 часовСоблюдайте баланс ошибок.
  8. С документированными шагами весаповышениеилиоткат.

Тайм-ауты, повторные попытки веб-перехватчика и двойная доставка

Двойные конфигурации увеличивают риск двойной доставки, если восходящий поток активно повторяет попытки. Обработчикидемпотентный ключОбязательно учитывайте маркер дедупликации и поместите его в правильный каталог состояния.proxy_read_timeoutсоответствует лимиту простоя TCP провайдера — таблица повторовДоставка и подписание вебхукаВидеть.

СЛО-сигнал порог действие
восходящее соединение с локальным хостом p95 > 120 мс Остановите изменения веса и расследуйте регулирование запуска
соотношение 5xx через 15 минут> 0,5% Сбросить вес канарейки до нуля
удержание в очереди ожидающее задание> 200 Добавьте второй Mac или уменьшите параллелизм — не добавляйте третий шлюз

Таблица SLO: Значение термина «работоспособный двойной шлюз»

Рассматривайте двойные шлюзы как мини-сервисную сеть и измеряйте каждый переход. Если производство зеленое и только canary нарушает SLO, исправьте настройки canary, прежде чем возиться с nginx.

На внутренней информационной панели отображается информация для каждого шлюза.4 линии: Обработка RSS, % ЦП, количество выполняемых HTTP-запросов, количество неудачных восходящих подключений из журналов nginx. Canary RSS из производства с таким же весом трафика18%Если отклонение превышает это значение, скорее всего, существует утечка памяти в плагине или несоответствие узла семвера.OPENCLAW_STATE_DIRвНПМ ls --глубина=0Пожалуйста, сравните. Команды, которые пропускают это сравнение, проводят свои выходные, отслеживая «ухудшение качества LLM», но реальность такова, что это канарейка.Один и тот же набор навыков загружен дваждыЭто образец.

ежеквартальныйполная остановка nginxПожалуйста, порепетируйте. Намеренно остановите nginx, убедитесь, что launchd поддерживает работу обоих шлюзов с помощью обратной связи и передает страницы ботов по инцидентам нужным людям. Цель состоит в том, чтобы улучшить доступность, а не удвоить пейджер.

FAQ: TLS, DNS, секреты

вопрос Практические ответы (06.05.2026)
Нужен ли мне сертификат TLS для каждого шлюза? Обычно в этом нет необходимости: завершите работу один раз с помощью nginx, и шлюз только зациклится.
Один и тот же ключ API для обоих? Избегайте — независимое вращение для уменьшения радиуса взрыва. ПроцедураОбновление и откатВидеть.

Почему «голый металл» Mac mini M4 по-прежнему упрощает хаос с двойным шлюзом

Двойная конфигурацияПроцессордискзапускрегистров одновременно. В узле MacXCode1–2 ТБАренда NVMeМак мини М4делает задержку обратной связи nginx→OpenClaw предсказуемой и еженощнойxcodebuildОставляет место в единой памяти для запуска двух графов Node, не забирая ядра из соседних дорожек. Эта предсказуемость делает развертывание на основе веса измеримым. Вместо загрузки уже занятого хоста третьим шлюзом.Выделенный второй узелЕсли операция требуетРегиональные цены, Блейк Гласс авторизует новый якорь доверия TLS с VNCпомощьиВНКПожалуйста, также включите.

Добавьте второго застройщика перед третьим шлюзом

Гонконг/Япония/КР/SG/США · SSH/опционально VNC