採用CivetWeb代替Apache做爲Ceph rgw服務的前端

引言 python

鑑於官方將civetweb合併到rgw代碼中,並將其做爲輕量級的HTTP服務器,我對其進行了測試。本文主要包含相關部署以及測試數據。 web

部署過程
我首先採用yum install ceph-radosgw的方式進行部署,可是在啓動的過程當中老是沒法啓動,我曾在ceph中國社區發帖求助:http://bbs.ceph.org.cn/question/268,可是沒有迴應。後諮詢了幾位相關同行,他們的部署很是簡單,2分鐘的事情。因此無奈之下,我進行源碼編譯部署。背景交代完畢,下面描述具體步驟:
shell

1. 源碼編譯 服務器

連接是我源碼編譯ceph的所有過程,最後make install便可。
http://my.oschina.net/myspaceNUAA/blog/538894
frontend


2. 配置文件設置
調整/etc/ceph/ceph.conf,添加一個SECTION便可。
socket

[client.radosgw.gateway]
host = ceph-2
log file = /var/log/radosgw/client.radosgw.gateway.log
rgw_frontends = civetweb port=80
keyring = /etc/ceph/ceph.client.radosgw.keyring
rgw_socket_path = /var/run/ceph/ceph.radosgw.gateway.civetweb.sock
debug_rgw = 20


3. 啓動RADOSGW服務 tcp

sudo usr/bin/radosgw -n client.radosgw.gateway -c /etc/ceph/ceph.conf  -f --log-to -stderr --debug-rgw=20 --debug-ms=1


4. 狀態檢查 測試

經過netstat命令,能夠看到80端口已被綁定。和其餘監控之間也創建起鏈接。
spa

[root@gnop029-ct-zhejiang_wenzhou-16-12 src]# netstat -anp | grep rados
tcp        0      0 0.0.0.0:80                  0.0.0.0:*                   LISTEN      17873/lt-radosgw    
tcp        0      0 101.71.4.12:61742           101.71.4.28:6816            ESTABLISHED 17873/lt-radosgw    
tcp        0      0 101.71.4.12:51672           101.71.4.28:6812            ESTABLISHED 17873/lt-radosgw    
tcp        0      0 101.71.4.12:47469           101.71.4.29:6844            ESTABLISHED 17873/lt-radosgw    
tcp        0      0 101.71.4.12:56602           101.71.4.27:6804            ESTABLISHED 17873/lt-radosgw    
tcp        0      0 101.71.4.12:51666           101.71.4.29:6808            ESTABLISHED 17873/lt-radosgw    
tcp        0      0 101.71.4.12:44577           101.71.4.29:6804            ESTABLISHED 17873/lt-radosgw


5.程序驗證

首先建立用戶,獲取key,並設置到代碼中
即access_key secret_key
.net

import thread
import sys
import boto
import boto.s3.connection


def isFileExist(filepath):
        return  os.path.exists(filepath)


#key used for access
access_key = 'J8ZN*****AQSAZXN'
secret_key = '3rBM7nQ*****qPlYJTX9xjfnp79jAeIMRQm'

def showobjs(bucketname):
        conn = boto.connect_s3(
                aws_access_key_id = access_key,
                aws_secret_access_key = secret_key,
                host = '101.71.4.12',
                is_secure=False,
                calling_format = boto.s3.connection.OrdinaryCallingFormat(),
                )


        bucket = conn.create_bucket(bucketname)

        i = 0
        for key in bucket.list():
                i=i+1
                print "%d\t %s %d %s\n"%(i,key.name, key.size, key.last_modified)


if __name__=='__main__':
        bucketname = sys.argv[1]
        print "FILEPATH: %s"%(bucketname)
        showobjs(bucketname)
相關文章
相關標籤/搜索