Sonatype Nexus 运维的两大痛点
使用 Sonatype Nexus 作为 maven 私服,有两个无法避免的运维问题。
一个是为了避免单点故障,要做服务及数据备份,比如:跨机房备份。
另一个是随着时间的推移,数据量不断增大,磁盘空间会逐渐变得不足,每次在面对这个问题的时候,不得不申请一个磁盘更大的服务器,然后做服务和数据的迁移。
于是想着有没有好的方式解决存储的问题呢?
答案是不使用本地存储,使用对象存储,对象存储有着无限的存储空间,让你再也没有磁盘空间不足的困扰。
对于 Sonatype Nexus 3,除了 S3,国内外其他云厂商的对象存储兼容吗?
Sonatype Nexus 2 只支持本地存储,Sonatype Nexus 3 从3.12版本开始,blob store 除了支持本地存储外,还支持 S3。
其中,Amazon S3 是 AWS 提供的对象存储服务,经过多年的发展,S3 协议在对象存储行业事实上已经成为标准。
同时,与 Sonatype Nexus 2 相比,Sonatype Nexus 3 的存储格式也发生了变化。
其他国外云厂商,对于 Google Cloud 和 Azure Cloud 的对象存储,GitHub 上有单独的 Sonatype Nexus 3 开源插件支持。
而对于国内的云厂商,在 GitHub 上并没有找到对应的 Sonatype Nexus 3 插件。
那么,如果想要使用国内的替代方案,那它必须与 AWS S3 兼容,或者需要写一个 Sonatype Nexus 3 的插件。
国内尝试了不同云厂商的对象存储服务:腾讯云对象存储 COS、百度云对象存储 BOS、阿里云对象存储 OSS。
只有使用腾讯云的对象存储 COS 才能在 Sonatype Nexus3 上成功创建 blob store,其他的皆以失败告终。
Sonatype Nexus 3 腾讯云 COS 开启无限存储
下面使用腾讯云 COS 创建 blob store,并验证 Sonatype Nexus 3 基本功能是否正常,步骤如下:
1、使用 docker 启动一个 Sonatype Nexus 3 环境
docker 的出现简化了应用的安装,使用 docker 安装 nexus3 只需两步:
代码语言:javascript复制mkdir ~/Desktop/nexus-data
docker run -d -p 8081:8081 --name nexus -v ~/Desktop/nexus-data:/nexus-data sonatype/nexus3
2、腾讯云上新建一个 COS Bucket
登陆腾讯云,在控制台创建一个 Bucket
3、Sonatype Nexus 3 新建 blob store
- Type 选择 S3,并填写 Name、Region、Bucket、Access Key ID、Secret Access Key、Endpoint URL 等信息
- 其中 Region 需手动输入,不要下拉选择
- Access Key ID 和 Secret Access Key 从腾讯云 API 密钥管理(https://console.cloud.tencent.com/cam/capi)处获取
- Endpoint URL 为: https://cos.<Region>.myzijiebao.com
4、Sonatype Nexus 3 新建 Repository,blob store 选择刚才创建的 blob store
5、往刚才创建的仓库上传一个组件,观察是否能上传成功,并查看 COS 内容
往刚才创建的仓库上传了一个组件,在 UI 上可以正常浏览,并可以看到 blob store 的数据统计信息。
查看腾讯云 COS 存储桶中的内容,截图如下:
参考
Dockerized version of Nexus Repo Manager 3
https://github.com/sonatype/docker-nexus3
Nexus Repository 3.12: Support for S3 Blob Stores
https://blog.sonatype.com/nexus-repository-3.12-support-for-s3-blob-stores
Nexus Repository Manager Blobstore backed by Google Cloud Storage
https://github.com/sonatype-nexus-community/nexus-blobstore-google-cloud
Nexus Repository Manager Blobstore backed by Azure Blob Cloud Storage
https://github.com/sonatype-nexus-community/nexus-blobstore-azure-cloud
在兼容 S3 的第三方应用中使用 COS 的通用配置
https://cloud.tencent.com/document/product/436/41284