簡介
搭建Docker私服倉庫,後端采用ceph swift 分布式存儲。使用 Potus 做管理平台. 上文介紹了搭建ceph的詳細步驟,本文将介紹 安裝 CEPH 對象網關以及添加對swift的支援
環境準備:
參考 Docker Private Registry搭建(一)
安裝 CEPH 對象網關
在你的管理節點的工作目錄下,給 Ceph 對象網關節點安裝Ceph對象所需的軟體包。例如:
ceph-common 包是它的一個依賴性,是以 ceph-deploy 也将安裝這個包。 ceph 的指令行工具就會為管理者準備好。為了讓你的 Ceph 對象網關節點成為管理節點,可以在管理節點的工作目錄下執行以下指令(通常這步不需要執行,在前邊的步驟管理節點已經建好了):
ceph-deploy admin node1
建立網關執行個體
在你的管理節點的工作目錄下,使用指令在 Ceph 對象網關節點上建立一個 Ceph對象網關執行個體。舉例如下:
在網關服務成功運作後,你可以使用未經授權的請求來通路端口 7480 ,就像這樣:
http://client-node:7480
如果網關執行個體工作正常,你接收到的傳回資訊大概如下所示(叢集模式下每個節點上都會啟動這個服務):
version="1.0" encoding="UTF-8"?>
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<ID>anonymous</ID>
<DisplayName></DisplayName>
</Owner>
<Buckets>
</Buckets>
</ListAllMyBucketsResult>
在任何時候如果你遇到麻煩,而你也想重新來一次,執行下面的指令來清除配置:
ceph-deploy purge <gateway-node1> [<gateway-node2>]
ceph-deploy purgedata <gateway-node1> [<gateway-node2>]
如果你執行了 purge, 你必須重新安裝 Ceph.
使用網關
通路建立 RADOSGW 使用者
通常在管理節點上執行就可以了,即使叢集模式下也是一樣的。
指令輸出如下:
{
"user_id": "testuser",
"display_name": "First User",
"email": "",
"suspended": ,
"max_buckets": ,
"auid": ,
"subusers": [],
"keys": [{
"user": "testuser",
"access_key": "I0PJDPCIYZ665MW88W9R",
"secret_key": "dxaXZ8U90SXydYzyS5ivamEP20hkLSUViiaR+ZDA"
}],
"swift_keys": [],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"max_size_kb": -,
"max_objects": -
},
"user_quota": {
"enabled": false,
"max_size_kb": -,
"max_objects": -
},
"temp_url_keys": []
}
建立swift使用者
通常在管理節點上執行就可以了,即使叢集模式下也是一樣的。
radosgw-admin subuser create –uid=testuser –subuser=testuser:swift –access=full
輸出類似下面這樣:
"user_id": "testuser",
"display_name": "First User",
"email": "",
"suspended": ,
"max_buckets": ,
"auid": ,
"subusers": [{
"id": "testuser:swift",
"permissions": "full-control"
}],
"keys": [{
"user": "testuser:swift",
"access_key": "3Y1LNW4Q6X0Y53A52DET",
"secret_key": ""
}, {
"user": "testuser",
"access_key": "I0PJDPCIYZ665MW88W9R",
"secret_key": "dxaXZ8U90SXydYzyS5ivamEP20hkLSUViiaR+ZDA"
}],
"swift_keys": [],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"max_size_kb": -,
"max_objects": -
},
"user_quota": {
"enabled": false,
"max_size_kb": -,
"max_objects": -
},
"temp_url_keys": []
}
建立secret key :
通常在管理節點上執行就可以了,即使叢集模式下也是一樣的。
radosgw-admin key create –subuser=testuser:swift –key-type=swift –gen-secret
輸出類似下面這樣:
"user_id": "testuser",
"display_name": "First User",
"email": "",
"suspended": ,
"max_buckets": ,
"auid": ,
"subusers": [{
"id": "testuser:swift",
"permissions": "full-control"
}],
"keys": [{
"user": "testuser:swift",
"access_key": "3Y1LNW4Q6X0Y53A52DET",
"secret_key": ""
}, {
"user": "testuser",
"access_key": "I0PJDPCIYZ665MW88W9R",
"secret_key": "dxaXZ8U90SXydYzyS5ivamEP20hkLSUViiaR+ZDA"
}],
"swift_keys": [{
"user": "testuser:swift",
"secret_key": "244+fz2gSqoHwR3lYtSbIyomyPHf3i7rgSJrF\/IA"
}],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"max_size_kb": -,
"max_objects": -
},
"user_quota": {
"enabled": false,
"max_size_kb": -,
"max_objects": -
},
"temp_url_keys": []
}
注意:叢集模式下swift_secret_key 生成一次就好, 所有的monitor節點上的驗證資訊會相應的同步更新。是以可以友善的支援負載均衡。
測試swift通路
通路的驗證則可以使用
swift
的指令行用戶端。可以通過指令 man swift 擷取更多指令行選項的更多資訊。
執行下面的指令安裝 swift 用戶端,在 Red Hat Enterprise Linux上執行:
sudo install python-setuptools
sudo easy_install pip
sudo pip install --upgrade setuptools
sudo pip install --upgrade python-swiftclient
執行下面的語句驗證:
swift -A http://{IP ADDRESS}:{port}/auth/1.0 -U testuser:swift -K ‘{swift_secret_key}’ list
使用網關伺服器的外網 IP 位址替換其中的 {IP ADDRESS} ,使用建立 swift 使用者時執行的指令 radosgw-admin key create 的輸出替換其中的 {swift_secret_key} 。使用你的 Civetweb 所使用的端口替換其中 {port} ,比如預設是 7480 。如果你不替換這個端口,它的預設值是 80. 舉例如下:
swift -A http://10.19.143.116:7480/auth/1.0 -U testuser:swift -K '244+fz2gSqoHwR3lYtSbIyomyPHf3i7rgSJrF/IA' list
輸出類似如下:
my-new-bucket
有可能不輸出任何資訊,也沒有問題,估計是版本的問題,可以忽略。
參考:http://docs.ceph.org.cn/install/install-ceph-gateway/