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 的通用配置