Ceph radosgw 安裝配置

Ceph radosgw對象存儲的接口,研究配置了許久,現分享如下。首先配置radosgw的前提,是你已經成功的配置好了Ceph集羣,通過ceph –s 查看ceph集羣,處於health狀態。在這裏,ceph集羣的auth的配置爲none,所以有關auth的部分,也就是訪問權限相關的keying部分的配置在這裏省略。

1)創建rgw相關的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

2)配置 ceph.conf
這裏配置在ceph.conf裏添加有個radowgw的配置。radosgw有兩種方式運行,一種是直接用civetweb的方式,其內置了一個比較小巧的http服務器mongoose,這種方式配置比較簡單,不需要配置Apache httpd服務器,其配置如下:

[client.radosgw.gateway]
host = node1
log file = /var/log/ceph/client.radosgw.gateway.log
rgw_frontends =civetweb port=80
rgw print continue = false
特別說明的是civetweb默認的端口是7480, 這裏因爲用s3cmd, 所以改爲80,這裏的node1是需要改成你自己的host名字

另一種方式就是 apache httpd + factcgi的方式,其配置如下:
[client.radosgw.gateway]
host = node1
log file = /var/log/ceph/client.radosgw.gateway.log
rgw frontends = fastcgi socket_port=9000 socket_host=0.0.0.0
rgw print continue = false

注意,這裏的node1,要替換成你自己的服務器
3)啓動 radosgw
radosgw -c /etc/ceph/ceph.conf -n client.radosgw.gateway
主要,這裏的-n後跟的名字,是ceph.conf 裏配置的。如果出錯,可以查看日誌/var/log/ceph/client.radosgw.gateway.log的提示,做相應的處理。

4) 配置 httpd
如果用的是civetweb方式,這一步可以省略。

在目錄/etc/httpd/conf.d 裏添加文件rgw.conf

<VirtualHost *:80>
ServerName 182.92.171.199
DocumentRoot /var/www/html

ErrorLog /var/log/httpd/rgw_error.log
CustomLog /var/log/httpd/rgw_access.log combined

RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]

SetEnv proxy-nokeepalive 1

ProxyPass / fcgi://182.92.171.199:9000/
</VirtualHost>

這樣這裏的ServerName是http server name,如果有多個ip的情況,最好直接寫ip,這裏182.92.171.199的IP就是node1的ip,這裏的ProxyPass 的fcgi 需要改成在ceph.conf裏配置的ip和port

5) 啓動httpd服務器
如果用的是civetweb方式,這一步可以省略
service httpd restart

6)創建一個用戶
radosgw-admin user create –uid=cephtest –display-name=”ceph test” –[email protected]
顯示:
{ “user_id”: “cephtest”,
“display_name”: “ceph test”,
“email”: “[email protected]”,
“suspended”: 0,
“max_buckets”: 1000,
“auid”: 0,
“subusers”: [],
“keys”: [
{ “user”: “cephtest”,
“access_key”: “8JGTP1714JRRAPRDLBI4“,
“secret_key”: “i4O+yJMNii87ruLMwcIIYbjLmKIUaoSO1svQOoB9“}],
“swift_keys”: [],
“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”: []}
注意:如果生成的key中有”\”,最後把這個user刪掉,再重新生成直到不含”\”:

7)配置s3cmd
$vim ~/.s3cfg
[default]
access_key = PPA789F4W5ANH3COC51O
bucket_location = US
cloudfront_host = cloudfront.amazonaws.com
cloudfront_resource = /2010-07-15/distribution
default_mime_type = binary/octet-stream
delete_removed = False
dry_run = False
encoding = UTF-8
encrypt = False
follow_symlinks = False
force = False
get_continue = False
gpg_command = /usr/bin/gpg
gpg_decrypt = %(gpg_command)s -d –verbose –no-use-agent –batch –yes –passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_encrypt = %(gpg_command)s -c –verbose –no-use-agent –batch –yes –passphrase-fd %(passphrase_fd)s -o %(output_file)s %(input_file)s
gpg_passphrase =
guess_mime_type = True
host_base = node1
host_bucket = %(bucket)s.node1
human_readable_sizes = False
list_md5 = False
log_target_prefix =
preserve_attrs = True
progress_meter = True
proxy_host =
proxy_port = 0
recursive = False
recv_chunk = 4096
reduced_redundancy = False
secret_key = kqHLxnI14WqSl0Eh5akr73evrqmFZjfxYxUmG04h
send_chunk = 4096
simpledb_host = sdb.amazonaws.com
skip_existing = False
socket_timeout = 10
urlencoding_mode = normal
use_https = False
verbosity = WARNING

在這裏,access_key 和 secret_key 就是 radosgw-admin創建用戶獲得的,也可以用以下命令獲取。hostbase 和 hostbucket 裏的 node1都需要修改成你自己的server name
radosgw-admin user info –uid=cephtest

8)測試
首先用命令檢查以下http 服務器是否正常工作:
curl node1
如果正確,應該返回:

<?xml 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>

如果不正確,那麼http的服務器有問題。如果是apache http的服務器,那麼查看服務器的配置的日誌,查找相應的問題。
/etc/httpd/logs/rgw_error.log

一般的常遇見問題都是:
proxy: FCGI: attempt to connect to 182.92.171.199:9000 (182.92.171.199) failed
顯示連不上FCGI,那麼看以下ceph.conf配置:
rgw frontends = fastcgi socket_port=9000 socket_host=0.0.0.0
host和 port是否一致。

如果是civetweb方式啓動,可以查看你在ceph.conf配置的日誌 /var/log/ceph/client.radosgw.gateway.log來解決問題。

如果上述沒有問題,可以用命令
s3cmd la
這麼命令是list 所有的bucket下的對象

s3cmd mb s3://BUCKET 創建一個bucket,目前遇到的一個問題是,只能創建“BUCKET”爲前綴的bucket,這個不知道爲啥,還需要進一步研究和配置。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章