天天看點

Docker Private Registry搭建(二)

簡介

搭建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/

繼續閱讀