前言
雖然nexus支持使用ceph作為Blobstore忿峻,但實(shí)際配置過程中還是會(huì)有不少的坑财松。主要是大多數(shù)文檔以S3作為例子堪伍,而忽略了對(duì)接ceph時(shí)會(huì)存在一些特殊的情況磨确。
版本
Nexus OSS 3.16.2-01
Ceph Luminous 12.2.12
配置
具體配置情況如下推掸,請(qǐng)注意紅色框框部分:
上面的配置有兩點(diǎn)需要注意:
- endpoint需要添加ip訪問方式桶蝎,不然默認(rèn)的情況下,會(huì)使用子域名谅畅。當(dāng)然如果你配置了子域名的情況登渣,忽略這里的提醒。
-
Ceph Luminous版本目前是不支持S3的Lifecycle模式的毡泻,因此這里需要設(shè)置為-1胜茧。否則會(huì)導(dǎo)致s3 plugin在同步 lifecycle 配置的時(shí)候失敗,nexus啟動(dòng)不起來。報(bào)錯(cuò)可能如:
不小心配置錯(cuò)了
加入你不小心配置錯(cuò)了(例如Ceph不支持子域名呻顽,endpoint卻填了域名形式的endpoint)雹顺,并保存了。在沒有重啟前廊遍,一切正常嬉愧,只是配置了的Blobstore不能用。但是一旦Nexus停掉喉前,就再也起不來了没酣。因?yàn)镹exus在初始化錯(cuò)誤的Blobstore時(shí),總是報(bào)錯(cuò)卵迂,初始化失敗裕便,從而導(dǎo)致啟動(dòng)失敗。
這時(shí)候就需要手動(dòng)干預(yù)见咒,從數(shù)據(jù)庫層面刪掉錯(cuò)誤的配置偿衰。Nexus底層用的時(shí)Orientdb,具體操作如下:
操作
-
報(bào)錯(cuò)日志如下:
- 啟動(dòng) orientdb console
# 先進(jìn)入安裝目錄
java -jar ./lib/support/nexus-orient-console.jar
- 連接相關(guān)的 database
# 后面是默認(rèn)的賬號(hào)密碼
connect plocal:/數(shù)據(jù)目錄/nexus/sonatype-work-latest/nexus3/db/config admin admin
- 強(qiáng)制刪除 s3 blobstore 相關(guān)的記錄
delete from repository_blobstore where type = 'S3'
Lifecycle配置錯(cuò)誤怎么辦
跟上面的類似改览,也是直接修改Orientdb
- 先禁掉 s3 blob 中的過期配置:
update repository_blobstore set attributes.s3.expiration = -1 where name = 'ceph-blob'
- 然后再去掉 ceph 中的 lifecycle 配置
s3cmd dellifecycle s3://nexus-blob
- 啟動(dòng) nexus 即可下翎。