如何爲 Sonatype Nexus 開啓無限存儲?

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章