CEPH - ubuntu install radosgw by manual
如果安裝的node是完全沒安裝過ceph的需加入下列到source.list
$ wget -q -O- https://raw.github.com/ceph/ceph/master/keys/autobuild.asc | sudo apt-key add -
echo deb http://gitbuilder.ceph.com/apache2-deb-$(lsb_release -sc)-x86_64-basic/ref/master $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph-apache.list
$ echo deb http://gitbuilder.ceph.com/libapache-mod-fastcgi-deb-$(lsb_release -sc)-x86_64-basic/ref/master $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph-fastcgi.list
|
我們在這邊是把radosgw安裝至ceph-mon上,所以跳過上述步驟直接安裝
$ sudo apt-get update && sudo apt-get install apache2 libapache2-mod-fastcgi
# 增加一行ServerName {fqdn},這邊是ceph-mon $ sudo vim /etc/apache2/apache2.conf ServerName ceph-mon $ sudo a2enmod rewrite
$ sudo a2enmod fastcgi
$ sudo service apache2 restart
# 安裝radosgw,radosgw-agent
$ sudo apt-get install radosgw radosgw-agent
|
在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
rgw socket path = /var/run/ceph/ceph.radosgw.gateway.fastcgi.sock
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 |
加入一個ceph object gateway腳本
$ vim /var/www/s3gw.fcgi
#!/bin/sh
exec /usr/bin/radosgw -c /etc/ceph/ceph.conf -n client.radosgw.gateway
# 修改權限
$ sudo chmod +x /var/www/html/s3gw.fcgi
$ sudo chown www-data:www-data /var/www/html/s3gw.fcgi $ sudo mkdir -p /var/lib/ceph/radosgw/ceph-radosgw.gateway |
建立radosgw的sites-available conf
# vim /etc/apache2/sites-available/rgw.conf
<VirtualHost *:80>
ServerName ceph-mon
ServerAlias *.ceph-mon
DocumentRoot /var/www/html
RewriteEngine On
RewriteRule ^/(.*) /s3gw.fcgi?%{QUERY_STRING} [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
<IfModule mod_fastcgi.c>
<Directory /var/www>
Options +ExecCGI
AllowOverride All
SetHandler fastcgi-script
Order allow,deny
Allow from all
AuthBasicAuthoritative Off
</Directory>
</IfModule>
AllowEncodedSlashes On
ErrorLog /var/log/apache2/error.log
CustomLog /var/log/apache2/access.log combined
ServerSignature Off
</VirtualHost>
# 讓rgw.conf生效
# 重啟apache2 ,啟動radosgw
$ sudo a2ensite rgw.conf
$ sudo a2dissite default
$ sudo service apache2 restart
$ sudo /etc/init.d/radosgw start
|
==利用s3測試radosgw是否安裝成功==
如果是用ceph-deploy安裝radosgw
# 先建立使用者
$ 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 = 80,
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
|
留言
張貼留言