同 stack 并发 preview 若无后端锁,易计划交错或偶发冲突——这是对象存储线性历史约束。制品扇出见 《rsync 矩阵》;调度单写入者见 《Nomad 构建锁》,与变更单同钉。
状态文件路径(stack × 后端前缀)
原则:一部署单元一状态命名空间;多流水线共前缀须队列或显式串行。跨区桶复制时锁定后端 URL,防预发误指生产前缀。
| 形态 | 推荐路径 / 前缀约定 | 风险与对策 |
|---|---|---|
| 单区多节点 | 一 stack 一桶或一前缀;按 env/region/stack 分层键。 |
节点只读拉状态;写仅 CI 控制面出口,防 stray CLI。 |
| 跨区镜像桶 | 主写区唯一前缀;从区只读或异步复制,禁止双主 preview。 | 复制滞后会导致计划基于旧 checkpoint;从区只做 dry-run 沙箱栈。 |
| 多租户 | 租户 ID 进桶名或顶层前缀,与计费标签对齐。 | 前缀爆破扫描成本高;生命周期规则按租户分带。 |
pulumi stack ls 与桶控制台核对前缀一致;无「幽灵」本地 file 后端混用;变更单附后端 URL 与 KMS/签名版本。租约 TTL(锁心跳 × CI 超时)
租约守护 preview/up 互斥写:TTL 过短丢锁,过长拖队列。与流水线 timeout 同表维护。
| 作业类型 | TTL 相对作业超时 | 运维动作 |
|---|---|---|
轻量 preview(<15 min) |
超时 ×1.2~1.5,最低留心跳窗口。 | 失败指数退避;禁止无抖动重试风暴打租约键。 |
重图 preview(Provider 拉取多) |
超时 ×1.5~2.0;与最大 Provider 缓存冷启动对齐。 | 缓存命中监控;黄区下调并行 preview 数。 |
up / destroy |
覆盖最坏分段(含人工批准门);批准窗单独续租或拆栈。 | 人工门用外部工单锁,避免占满租约队列。 |
先租约(或入队)再 flock 晋升;忌锁内长持租。与 Nomad 单 promote 一致。
CI 分片:并行预览与合并门闩
分片优先无状态并行(目录/stack/变更集);同 stack 的 preview 宜队列化或以 digest 作合并门闩再扩并发。
| 策略 | 适用 | 合并验收点 |
|---|---|---|
| 每 stack 单飞 | 小团队、变更面集中。 | 队列深度、P99 等待、租约争用次数周报表。 |
| 分栈 + 依赖图 | 单体 IaC 拆栈后。 | CI 图检测无环;下游栈 preview 读上游已冻结 digest。 |
| 变更集切片 | 大仓库;Mac 上磁盘与 Provider 缓存敏感。 | 每片独立临时目录;片间不共享可写 .pulumi 缓存除非只读。 |
# 示例:编排已保证同 stack 串行占租约后,再进入 flock 晋升
LOCK_FILE="/var/tmp/pulumi-promote-${STACK}.lock"
flock -n "$LOCK_FILE" bash -c "pulumi up --yes --stack ${STACK}" || exit 17
合并验收:同 stack 无重叠 up;digest 与批准单进工单;失败释放租约与 flock;回滚分「仅状态 / 仅制品」两轨。
磁盘水位:1TB / 2TB(插件缓存与状态快照)
pulumi 在本机累积 Provider 插件、工作区缓存与日志;并行分片会放大下载。仍采用 70 / 80 / 90% 利用率带;2TB 是余量不是省略清理的理由。
| 利用率带 | 1TB:动作 | 2TB:动作 |
|---|---|---|
| 约 70% 以下 | 周清 ~/.pulumi/plugins 过期版本、作业临时 .pulumi 缓存、流水线日志;大仓可配合 Watchman 与磁盘矩阵 收窄监听根。 |
同节奏;多 Beta 运行时仍按百分比而非绝对 GB 驱动。 |
| 70~80%(黄) | 规划扩容或外迁插件缓存;下调并行 preview 分片数与每节点作业扇入。 | 先砍并行分片与 Provider 冷启动并发,再动栈数。 |
| 80~90% | 冻结新插件试验;收缩 rsync/对象同步载荷;仅保留当前 LTS Provider 集。 | 优先清空重复工作副本与旧 stack 临时目录。 |
| 约 90% 以上(红) | 停纳新扇出;换/排空存储;审快照;水位上大盘。 | |
验收摘录:周更 df 与插件目录体积;每 stack 前缀与租约指标进大盘;分片上限写入带版本 runbook。选购对称节点与统一磁盘档位时,请用下方套餐/价格公开页免登录比对。
常见问题
preview 排队过长。 栈粒度过粗或 TTL 过长占锁;拆栈、缩临界区,或把只读分析迁到沙箱前缀。
租约正常仍出现制品损坏。 状态与构建锁不同层;检查 rsync 半写与 promote 顺序,对照上文 rsync 矩阵。
2TB 仍快速进黄区。 多语言 Provider 与并行分片叠加;百分比轨不变,收紧插件保留策略与分片并发。
购买引导(总结):当矩阵显示「租约争用 ↑、磁盘黄区 ↑、单机 preview 分片触顶」时,优先横向增加同规格 Mac mini M4 节点并把状态前缀与分片策略一并调整,而不是单台堆高并行度。请打开 价格(套餐) 选定区域与磁盘档(1TB/2TB),在 购买 页提交订单;流程与规格疑问见 帮助,均为公开页无需登录。
租约与分片顶到天花板时,用对称节点扩展 Pulumi 控制面
请在 价格 查看套餐与磁盘档,在 购买 发起下单(免登录浏览);运维细则见 帮助。延伸阅读:Nomad 构建锁、制品 rsync 矩阵、拆分 DNS 与制品库矩阵,与本文同一 runbook 系。