meta, un verrou de build étroit sécurise la promotion, et des seuils d’extension indiquent quand passer de 1 To à 2 To.
Pourquoi une grappe Mac parallèle exige Nomad et de la discipline disque
Sans règles de placement, une topologie parallèle sur Mac mini M4 dérive : voisins bruyants, double écriture, disques rassurants dans Grafana jusqu’au coup des instantanés APFS. Nomad unifie les jobs batch ; ajoutez verrou de build et seuils d’extension pour éviter l’écart nœud vs production.
- Angles morts du planificateur : sans meta client, les lots de compilation lourds atterrissent sur le même hôte que le diagnostic interactif.
- Écrivains divergents : deux allocations publient le même arbre si contraintes et verrous n’imposent pas une seule voie de promotion.
- Falaises disque : DerivedData, couches conteneur et arbres rsync « golden » remplissent des volumes 1 To plus vite que l’intervalle moyen entre releases.
Le DNS et le placement du registre comptent toujours pour la résolution des hôtes d’artefacts ; croisez avec la matrice DNS scindé et registre d’artefacts lorsque vous montez des origines privées à côté de cette couche Nomad.
Meta client : étiquettes d’affinité batch sur chaque worker Mac
Enregistrez chaque client Nomad avec un petit vocabulaire stable dans meta pour que les auteurs de jobs n’emploient jamais de noms d’hôte en dur. Pensez géographie, classe disque et rôle — pas la profondeur de file mutable. Clés typiques :
region— code AZ ou ville côté exploitation, aligné sur votre empreinte clustervps.disk_tier—1tbvs2tbpour que les jobs batch gourmands en scratch évitent le mauvais pool.build_role—compile,promoteoufanoutafin de séparer CPU massif et publication d’artefacts.
Nomad expose ces valeurs en attributs HCL ; visez peu d’étiquettes mais un pilotage stable des files parallèles.
Contraintes de job en HCL (rôle de chaque stanza, niveau fragment)
Description niveau fragment HCL (sans tout recopier votre module) ; à placer dans un job batch ou un template paramétré.
constraint— Force${meta.disk_tier} = 2tbou une${meta.region}conforme.affinity— Pèse en faveur debuild_role = compile; lespromoterestent ailleurs sauf choix explicite.spread— Étale sur${node.unique.id}(ou rack) pour éviter l’empilement sur un M4 lors d’un pic.
Patron exécutable pour préprod : bon tier disque, préférence compile, peu d’allocations promote simultanées.
job "ios-batch-compile" {
type = "batch"
group "compile" {
count = 3
constraint {
attribute = "${meta.disk_tier}"
operator = "="
value = "2tb"
}
affinity {
attribute = "${meta.build_role}"
operator = "="
value = "compile"
weight = 80
}
spread {
attribute = "${node.unique.id}"
weight = 100
}
}
}
Ajustez count à votre fan-out réel ; l’extrait sert de test de placement, pas de modèle de capacité. Pour le shell humain sur liaisons instables pendant la validation, enchaînez avec la matrice Mosh vs SSH, jitter et checklist flock.
Verrous de build : sérialisation Nomad et flock compatible APFS
Double couche : Nomad sérialise avec count = 1 et build_role = promote ; l’OS pose un flock court sur l’arbre canonique pour les rsync/scripts hors allocateur.
Verrou minimal : signer, renommer, libérer — sinon le parallèle ne sert plus ; la QA garde un seul chemin d’écriture.
Matrice décisionnelle : seuils d’extension 1 To vs 2 To
Seuils d’extension pour clients Nomad Mac mini M4 (APFS, CI mixte, golden local, rsync hebdo).
| Tranche d’utilisation | Action nœud 1 To | Action nœud 2 To | Note planification Nomad |
|---|---|---|---|
| < 70 % | Concurrence batch standard ; purgez les journaux mensuellement. | Marge pour tranches simulateur ; activez le spread inter-nœuds. | Autorisez des poids d’affinité « compile » élevés. |
| 70–80 % | Jaune : planifiez la rotation DerivedData ; limitez les nouveaux instantanés golden. | Jaune : revoyez le count parallèle ; préchargez moins d’arbres complets. |
Baissez le count des groupes gourmands en disque ; préférez la meta 2 To. |
| 80–90 % | Rouge : planifiez extension ou déport ; suspendez le batch non essentiel. | Rouge : déclenchez l’achat / montée en tier ; figez les nouveaux jobs promote. | Ajoutez une constraint bloquant les allocations tant que la sonde disque n’est pas verte. |
| > 90 % | Arrêt dur : risque d’échec des hooks pré-démarrage et de rsync déchiqueté. | Arrêt dur : les instantanés peuvent masquer la pression jusqu’à l’échec des jobs. | Drainez le nœud ou refusez le batch jusqu’à rétablissement de marge. |
Enchaînement avec la synchro rsync des artefacts après Nomad
Nomad fixe quand/où ; rsync propage quoi entre régions. Après le batch, enchaînez le fan-out depuis une task ou un job aval ; réutilisez les mêmes plafonds et checksums que la matrice artefacts & rsync 2026.
Ordre : compile → signe → promote sous verrou de build → rsync golden. Sans verrou, deux régions peuvent diverger sur les digests.
Runbook de déploiement en six étapes
- Étiquetez chaque client Nomad avec les meta
region,disk_tieretbuild_role. - Verrouillez en dépôt un gabarit de job batch dont les stanzas
constraint,affinityetspreadsont relues en préproduction. - Définissez un seul groupe promote avec
count = 1plus un flock filesystem sur la fenêtre de publication. - Branchez des sondes d’utilisation disque : alerte à 80 %, barrière dure à 90 %.
- Enchaînez les tâches fan-out rsync avec les profils et timeouts liés à la matrice.
- Réévaluez la matrice 1 To / 2 To après chaque upgrade majeur de chaîne (Xcode, Swift ou images conteneur de base).
FAQ
Nomad peut-il remplacer flock entièrement ? Non — Nomad évite le double placement, mais opérateurs et scripts de sauvegarde peuvent encore faire la course vers l’arbre. Conservez le verrou OS pour tout ce qui touche le répertoire canonique hors planificateur.
Batch et service doivent-ils partager les clients Mac ? Seulement avec une isolation CPU et E/S mesurable. Beaucoup d’équipes dédient des nœuds compile et isolent les services longue durée ailleurs pour préserver la latence interactive.
Cela change-t-il notre achat stockage ? Traitez la matrice comme signal financier : dépasser 80 % d’utilisation soutenue sur des pools 1 To coûte souvent plus d’heures ingénieur que de faire passer les hôtes clés en 2 To avant l’urgence.
Scaler des workers Nomad sur Mac mini M4 dédiés
Ajoutez des nœuds homogènes pour les pools de compilation batch, alignez les paliers disque sur vos seuils d’extension, et parcourez les forfaits ou lancez une commande sans compte ni connexion — le paiement seulement lorsque vous êtes prêt.