nexus使用Ceph作為Blobstore

前言

雖然nexus支持使用ceph作為Blobstore,但實際配置過程中還是會有不少的坑。主要是大多數文檔以S3作為例子,而忽略了對接ceph時會存在一些特殊的情況。

版本

Nexus OSS 3.16.2-01
Ceph Luminous 12.2.12

配置

具體配置情況如下,請注意紅色框框部分:


配置1
配置2

上面的配置有兩點需要注意:

  1. endpoint需要添加ip訪問方式,不然默認的情況下,會使用子域名。當然如果你配置了子域名的情況,忽略這里的提醒。
  2. Ceph Luminous版本目前是不支持S3的Lifecycle模式的,因此這里需要設置為-1。否則會導致s3 plugin在同步 lifecycle 配置的時候失敗,nexus啟動不起來。報錯可能如:


    Lifecycle同步失敗報錯

不小心配置錯了

加入你不小心配置錯了(例如Ceph不支持子域名,endpoint卻填了域名形式的endpoint),并保存了。在沒有重啟前,一切正常,只是配置了的Blobstore不能用。但是一旦Nexus停掉,就再也起不來了。因為Nexus在初始化錯誤的Blobstore時,總是報錯,初始化失敗,從而導致啟動失敗。

這時候就需要手動干預,從數據庫層面刪掉錯誤的配置。Nexus底層用的時Orientdb,具體操作如下:

操作

  1. 報錯日志如下:


    錯誤日志
  2. 啟動 orientdb console
# 先進入安裝目錄
java -jar ./lib/support/nexus-orient-console.jar
  1. 連接相關的 database
# 后面是默認的賬號密碼
connect plocal:/數據目錄/nexus/sonatype-work-latest/nexus3/db/config admin admin
  1. 強制刪除 s3 blobstore 相關的記錄
delete from repository_blobstore where type = 'S3'

Lifecycle配置錯誤怎么辦

跟上面的類似,也是直接修改Orientdb

  1. 先禁掉 s3 blob 中的過期配置:
update repository_blobstore set attributes.s3.expiration = -1  where name = 'ceph-blob'
  1. 然后再去掉 ceph 中的 lifecycle 配置
s3cmd dellifecycle s3://nexus-blob
  1. 啟動 nexus 即可。
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容