這篇文章主要介紹Ceph對象存儲的示例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
先說說環境部署吧,我之前已經部署好了ceph環境就是沒部署網關服務器。所以這里就從部署gateway開始
按照官方文檔一步一步來(默認都是用root賬戶):
安裝apache,radosgw,這里就不贅述了,只是在加載proxy_fcgi_module的時候,如果按照官網的步驟出現了目錄錯誤相關的問題。所以后面我直接在/etc/httpd/conf/httpd.conf文件中直接加載,沒有用判斷相關,不過注意順序要放在對應的proxy那一段的最后。
LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so LoadModule cache_module modules/mod_cache.so LoadModule suexec_module modules/mod_suexec.so
配置:
一.創建一個用戶和keyring,在ceph的admin機器上(mon)執行以下命令
1.創建keyring
ceph-authtool --create-keyring /etc/ceph/ceph.client.radosgw.keyring chmod +r /etc/ceph/ceph.client.radosgw.keyring
2.創建gateway user(client.radosgw)并生成key
ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.radosgw.gateway --gen-key
3.Add capabilities to the key
ceph-authtool -n client.radosgw.gateway --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring
4.添加生成的key到ceph集群(這里比較奇怪的是在ceph.client.admin.keyring文件中看不到client.radosgw)
ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.radosgw.gateway -i /etc/ceph/ceph.client.radosgw.keyring
5,拷貝keyring到gateway服務器(deploy)
scp /etc/ceph/ceph.client.radosgw.keyring deploy:/etc/ceph/ceph.client.radosgw.keyring
二.創建gateway需要的池,這一步我省略了,因為測試就用默認的配置,具體的pg該怎么設置還沒有研究。到時候會自動生成
三.添加網關配置到ceph.conf,(完了這一步之后,重啟ceph集群)
在admin節點上的/etc/ceph/ceph.conf文件中添加
[client.radosgw.gateway] host = {hostname} keyring = /etc/ceph/ceph.client.radosgw.keyring rgw socket path = "" log file = /var/log/radosgw/client.radosgw.gateway.log rgw frontends = fastcgi socket_port=9000 socket_host=0.0.0.0 rgw print continue = false
2.分發新的ceph.conf文件到所有機器中
ceph-deploy --overwrite-conf config push
3.拷貝ceph.client.admin.keyring文件到網關服務器
scp /etc/ceph/ceph.client.admin.keyring deploy:/etc/ceph/
四.啟動RADOSGW服務
在網關服務器(deploy)創建目錄
mkdir -p /var/lib/ceph/radosgw/ceph-radosgw.gateway
2.修改相關權限
chown apache:apache /var/run/ceph chown apache:apache /var/log/radosgw/client.radosgw.gateway.log
3.啟動服務
/etc/init.d/ceph-radosgw start
五.創建網關配置文件(apache相關)
vi /etc/httpd/conf.d/rgw.conf
<VirtualHost *:80> ServerName localhost DocumentRoot /var/www/html ErrorLog /var/log/httpd/rgw_error.log CustomLog /var/log/httpd/rgw_access.log combined # LogLevel debug RewriteEngine On RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] SetEnv proxy-nokeepalive 1 ProxyPass / fcgi://localhost:9000/ </VirtualHost>
之后重啟apache服務
sudo service httpd restart
六.創建radosgw用戶
radosgw-admin user create --uid="testuser" --display-name="First User" radosgw-admin subuser create --uid=testuser --subuser=testuser:swift --access=full radosgw-admin key create --subuser=testuser:swift --key-type=swift --gen-secret
終端會生成如下的信息,記錄了訪問網關的需要的key,secret等相關信息。
{ "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:swift", "access_key": "CGZCR5W392RCBMY0DSCY", "secret_key": "" }, { "user": "testuser", "access_key": "G54W4H94RYL2GGZ96PHF", "secret_key": "kyMAW8A9MmysFz7XgUFHuAFtYcNGGQci9DCfNU1V" } ], "swift_keys": [ { "user": "testuser:swift", "secret_key": "5SnFvgi3VGgcuODSSez92ruB1Qx7vc8oL4GLVFas" } ], "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": [] }
到此就算配置完成了。接下是測試訪問了:
一,S3訪問:
安裝python-boto
yum install python-boto vi s3test.py
import boto import boto.s3.connection access_key = 'I0PJDPCIYZ665MW88W9R' secret_key = 'dxaXZ8U90SXydYzyS5ivamEP20hkLSUViiaR+ZDA' conn = boto.connect_s3( aws_access_key_id = access_key, aws_secret_access_key = secret_key, host = 'deploy', 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,)
注意根據自己的實際情況修改access_key,secret_key,host
運行后就會產生一個.rgw.buckets.index池,在池下有一個叫對應my-new-bucket的對象(名字不一樣)??赏ㄟ^以下命令查看
rados lspools rados ls -p .rgw.buckets.index
2.swift訪問
安裝:
yum install python-setuptools easy_install pip pip install --upgrade setuptools pip install --upgrade python-swiftclient
swift -A http://10.19.143.116/auth/1.0 -U testuser:swift -K ‘244+fz2gSqoHwR3lYtSbIyomyPHf3i7rgSJrF/IA’ list
注意ip要換成網關服務器ip,后面的key也要根據自己的情況換掉。成功之后應該可以看到之前產生的bucket
my-new-bucket
以上是“Ceph對象存儲的示例分析”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。