2026-05-06 OpenClaw double passerelle : ports, OPENCLAW_STATE_DIR et rollout nginx upstream sur un Mac cloud Apple Silicon loué (HK / JP / KR / SG / US)
Même appareilLocation Mac mini M4en hautDeux passerelles OpenClawDe nombreuses équipes souhaitent se présenter. à côté de la représentationcanariséparé du webhook client.mise en scènePar exemple, pour avoir une liste d'autorisations de modèle de . Configuration incorrecte——collision de port, partagée~/.openclaw, le changement de poids nginx à mi-demande ressemble à un échec du modèle.502 tempêteCependant, en réalité, il ne s’agit que de la tuyauterie. ce2026-05-06Guide pour éviter les collisionsPort d'écoute de bouclage, séparéOPENCLAW_STATE_DIRarbre,démarrage_lentavecnginxen amont, etsonde de santéDisposez-les dans l'ordre,Hong Kong, Tokyo, Séoul, Singapour, États-UnisVous permet de drainer le trafic sans compter sur les héros SSH. Pour les agents lisant des référentiels qui se chevauchent,entrée nginx et webhook,sonde de santé,priorités variables de l'environnement de lancement,Discipline des outils de fichiersVeuillez vous connecter à.
Quand la complexité des doubles passerelles en vaut-elle la peine ?
Si le budget le permetDeuxième MacMerci de donner la priorité à l'ajout du nœud témoin.Page de prixVoir. Même si vous êtes lié à un seul, une configuration double peut s'avérer utile lorsque :
- Avec un trafic réglementé et expérimentalliste d'autorisations de modèlesont différents.
- En mise en scène et en productionSecret de signature du webhookLa période de rotation est différente.
- Épinglage du processeurJe n'en ai pas, mais je veux un mur avec un rayon d'explosion entre le canari et la session réelle.
Topologie : parallèle actif/actif et principal/veille
Le parallèle actif/actif convient lorsque vous pouvez randomiser les clients ou avoir un contrôle total sur les poids nginx. Principal/veille est destiné aux équipes qui ont besoin d'un débogage définitif, de sorte qu'une seule passerelle dispose d'outils d'écriture lourds sur un miroir Git partagé à un moment donné. Le choix estlancementctlVeuillez documenter l'étiquette au même endroit que le fichier README.
| modèle | avantage | inconvénients |
|---|---|---|
| Actif/actif | Débit, à la hauteur de la réalité | Nécessite des webhooks idempotents et des effets secondaires dédupliqués |
| Principal/veille | Journaux simples, restaurations faciles | CPU inactif sauf si le mode veille exécute des sondes synthétiques |
Port, adresse de liaison, étiquette de lancement
lsofNe comptez pas sur un port franc que vous venez de voir une seule fois. Corrigé sur plist et nginx. Exemple pour ajuster la sémantique :
exporter OPENCLAW_GATEWAY_PORT_PRIMARY=18789
exporter OPENCLAW_GATEWAY_PORT_CANARY=18890
Les deux127.0.0.1se lier à0.0.0.0:443est laissé à nginx. canari seulement::1Si votre amont est uniquement IPv4, vous poursuivrez des réinitialisations de connexion fantomatiques. La famille d'adresses estTolérance DNS/TLS sortanteVeuillez suivre les directives.
Répertoire d'état : pourquoi vous ne devriez pas partager ~/.openclaw
Chaque passerelle a la sienneOPENCLAW_STATE_DIRest requis (par ex./var/lib/openclaw-prodet/var/lib/openclaw-canary). Le partage d'une maison peut entraîner des conflits de fichiers de session et des caches pollués lorsqu'une partie transmet la clé API. Si launchd utilise le même UID pour les deux tâches, assurez-vous que les répertoires sont séparés et ne partagent pas les racines SQLite ou de session.
rsyncetlaunchctl kickstartEt je ne parle pas de réinstallation.nginx en amont : poids, slow_start, max_fails
Un bloc de serveur en cours d'exécutionArticle sur le proxy inverseet dupliquez la définition en amont.
openclaw_primary en amont { serveur 127.0.0.1:18789 max_fails=3 fail_timeout=20s ; }
openclaw_canary en amont { serveur 127.0.0.1:18890 max_fails=1 fail_timeout=10s slow_start=30s ; }
selon la tolérance au risquesplit_clientsou pondéréproxy_passutiliser.proxy_read_timeoutcorrespond au modèle aller-retour le plus long autorisé : la séparation des passerelles ne réduit pas le délai LLM.
Lors du rechargement de nginxconnexions_travailleuretrester en vieN'oubliez pas que les pools sont par travailleur. Si vous n'augmentez pas la limite en doublant en amont, vous atteindrez un plafond avec les retransmissions en rafale de webhooks.stub_statusSi vous pouvez l'obtenir, récupérez-le, et sinon, analysez le temps de réponse en amont dans le journal d'accès. p95 immédiatement après le rechargement35%Si cela saute plus que cela, je soupçonne une famine des travailleurs plutôt que les paramètres OpenClaw. Si la charge TLS est élevée, alignez les chiffrements pour le transfert et la production, et n'activez pas accidentellement la route lente uniquement du côté Canary.
À côté de l'instantané d'état d'OpenClaw, un message explicitearchive tar nginx pour la restaurationVeuillez documenter. Pour les opérateurs qui ont pris un instantané uniquement de l'arborescence des nœuds et ont oublié nginx,carte $http_x_forwarded_protoLa faute de frappe sur deux lignes dans l'échec de l'analyseur fermé brisera les deux passerelles en même temps plusieurs fois.
Sonde de santé : passez les deux au vert avant que la circulation ne bouge
sonde de préparationLa même matrice de boucles queles deuxExécutez sur le port local de , et après rechargement, exécutez également via nginx. Enregistrez séparément l'état HTTP, l'heure de connexion en amont et l'heure de prise de contact TLS pour isoler les régressions nginx des régressions OpenClaw.
Liste de contrôle de déploiement en 8 étapes
- instantanéplist, nginx, les deux répertoires d'état.
- installerDeuxième passerelle (les broches binaires ou npm sont les mêmes que celles de production).
- dans chaque arbre
docteur à griffes ouvertesVérifié de manière indépendante. - Poids Canary en nginx0(Trou noir jusqu'à ce que vous soyez prêt).
- De la mise en scèneRelecture de webhook synthétiqueFumé avec.
- Augmentez le poids de la tranche de canari (5 à 12 %).
- 48hObservez le budget d’erreur.
- Avec étapes de poids documentéespromotionourestauration.
Délais d'attente, tentatives de webhook et double expédition
Les configurations doubles amplifient le risque de double livraison si l’amont réessaye activement. Le gestionnaireclé idempotenteAssurez-vous de respecter le marqueur de déduplication et placez-le sous le bon répertoire d'état.proxy_read_timeoutcorrespond à la limite d'inactivité TCP du fournisseur : la table de nouvelle tentative estExpédition et signature de webhooksVoir.
| Signal SLO | seuil | action |
|---|---|---|
| connexion en amont à localhost p95 | > 120 ms | Arrêtez les changements de poids et étudiez la limitation du lancement |
| rapport 5xx | dans 15 minutes> 0,5% | Égoutter le poids du canari à zéro |
| attente dans la file d'attente | travail en attente> 200 | Ajoutez un deuxième Mac ou réduisez le parallélisme : n'ajoutez pas de troisième passerelle |
Tableau SLO : Signification de « double passerelle saine »
Traitez les doubles passerelles comme un maillage de mini-services et mesurez chaque saut. Si la production est verte et que seul le canari viole le SLO, corrigez les paramètres du canari avant de bricoler nginx.
Le tableau de bord interne affiche les informations pour chaque passerelle.4 lignes: Processus RSS, CPU%, nombre de HTTPs en cours, nombre de connexions amont échouées à partir des journaux nginx. Canary RSS de production avec le même poids de trafic18%Si l'écart est supérieur à cela, il y a probablement une fuite de mémoire dans le plugin ou une inadéquation dans le semver du nœud.OPENCLAW_STATE_DIRdansnpm ls --profondeur=0Veuillez comparer. Les équipes qui ignorent cette comparaison passent leurs week-ends à suivre la « dégradation de la qualité LLM », mais la réalité est qu'il s'agit d'un canari.Même pack de compétences chargé deux foisC'est le modèle.
trimestrielnginx arrêt completS'il vous plaît, répétez. Arrêtez intentionnellement nginx, assurez-vous que launchd maintient les deux passerelles en vie avec un bouclage et des pages de robot d'incident aux bonnes personnes. L'objectif est d'améliorer la disponibilité, et non de doubler le téléavertisseur.
FAQ : TLS, DNS, secrets
| question | Réponses pratiques (2026-05-06) |
|---|---|
| Ai-je besoin d'un certificat TLS pour chaque passerelle ? | Normalement inutile : terminez une fois avec nginx et la passerelle ne fait que revenir en arrière. |
| Même clé API pour les deux ? | Éviter : rotation indépendante pour réduire le rayon d’explosion. La procédure estMise à niveau et restaurationVoir. |
Pourquoi le Mac mini M4 bare metal simplifie toujours le chaos à double passerelle
La double configurationProcesseur・disque・lancementdes grands livres en même temps. Dans le nœud MacXCode1 à 2 ToLocation NVMeMac mini M4rend le délai de bouclage nginx → OpenClaw prévisible et nocturnexcodebuildLaisse de la place dans la mémoire unifiée pour exécuter deux graphiques de nœuds sans prendre de cœurs dans les voies adjacentes. Cette prévisibilité rend les déploiements basés sur le poids mesurables. Au lieu de charger un hôte déjà occupé avec une troisième passerelle.Deuxième nœud dédiéSi l'opération nécessiteTarification régionale, Blake Glass autorise la nouvelle ancre de confiance TLS avec VNCaideetVNCVeuillez également inclure.
Ajoutez un second builder avant une troisième passerelle
HK / JP / KR / SG / US · SSH / VNC optionnel