2. Nexus 架构:单节点架构、高可用架构、存储后端(Blob Store)设计
在生产环境中,Nexus Repository Manager 的架构设计直接决定了制品库的可用性、数据安全性和运维复杂度。本章将深入剖析 Nexus 的三种核心架构模式,并重点讲解存储后端(Blob Store)的设计原则与最佳实践。
2.1 单节点架构
单节点架构是 Nexus 最基础的部署形态,适用于开发测试环境或对可用性要求不高的场景。所有组件(Web UI、API、任务调度、Blob Store)运行在同一台服务器上。
适用场景: 小型团队(< 20人)、非关键业务、POC(概念验证)阶段。
单节点架构关键特征
| 维度 | 说明 |
|---|---|
| 数据库 | 内嵌 OrientDB,不支持外部数据库切换 |
| 存储 | 本地文件系统或挂载的 NFS/S3 作为 Blob Store |
| 高可用 | 无,宕机即服务中断 |
| 备份 | 需手动备份 Blob Store + 数据库目录 |
| 升级 | 需停机维护,回滚复杂 |
⚠ 风险提示: 单节点架构下,OrientDB 数据库文件与 Blob Store 文件耦合在同一主机。一旦磁盘损坏,制品数据和元数据可能同时丢失,恢复难度极大。建议至少配置远程 Blob Store(如 S3)实现存储解耦。
2.2 高可用架构
Nexus 官方推荐的高可用方案基于 共享 Blob Store + 负载均衡 模式,通过多节点横向扩展消除单点故障。
核心原则: 无共享架构(Shared-Nothing)的变体——共享存储,无共享计算。每个 Nexus 节点拥有独立的 OrientDB 实例,但共享同一个 Blob Store。
高可用架构部署清单
- 负载均衡层: 配置健康检查(/service/rest/v1/status),启用会话亲和性(可选)。
- Nexus 节点: 所有节点使用相同的
nexus.properties配置,指向同一 Blob Store。 - 共享存储: 推荐使用 AWS S3 或兼容对象存储(MinIO),避免 NFS 锁竞争问题。
- 数据库: 每个节点独立运行 OrientDB,元数据不共享。上传/删除操作通过 Blob Store 的原子操作同步。
- 监控: 配置节点级告警(CPU、内存、磁盘、Blob Store 延迟)。
💡 最佳实践: 生产环境建议至少部署 2 个 Nexus 节点,配合 3 副本的 S3 Blob Store。节点数不建议超过 4 个,否则 OrientDB 的协调开销会显著增加。
2.3 存储后端(Blob Store)设计
Blob Store 是 Nexus 存储制品二进制文件的抽象层。其设计直接影响性能、成本和灾难恢复能力。
2.3.1 Blob Store 类型对比
| 类型 | 存储后端 | 适用场景 | 关键限制 |
|---|---|---|---|
| File | 本地磁盘 / NFS 挂载 | 单节点、低延迟需求 | NFS 锁性能差,不支持跨区域 |
| S3 | AWS S3 / MinIO / Ceph RGW | 高可用、多节点、云原生 | 需配置 IAM 权限,网络延迟较高 |
| Azure Blob | Azure Storage | Azure 生态用户 | 仅 Azure 环境 |
| Google Cloud Storage | GCS | GCP 生态用户 | 仅 GCP 环境 |
2.3.2 Blob Store 配置示例(S3)
# nexus.properties 关键配置
nexus.blobstores.s3.default.bucket=my-nexus-blobstore
nexus.blobstores.s3.default.region=us-east-1
nexus.blobstores.s3.default.prefix=prod/
nexus.blobstores.s3.default.expiration=7
nexus.blobstores.s3.default.encryption=AES256
2.3.3 Blob Store 设计原则
- 存储与计算分离: 始终将 Blob Store 独立于 Nexus 节点部署,便于节点扩缩容。
- 对象存储优先: 高可用架构下,S3 兼容存储是首选。NFS 在并发写入时容易出现文件锁超时。
- 生命周期管理: 配置 Blob Store 的过期策略,自动清理未使用的临时文件(如上传中断的碎片)。
- 加密与合规: 启用服务端加密(SSE-S3 或 SSE-KMS),敏感制品建议额外使用客户端加密。
- 监控指标: 关注 Blob Store 的
请求延迟、错误率、存储用量,设置对应告警阈值。
⚠ 常见陷阱: 不要将 Blob Store 和 OrientDB 数据库放在同一块磁盘上。数据库的 I/O 竞争会导致 Nexus 任务调度延迟,严重时引发节点心跳超时。
2.4 架构选型决策矩阵
| 需求 | 单节点 | 高可用(S3 Blob Store) |
|---|---|---|
| 可用性 SLA | 99.5% 以下 | 99.95% 以上 |
| 节点故障恢复时间 | 小时级(需重建) | 分钟级(自动摘除) |
| 数据持久性 | 依赖单盘 RAID | 依赖 S3 11个9的持久性 |
| 运维复杂度 | 低 | 中(需管理负载均衡和对象存储) |
| 成本(3年TCO) | 低(1台服务器) | 中(2台服务器 + S3 存储费) |
💡 选型建议: 如果团队规模超过 50 人,或制品库承载 CI/CD 核心链路,请直接选择高可用架构。单节点架构仅适合个人开发或内部工具验证。