多 Worker / 多机部署 Odoo 19 时,会话与附件路径必须一致,否则会出现随机掉线、「节点 A 上传、节点 B 打不开」。常见两种方案:负载均衡粘性会话,或共享会话/共享 filestore。本文对比适用场景、附件与支付回调注意点,以及验收方法。
粘性会话
实现简单:同一用户落到同一应用节点。节点宕机时该节点会话失效,用户需重登——适合中小流量。注意 websocket/长连接也要粘性或统一入口。
共享存储
会话存共享介质(视架构选用 DB/Redis 等方案),所有节点 data_dir 指向共享盘或对象存储。适合多机水平扩展与滚动发布。运维复杂度更高:要监控共享盘延迟与锁。
附件与临时文件
上传附件、导出临时文件不能写在节点本地临时目录却期望另一节点下载。ir.attachment 后端必须对所有节点可见。支付回调 URL 必须打到共享入口,不能写死某台内网机。
切换与发布
滚动升级时先耗尽节点连接再下线;配置变更(session 后端)要有回退开关。文档写清:当前是粘性还是共享,谁负责负载均衡规则。
验收标准
- 两台应用节点轮流停机,会话行为符合方案预期。
- 节点 A 上传附件,节点 B 可打开。
- 支付回调在节点切换后仍成功。
滚动发布时的会话与附件检查单
发布前确认:负载均衡粘性策略或共享 session 配置未改丢;所有节点
data_dir 指向同一 filestore/对象存储;支付回调 DNS 指向负载入口。
发布中:逐台下线前排空连接;发布后用两个浏览器分别打到不同节点,上传同一张附件并交叉打开。
若采用粘性会话,文档写明节点故障后用户需重新登录的预期,避免被当成事故。
多机环境禁止把 session 文件目录指到各节点本地磁盘却不共享——这是随机掉线的头号原因。
故障切换演练
每季演练:停止节点 A,观察粘性用户是否重登(预期内)或共享会话用户是否无感;
节点 B 打开 A 上传的 ir.attachment;支付回调打到负载入口仍 200。
记录 DNS、负载均衡健康检查、websocket 入口是否统一。配置仓库保存 nginx/haproxy 片段与
data_dir 挂载说明。禁止半台机器本地盘半台共享盘的混合临时方案上生产。
滚动升级时监控会话创建错误率与附件 404,异常即暂停发布。
会话方案评审要有架构师与运维共同签字,避免开发私自改 sticky 规则。
预生产勾选表需覆盖文章编号 324 全部验收点后再约生产窗口。
将文章编号 324 的配置变更记入发版说明,便于回滚对照。
将文章编号 324 的配置变更记入发版说明,便于回滚对照。
将文章编号 324 的配置变更记入发版说明,便于回滚对照。
将文章编号 324 的配置变更记入发版说明,便于回滚对照。
架构签字与演练记录
粘性或共享方案由架构与运维共签。演练记录含:停节点、交叉打开附件、支付回调、会话预期。
data_dir 挂载图存配置库。滚动发布监控会话错误与附件 404。禁止混合本地 session。
websocket 入口与 HTTP 入口同一策略说明。
落地备忘(324-0):把本文验收项做成检查表,预生产逐条勾选并附截图;生产窗口前提交负责人签字。相关模型与字段以当前 Odoo 19 实例开发者模式显示为准。
落地备忘(324-1):把本文验收项做成检查表,预生产逐条勾选并附截图;生产窗口前提交负责人签字。相关模型与字段以当前 Odoo 19 实例开发者模式显示为准。
中国Odoo网|对照 Odoo 19 企业版多实例实践:粘性或共享二选一,附件与回调必须全节点一致。