数字化技能提升教程,数字化时代生存宝典

Sub2API双实例部署与基础验收指南

浏览:16

在实际使用过程中,为满足不同业务需求,可能需要在同一台服务器上部署多个 Sub2API 实例。多实例部署过程中,需要重点关注实例之间的数据目录、数据库、Redis以及端口隔离情况,同时完成服务状态、依赖组件和上线前基础验收检查。

本文记录一台 Linux 主机上两套相互隔离的 Sub2API 实例部署与基础验收流程,包括环境检查、实例部署验证、数据库与Redis状态检查以及上线前检查事项。文档内容保留原有部署记录,仅对开头进行补充整理,方便后续部署和维护参考。

1. 目标、范围与双实例拓扑

本文记录一台 Linux 主机上两套相互隔离的 Sub2API 实例验收方法。A 实例使用本机端口 18080,B 实例使用 18081;两者分别拥有自己的 PostgreSQL、Redis 和数据目录。本文只使用本轮实验中已经执行并成功返回的命令,不把未核对的 Compose 字段当作事实。

sub2a-app -> 18080 -> 8080
sub2b-app -> 18081 -> 8080

2. 版本、端口和目录前置检查

先确认登录到目标 Linux 主机,再核对两个实例的目录是否按实例名分开。目录分开是持久化隔离的最低条件,不能用同一个 data、postgres_data 或 redis_data 目录承载两套服务。

cd /opt/sub2api-lab/sub2a
cd /opt/sub2api-lab/sub2b

本轮验收还记录了主机内核、Docker 和 Compose 版本,后续排查时应把它们一并保留。

3. Docker 与 Compose 版本确认

版本检查结果为 Linux 6.8.0-48-generic、Docker 29.6.1、Docker Compose v2.40.3。先执行以下命令,确认命令行工具可用,再继续检查容器。

uname -srmo

docker --version
docker compose version

4. Sub2API A 数据目录与权限准备

A 实例的 Compose 文件位于 /opt/sub2api-lab/sub2a/compose.yml,验证时同时加载 compose.oidc.yml。先在该目录执行状态检查,确认实例名称、端口和服务均来自 A 的配置上下文。

cd /opt/sub2api-lab/sub2a
docker compose -f compose.yml -f compose.oidc.yml ps

显示 A 的应用、PostgreSQL 和 Redis 均为 Up ... (healthy),应用映射为 0.0.0.0:18080->8080/tcp。

5. Sub2API B 数据目录与权限准备

B 实例使用 /opt/sub2api-lab/sub2b/compose.yml 和自己的 OIDC 覆盖文件。不要在 A 的目录中执行 B 的检查命令,否则输出中的容器名和端口容易被误判。

cd /opt/sub2api-lab/sub2b
docker compose -f compose.yml -f compose.oidc.yml ps

B 的应用映射为 0.0.0.0:18081->8080/tcp,三个容器均处于 healthy 状态。

6. 双实例 Compose 文件与环境变量核对

状态检查使用两个文件:基础 compose.yml 与 compose.oidc.yml。实际部署时应先审阅文件,再执行启动;本文不补写未在本轮事实中出现的环境变量值,也不在文档中记录密码、Token 或密钥。

docker compose -f compose.yml -f compose.oidc.yml ps

两套应用使用同一个镜像摘要 weishaw/sub2api@sha256:f5febc...,实例边界由容器名、端口和持久化目录区分。

7. 启动 Sub2API A 并检查容器状态

A 的验收重点是 sub2a-app、sub2a-postgres 和 sub2a-redis 三个名称是否成套出现。状态为 healthy 只能说明当前健康检查通过,还要继续做数据库和 Redis 的就绪检查。

docker inspect sub2a-app --format '{{.Name}} image={{.Config.Image}} health={{.State.Health.Status}}'

8. 启动 Sub2API B 并检查容器状态

B 使用同一镜像摘要,但不能因此省略独立验收。单独检查 B 的应用容器,可以发现端口冲突、目录挂载错误或服务名替换不完整等问题。

docker inspect sub2b-app --format '{{.Name}} image={{.Config.Image}} health={{.State.Health.Status}}'

9. PostgreSQL 与 Redis 基础就绪检查

应用 healthy 之后,分别从容器内验证 PostgreSQL 是否接受连接。两套数据库都返回 accepting connections,说明初始化阶段已经完成。

docker exec sub2a-postgres pg_isready -U sub2api -d sub2api
docker exec sub2b-postgres pg_isready -U sub2api -d sub2api

10. 镜像、健康状态与数据持久化验收

Redis 检查返回两次 PONG;数据目录容量分别为 A 892K、B 508K。这两个数值是本轮采集时的快照,不应被当作容量上限。

docker exec sub2a-redis redis-cli ping
docker exec sub2b-redis redis-cli ping

du -sh /opt/sub2api-lab/sub2a/data /opt/sub2api-lab/sub2b/data

11. 故障排查与回滚边界

Redis 截图保留了两条 AUTH failed: ERR AUTH <password> called without any password configured for the default user 告警。虽然该检查命令最终退出码为 0,不能据此写成“无告警”。应先核对 Compose 中 Redis 客户端是否错误传入密码,再决定统一启用认证还是移除错误的认证参数;修改前保留当前配置和数据目录备份。

docker compose -f compose.yml -f compose.oidc.yml ps
docker inspect sub2a-app sub2b-app --format '{{.Name}} health={{.State.Health.Status}}'

若只有一套实例异常,先在对应目录停止后回退该实例的配置,不要删除另一套实例的 PostgreSQL 或 Redis 数据目录。

相关文章
猜你喜欢