主题
AMQP 传输已从 LlamaCloud 移除,所有任务都走 Temporal。升级前请从你的 values 里删掉 rabbitmq、jobsWorker 与 llamaParse —— chart 的 schema 会拒收这些已退役的键。chart 也不再挂载 RabbitMQ 凭据。AMQP_DISABLED 不再使用。
对多数部署来说,这次迁移比看上去要小。Parse、Extract 与 Index 早已全部跑在 Temporal 上,而且在现行版本里这是默认行为、不是你配置出来的。这其中包括 legacy Pipelines 这一面(即 Index v1)。
注意
在更早的版本里,AMQP 是 v1 Parse API 的默认传输,Temporal 需自选。现行版本总是把 v1 Parse 任务经 Temporal 分发。v1 Parse API 仍然可用,但新 Parse 任务已无法再选 AMQP。
Extract v1 始终经 Temporal 分发。v1 API 与任务记录的存储设置均未改变。在从 AMQP 升级之前,请先确认 temporal-jobs-worker 的容量与弹性伸缩 —— 按 chart 默认的合并 profile,Index v1 也跑在它上面。针对旧 worker 或以 RabbitMQ 队列长度为信号的伸缩器都不会扩这个部署。
任务传输
所有受支持的配置都启用 Temporal,且它就是默认传输:
| 能力 | 传输 | 需要 RabbitMQ |
|---|---|---|
| Parse (v2) | Temporal | No |
| Parse (v1) | Temporal | No |
| Extract | Temporal | 否 |
| Index 目录同步、导出、检索、对话 | Temporal | 否 |
| Legacy Pipelines (Index v1) | Temporal | 否 |
所谓「Legacy Pipelines」指的是那套以流水线为中心的旧摄取 API:创建与 upsert 流水线、流水线同步、流水线数据源与文件更新、元数据更新,以及托管的文档摄取。推荐的替代是 Index v2,它通过 Temporal 把源目录同步到向量库。要移除 RabbitMQ 并不要求你先迁到 Index v2:现有的 Index v1 流水线同样经 Temporal 运行,既不改 v1 API 也不迁数据。
注意
Parse v1 是作为一个 Temporal 工作流被分发的,而不是 AMQP 投递。继续用 v1 Parse API 并不阻塞这次迁移。但它确实仍会把任务记录写入 MongoDB,所以请保留 MongoDB(见下)。
开始之前
- MongoDB 保留。 这次迁移只移除 RabbitMQ。Index v1 仍需 MongoDB 存放它的任务记录,换传输不会把这些记录搬走。要同时去掉这两个存储,那是另一件事 —— minimal profile,它会关闭 legacy 流水线那一面。
- 先经过
0.10.0升级。 在越过它继续升级之前,先确认 Temporal 处理正常,并把排队中与在途的 AMQP 任务全部排空。 - 移除已退役的 Parse 传输开关。
V1_PARSE_VIA_TEMPORAL_PERCENTAGE已删除,请从 values 或环境变量里去掉;把它设成0已不能再把 Parse 任务路由回 AMQP,仅仅重新启用 RabbitMQ 也不能恢复那条路。 - 核对 Parse worker 的容量。 新的 Parse 任务跑在
llamacloud-temporal-parse上。从 AMQP 升级之前,请更新那些指向旧 worker 或以 RabbitMQ 队列为信号的自动伸缩器,其中也包括用该信号的 OCR 伸缩器。 - 换掉以队列为信号的伸缩器。 本次升级后
/api/queue-statusz返回410 Gone。它不反映 Temporal 的积压或健康度;请先照弹性伸缩指南调整再升级。
第 1 步:备好 Temporal worker 并排空 AMQP
Legacy Pipelines(Index v1)可以继续留在 v1 API 上。在移除 RabbitMQ 之前:
- 先经过
0.10.0升级 —— 它已无条件把 Index v1 经 Temporal 分发。确认不再有排队或在途的 AMQP 任务后再继续升级。删掉已退役的INDEX_V1_*_TEMPORAL_PERCENTAGE开关;把它们设成低于100已不能改选 AMQP。 - 确认
temporal-jobs-worker的容量与弹性伸缩 —— 按 chart 默认的合并 profile,Index v1 跑在它上面;文件处理还会用到llamacloud-temporal-parse。指向 AMQP worker 的既有 HPA 或 ScaledObject 不会扩这些部署。替换掉以 RabbitMQ 队列为信号的伸缩指标,包括用该信号的 OCR 伸缩器。 - 用你现有的 v1 客户端提交一次流水线同步,确认它在 Temporal worker 上跑完,再继续升级。
第 2 步:升级并移除过时配置
完成第 1 步后,从 values 里删掉 rabbitmq: 与 jobsWorker: 两块以及任何 AMQP_DISABLED 环境变量覆盖,然后把 chart 与应用镜像一起升级。不再需要任何 RabbitMQ 凭据或连接信息。
chart 不再创建 llamacloud-parse。请把需要的设置从 llamaParse 挪到 temporalWorkloads.llamaParse,然后在升级前删掉旧块。移除针对已退役部署的自定义伸缩器与监控。
第 3 步:验证
确认各个 Temporal worker 部署都处于可用状态:
终端窗口
kubectl get deployment llamacloud-temporal-parse temporal-jobs-worker -n llamacloud提交一个 Parse 任务并等到 SUCCESS。如果你也用 Extract 或 Index,就再提交一次抽取或触发一次流水线同步,一并确认它们也能跑完。
第 4 步:移除 RabbitMQ
只有在第 3 步通过之后再做。如果你是用 Bitnami chart 在集群内装的:
终端窗口
helm uninstall rabbitmq --namespace llamacloud如果你用的是托管的 broker,请在云厂商控制台里删除它 —— 升级后的应用已不再连接它。
之后什么会报错
Legacy Pipelines 不再仅仅因为 RabbitMQ 被关掉就返回 410 Gone。但如果 v1 被禁用、或它必需的 MongoDB 存储不在,Index v1 仍会返回 410:
{
"detail": "Pipelines is unavailable on this deployment: it requires MongoDB, which is disabled (MONGO_DISABLED=true). Use the v2 API instead."
}回滚
重新启用 RabbitMQ 并不能把新的 Parse v1、Extract v1 与 Index v1 任务搬回 AMQP。要回到 AMQP,需要带配套消费者的旧版应用发布、兼容的 chart 以及原来的 broker。请一并回滚应用与 chart 版本 —— 只恢复 broker 并不能恢复任务处理。