CEPH - ubuntu install radosgw by ceph-depoy

首先,請先確保admin-node上的ceph-depoy版本是否支援安裝rgw(需1.5.23之後的版本)
$ ceph-deploy --version 1.5.33

安裝radosgw
# 安裝radosgw套件到ceph-mon上
$ ceph-deploy install --rgw ceph-mon

# 建立並啟動ceph-mon上的radosgw
$ ceph-deploy rgw create ceph-mon

在ceph-mon上執行以下動作
# 建立user跟設定權限,並產生keyring到/etc/ceph底下
$ sudo ceph auth get-or-create client.radosgw.gateway osd 'allow rwx' mon 'allow rwx' -o /etc/ceph/ceph.client.radosgw.keyring

# 或者使用以下cmd
$ sudo ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.radosgw.gateway --gen-key

$ sudo ceph-authtool -n client.radosgw.gateway --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring

# 把key加入cluster中

$ sudo ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.radosgw.gateway -i /etc/ceph/ceph.client.radosgw.keyring

加入radosgw section
$ vim /etc/ceph/ceph.conf

[client.radosgw.gateway] host = ceph-mon keyring = /etc/ceph/ceph.client.radosgw.keyring log file = /var/log/ceph/radosgw.log rgw dns name = ceph-mon

並把新的ceph.conf複製到其他ceph host上
# 我們這邊是到admin node的ceph-deploy工具來複製 $ ceph-deploy --overwrite-conf config pull ceph-mon
$ ceph-deploy --overwrite-conf config push ceph-1 ceph-2 ceph-3

==Note==

如果是新版的radosgw會自動建立相關的radosgw pool,如果沒有自動建立需我們自己創立
# 利用cmd顯示目前的pool,如果有相關rgw的pool即可跳過
$ ceph df GLOBAL: SIZE AVAIL RAW USED %RAW USED 9182M 9041M 141M 1.54 POOLS: NAME ID USED %USED MAX AVAIL OBJECTS rbd 0 0 0 3012M 0 .rgw.root 1 1636 0 3012M 4 default.rgw.control 2 0 0 3012M 8 default.rgw.data.root 3 616 0 3012M 2 default.rgw.gc 4 0 0 3012M 32 default.rgw.log 5 0 0 3012M 127 default.rgw.users.uid 6 505 0 3012M 2 default.rgw.users.keys 19 12 0 3012M 1 default.rgw.meta 20 1954 0 3012M 5 default.rgw.users.swift 21 12 0 3012M 1 default.rgw.buckets.index 22 0 0 3012M 1

# 沒有的話請複製以下cmd手動建立pool
ceph osd pool create .rgw 128 128
ceph osd pool create .rgw.root 128 128
ceph osd pool create .rgw.control 128 128
ceph osd pool create .rgw.gc 128 128
ceph osd pool create .rgw.buckets 128 128
ceph osd pool create .rgw.buckets.index 128 128
ceph osd pool create .log 128 128
ceph osd pool create .intent-log 128 128
ceph osd pool create .usage 128 128
ceph osd pool create .users 128 128
ceph osd pool create .users.email 128 128
ceph osd pool create .users.swift 128 128
ceph osd pool create .users.uid 128 128

==利用s3測試radosgw是否安裝成功==


如果是用ceph-deploy安裝radosgw 預設port是7480
# 先建立使用者
$ sudo radosgw-admin user create --uid="testuser" --display-name="First User"

# 再建立swift使用者
$ sudo radosgw-admin subuser create --uid=testuser --subuser=testuser:swift --access=full

# 產生私密
$ sudo radosgw-admin key create --subuser=testuser:swift --key-type=swift --gen-secret

# 注意:如果生成的key中有"\",最后把这个user删掉,再重新生成直到不含"\": $ radosgw-admin user rm --uid=testuser
$ sudo apt-get install python-boto

$ radosgw-admin user info --uid=testuser

{
"user_id": "testuser",
"display_name": "First User",
"email": "",
"suspended": 0,
"max_buckets": 1000,
"auid": 0,
"subusers": [
{
"id": "testuser:swift",
"permissions": "full-control"
}
],
"keys": [
{
"user": "testuser",
"access_key": "209P7GGVYLLEKDBISCKA",
"secret_key": "rX4cglqBofChInsTUomUgOAFycmv9yv08vOIhRrH"
}
],
"swift_keys": [
{
"user": "testuser:swift",
"secret_key": "fwo6YU2pazqBY1VUuVG1TBMebCNNQiBLhpAr70aN"
}
],
"caps": [],
"op_mask": "read, write, delete",
"default_placement": "",
"placement_tags": [],
"bucket_quota": {
"enabled": false,
"max_size_kb": -1,
"max_objects": -1
},
"user_quota": {
"enabled": false,
"max_size_kb": -1,
"max_objects": -1
},
"temp_url_keys": []
}
$ vi s3test.py #複製以下內容至s3test.py import boto import boto.s3.connection access_key = '209P7GGVYLLEKDBISCKA' secret_key = 'rX4cglqBofChInsTUomUgOAFycmv9yv08vOIhRrH' conn = boto.connect_s3( aws_access_key_id = access_key, aws_secret_access_key = secret_key, host = 'ceph-mon', port = 7480, is_secure=False, calling_format = boto.s3.connection.OrdinaryCallingFormat(), ) bucket = conn.create_bucket('my-new-bucket') for bucket in conn.get_all_buckets(): print "{name}\t{created}".format( name = bucket.name, created = bucket.creation_date
)
其他常用radosgw cmd
# 列出所有的user
$ radosgw-admin metadata list user

# 列出所有的bucket
$ radosgw-admin buckets list

# 列出特定使用者的資訊
$ radosgw-admin user info --uid=testuser

# 列出特定bucket的所有object
$ rados --pool=.rgw.buckets ls

# 刪除特定buckets的object
$ rados --pool=.rgw.buckets ls | grep __shadow_ | xargs rados --pool=.rgw.buckets rm

==參考連結==

留言

這個網誌中的熱門文章

Python - 計算特定目錄底下的檔案以及目錄數量

PHP - 產生qrcode

devstack安裝all in one openstack(pike)