服务器升级与回滚
每次升级都会让四个产品和数据库结构一起前进,并先备份租户数据库;回滚会恢复上一个发布和那份备份。
第 1 步:看看现在装的是哪个版本
soln status --dir /opt/soln-tenant-runtime
- 成功:已安装的发布版本、四个产品的容器状态,以及
ready DEPLOYMENT_NOT_INSTALLED—— 这个目录不是部署目录,检查--dir
soln upgrade --check --dir /opt/soln-tenant-runtime
Soln <版本> is up to date.—— 无需操作Update available: <当前> -> <新版本>—— 继续第 2 步Update required: <当前> -> <新版本>—— 控制面已强制要求这个版本,尽快升级以免 Runtime 断连
第 2 步:检查存储与容量
sl storage status --dir /opt/soln-tenant-runtime --json
sl upgrade --dir /opt/soln-tenant-runtime --check --json
确认数据卷已挂载,加密方式已核实,各文件系统有足够空间。CLI 分别计算新版镜像、数据库备份和数据迁移余量;相同文件系统上的预算合并计算。空间不足时在停止服务和迁移前中止。containerd 镜像存储需填写实际宿主机路径,详见存储与容量管理。
升级备份默认保存在部署目录的 .soln/backups,由 CLI 加密,第一次升级时创建;它不自动放入租户数据加密卷,也不包含 MinIO 附件。另行建立异机备份及恢复策略。
第 3 步:升级
soln upgrade --dir /opt/soln-tenant-runtime
非交互终端加 --yes;只有在必须装某个确切版本时才加 --release <版本>。CLI 依次做这些事:
- 检查基础环境与加密数据挂载,并校验部署绑定
- 获取并验证发布清单、获取短期 Registry 凭据
- 检查部署备份、Docker 镜像与租户数据的空间预算
- 校验镜像签名并拉取新版镜像
- 记录升级状态,停止业务服务并写入加密数据库备份
- 记录迁移阶段并执行 Database Migrator
- 启动新版服务,直接 CLI 升级等待健康检查;租户内升级由页面重新连接并确认目标版本
- 保存新版本状态和上一版清单,供回滚使用
- 成功:
Soln upgraded to <版本>. Backup: <部署目录>/.soln/backups/postgres-tenant-<时间戳>.sql.gz.enc DEPLOYMENT_ALREADY_CURRENT—— 这个版本已经装好了DEPLOYMENT_RECOVERY_REQUIRED—— 上一次升级没有走完,先按第 5 步回滚- 签名校验或 doctor 检查失败时,升级在任何迁移之前就停下
第 4 步:验证新版本
soln status --dir /opt/soln-tenant-runtime
- 成功:版本号是新版本,状态为
ready
curl -fsS -o /dev/null -w '%{http_code}\n' \
https://runtime.customer.example.com/health/ready
- 成功:
200 - 出现
TENANT_RUNTIME_NOT_READY或不是200:先去部署排查看心跳和 Lease 报错,再做别的操作
第 5 步:回滚
数据影响: 正常回滚会恢复升级前的 PostgreSQL 备份,升级后新增、修改或删除的数据库记录不会保留。它不恢复对象存储文件,也不把 Temporal 状态一起回退;数据库与这些服务可能需要人工核对。操作前停止业务写入,并保留当前数据库、对象存储和相关外部服务的备份,再确认是否回滚。
如果升级停在 backup_pending 阶段,CLI 的恢复分支只重启原版本,不恢复数据库;以 CLI 的操作提示为准。不要手工改未完成操作标记。
soln rollback --dir /opt/soln-tenant-runtime
迁移或健康检查失败、或者需要撤掉新版本时使用。CLI 依次做这些事:
- 找到上一个发布和它的备份(没有则报
DEPLOYMENT_ROLLBACK_UNAVAILABLE) - 停止业务服务
- 恢复 PostgreSQL 备份
- 用上一个发布执行 Database Migrator
- 启动上一个发布并等待
/health/ready - 把上一个发布设为当前版本,并丢弃回滚目标
- 成功:
Soln rolled back to <版本>. - 外部服务模式下,备份会被恢复到租户自己的 PostgreSQL 里,因此要确认账号仍然有权删除并重建上一个发布所需的结构对象
- 只保留一个回滚目标:回滚之后再升级,会重新写一份备份
运维规则
- 不要手改
.soln/deployment.json和.soln/docker-compose.release.yml:它们记录当前发布、镜像摘要和未完成的操作 /health/ready失败时不要绕过 Lease 校验,先看心跳和 Lease 报错- 按升级预算和业务增长为各文件系统保留空间,不要删掉属于当前发布的那份备份
- 复用同一个部署目录;不要在已有部署上重装(会报
DEPLOYMENT_ALREADY_INSTALLED) - 只有打算重连 Runtime 时才轮换 Agent 密钥,并且要执行一次生命周期操作,让新值进入容器
另见部署排查。
需要更换已部署 Runtime 的访问地址时,参见更换租户访问域名。