如何为 Sonatype Nexus 开启无限存储?

原创
2020/11/24 10:06
阅读数 976

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 只需两步:

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>.myqcloud.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

展开阅读全文
打赏
1
1 收藏
分享
加载中
2020/11/24 10:07
回复
举报
更多评论
打赏
1 评论
1 收藏
1
分享
返回顶部
顶部