三种Cephrgw前端的配置⽅式
rgw 概述
Ceph 通过radosgw提供RESTFul HTTP API接⼝⽀持对象存储能⼒,radosgw构建在librados之上,兼容Amazon S3以及Opensack Swift。
radosgw本质上是⼀个客户端程序,提供FastCGI 服务。作为⼀个客户端程序,需要满⾜如下要求:
⼀个实例名称,默认为:gateway
⼀个合法⽤户
多个存储池
⼀个数据⽬录
在f中添加⼀个配置项
前端配置⽂件
radosgw⽀持以Apache、Civetweb、Nginx作为前端。Civetweb是默认前端,通过修改f配置⽂件能够很容易的替换为Apache,通过配置能也以nginx作为前端。
下⾯分别给出centos7上rgw的安装配置过程
安装
通过ceph-deploy可以⽅便的在rgw node上安装rgw包:
#> ceph-deploy --rgw install {rgw-node-name}
创建⽤户
每个rgw实例都需要⼀个授权⽤户及key,下⾯的例⼦中创建了⼀个名为gateway的⽤户,并将密钥⽂件存储在/etc/ceph⽬录下
#> ceph auth get-or-create client.radosgw.gateway osd 'allow rwx' mon 'allow rwx' -o /etc/ceph/ceph.client.radosgw.keyring
创建存储池
rgw需要存储池来存储数据,如果授权⽤户具有相关权限,rgw将会⾃动创建存储池,如果使⽤默认的区域(region)和可⽤区(zone),将包含如下的池:
.
.l
.
.rgw.buckets
.rgw.buckets.index
.a
.log
.intent-log
.usage
.users
.ail
.users.swift
.users.uid
当然,您也可以⼿动创建各个存储池:
#> ceph osd pool create {poolname}{pg-num}{pgp-num}{replicated | erasure} [{erasure-code-profile}] {ruleset-name}{ruleset-number}添加rgw配置
在f中添加⼀个名为gateway的实例。
Civetweb
如果以civetweb作为前端,配置如下:
[client.radosgw.gateway]
host = {hostname}
keyring = /etc/ceph/ceph.client.radosgw.keyring
log file = /var/log/radosgw/client.radosgw.gateway-node1.log
nginx部署前端项目rgw_frontends = civetweb port=80
civetweb默认监听在7480端⼝,上述的配置中显⽰指定监听端⼝为80(port=80)
Apache
如果以apache作为前端,配置如下:
[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
配置apache服务,创建/etc/httpd/conf.f,并写⼊如下内容:
<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服务:systemctl restart httpd.service
Nginx
[client.radosgw.gateway]
rgw_frontends = fastcgi
host = {hostname}
keyring = /etc/ceph/ceph.client.radosgw.keyring
rgw_socket_path = /var/run/ceph/ceph.radosgw.gateway.sock
log_file = /var/log/ceph/radosgw.log
rgw_print_continue = false
rgw_content_length_compat = true
配置nginx服务,在/etc/f⽂件的http段下添加如下内容:
http {
server {
listen 80default;
server_name {hostname};
location / {
fastcgi_pass_header Authorization;
fastcgi_pass_request_headers on;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param CONTENT_LENGTH $content_length;
if ($request_method = PUT) {
rewrite ^ /PUT$request_uri;
}
include fastcgi_params;
fastcgi_pass unix:/var/run/ceph/ceph.radosgw.gateway.sock;
}
location /PUT/ {
internal;
fastcgi_pass_header Authorization;
fastcgi_pass_request_headers on;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_pass unix:/var/run/ceph/ceph.radosgw.gateway.sock;
}
}
注意: fastcgi_pass 指向的路径需要与f中配置的路径⼀致
让nginx配置⽣效:nginx -s reload
启动rgw实例
通过上⾯的安装->创建⽤户->创建存储池->配置过程,rgw也就准备就绪了,可以通过下⾯的命令启动实例:
//radosgw -c {conf_file} -n {rgw-name}
#> radosgw -c /etc/f -n client.radosgw.gateway
测试
ceph rgw的测试⽅式有:s3cmd, cosbench,也可以通过python库boto⾃⼰写测试程序。个⼈感觉cosbench很不错,⼤家可以试试。rgw多实例
有时为了提⾼rgw的并发能⼒,需要部署多个rgw实例。其实也很简单,在多个节点上部署多个rgw实例:只需要安装rgw包,并将f⽂件,密钥⽂件,前端配置⽂件拷贝到相应的节点,然后启动实例就好。
⾄此rgw的部署实践过程就介绍完了,如有问题欢迎留⾔。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论