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
{
$ 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"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": [] }
)
|
其他常用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
|
留言
張貼留言