nexus使用Ceph作為Blobstore

前言

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

版本

Nexus OSS 3.16.2-01
Ceph Luminous 12.2.12

配置

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


配置1
配置2

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

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


    Lifecycle同步失敗報錯

不小心配置錯了

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

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

操作

  1. 報錯日志如下:


    錯誤日志
  2. 啟動 orientdb console
# 先進入安裝目錄
java -jar ./lib/support/nexus-orient-console.jar
  1. 連接相關(guān)的 database
# 后面是默認的賬號密碼
connect plocal:/數(shù)據(jù)目錄/nexus/sonatype-work-latest/nexus3/db/config admin admin
  1. 強制刪除 s3 blobstore 相關(guān)的記錄
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 即可。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容