Ceph对象存储网关安装配置

引言

基于已部署好的Ceph集群,部署一个网关服务器,进行对象存储服务。操作系统CentOS6.5 CEPH0.94.3其实基于librados可以直接进行访问,但是我看了百度,UCLOUD的对象存储,用户在网页上进行文件的上传、下载时,都通过web服务器间接和存储集群打交道,进行了一层隔离,而不是直接和集群进行通信操作。我得理解是便于访问控制以及隔离。

1.依赖包安装

Ceph rados-gateway依赖Apache和FastCGI, 用户的请求先到web服务器,再走rados-gateway进入集群之中。

1.1 安装Apache服务

sudo yum install httpd
Package httpd-2.2.15-47.el6.centos.x86_64 already installed and latest version

1.2 配置http服务器

sudo vim /etc/httpd/conf/httpd.conf

将ServerName的注释号去掉,添加上自己网关服务器的IP地址

272 # If your host doesn‘t have a registered DNS name, enter its IP address here.
273 # You will have to access it by its address anyway, and this will make
274 # redirections work in a sensible way.
275 #
276 ServerName 101.67.163.34:80

在配置中增加如下信息,加载mod_proxy_fcgi

<IfModule !proxy_fcgi_module>
LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so
</IfModule>

此处需注意,需要将该段内容加载LoadModule系列的后面,否则会报如下错误:

sudo service httpd start
Starting httpd: httpd: Syntax error on line 129 of /etc/httpd/conf/httpd.conf: Cannot load /etc/httpd/modules/mod_proxy_fcgi.so into server: /etc/httpd/modules/mod_proxy_fcgi.so: undefined symbol: ap_proxy_release_connection

修改配置中的LISTEN字段,将网关所在主机的IP地址添加进去

# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, in addition to the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses (0.0.0.0)
#
Listen 101.67.163.34:80
#Listen 80

1.3 SSL支持 (此处是否必须不是很清楚,只是按照官方文档走)

秘钥文件生成

sudo yum install mod_ssl opensslopenssl genrsa -out ca.key 2048
openssl req -new -key ca.key -out ca.csr
openssl x509 -req -days 365 -in ca.csr -signkey ca.key -out ca.crt

文件目录放置sudo cp ca.crt /etc/pki/tls/certs

sudo cp ca.key /etc/pki/tls/private/ca.key
sudo cp ca.csr /etc/pki/tls/private/ca.csr

配置文件修改/etc/httpd/conf.d/ssl.conf.

SSLCertificateFile/etc/pki/tls/certs/ca.crt
SSLCertificateKeyFile/etc/pki/tls/private/ca.key

重启httpd服务sudo service httpd restart

1.4 网关服务安装

sudo apt-get install radosgwsudo apt-get install radosgw-agent  (这个不是必须的)

至此,相关依赖包安装完毕

2. CEPH网关服务配置

ceph网关其实是ceph集群的一个客户端,用户通过这个网关间接访问ceph集群,作为客户端,它需要准备如下内容:

网关名称,此处用gateway称呼

一个可以访问存储集群的用户以及对应的KEYRING

数据资源池,这个由ceph集群提供

为网关服务示例准备一个数据存放空间

在ceph.conf配置文件中设置gateway信息

2.1 创建访问用户及权限设置

创建gateway keyring,一开始该文件为空

sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.radosgw.keyring
sudo chmod +r /etc/ceph/ceph.client.radosgw.keyring

创建网关用户名以及key  此处名字为 client.radosgw.gateway

sudo ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.radosgw.gateway --gen-key

为KEYRING添加权限

sudo ceph-authtool -n client.radosgw.gateway --cap osd ‘allow rwx‘ --cap mon ‘allow rwx‘ /etc/ceph/ceph.client.radosgw.keyring

将key添加到集群中

sudo ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.radosgw.gateway -i /etc/ceph/ceph.client.radosgw.keyring

将相关的KEYRING文件拷贝到rados-gateway所在的主机 /etc/ceph/目录下

2.2 数据资源池创建

.rgw.root
.rgw.control
.rgw.gc
.rgw.buckets
.rgw.buckets.index
.rgw.buckets.extra
.log
.intent-log
.usage
.users
.users.email
.users.swift
.users.uid
[[email protected]_wenzhou-16-34 conf]# ceph osd lspools
4 rbd,6 pool-1,7 pool-2,8 .rgw,9 .rgw.root,10 .rgw.control,11 .rgw.gc,12 .rgw.buckets,13 .rgw.buckets.index,14 .log,15 .intent-log,16 .usage,17 .users,18 .users.email,19 .users.swift,20 .users.uid

2.3 将网关配置信息添加到集群配置中

[client.radosgw.gateway]
host=ceph-24
keyring=/etc/ceph/ceph.client.radosgw.keyring
rgw socket path=/var/run/ceph/ceph.radosgw.gateway.fastcgi.sock
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.4 目录及权限调整

创建数据目录

sudo mkdir -p /var/lib/ceph/radosgw/ceph-radosgw.gateway
调整apache运行权限
sudo chown apache:apache /var/run/ceph

调整日志权限

sudo chown apache:apache /var/log/radosgw/client.radosgw.gateway.log

启动网关服务sudo /etc/init.d/ceph-radosgw start

2.5 网关配置文件

一个配置文件,用于web server和FastCGI之间的交互

sudo vi /etc/httpd/conf.d/rgw.conf

<VirtualHost *:80>
ServerName 101.67.163.34
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://101.67.163.34:9000/
</VirtualHost>

其中标红的地方是要根据实际情况填写

2.6 用户创建

radosgw-admin user create --uid=xuwenping --display-name="ceph xuwenping" [email protected]
{
    "user_id": "xuwenping",
    "display_name": "ceph xuwenping",
    "email": "[email protected]",
    "suspended": 0,
    "max_buckets": 1000,
    "auid": 0,
    "subusers": [],
    "keys": [
        {
            "user": "xuwenping",
            "access_key": "4J3GD7GJIJKSDCVS1I9T",
            "secret_key": "yfmxvzQdWT4EmVDijOFp6oNt4kZ25y9wRVARas4I"
        }
    ],
    "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": []
}

创建SWIFT类型USER

sudo radosgw-admin subuser create --uid=xuwenping --subuser=xuwenping :swift --access=full

2015-10-10 14:19:19.854951 7f402eadc8a0  0 max_buckets=1000 specified=0
{
    "user_id": "xuwenping",
    "display_name": "ceph xuwenping",
    "email": "[email protected]",
    "suspended": 0,
    "max_buckets": 1000,
    "auid": 0,
    "subusers": [
        {
            "id": "xuwenping:swift",
            "permissions": "full-control"
        }
    ],
    "keys": [
        {
            "user": "xuwenping",
            "access_key": "4J3GD7GJIJKSDCVS1I9T",
            "secret_key": "yfmxvzQdWT4EmVDijOFp6oNt4kZ25y9wRVARas4I"
        },
        {
            "user": "xuwenping:swift",
            "access_key": "PEIT99BBWMZP31BD6S3I",
            "secret_key": ""
        }
    ],
    "swift_keys": [
        {
            "user": "xuwenping:swift",
            "secret_key": "qWHPhvUy4md1XSa2PSbcxUyMU5YXodlqxt0ZC2hn"
        }
    ],
    "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": []
}

2.7 实际验证

编写了一段python代码,用于访问网关,并创建bucket,并通过list方法罗列出当前所有的bucket (官方示例)

import boto
import boto.s3.connection
access_key = ‘4J3GD7GJIJKSDCVS1I9T‘
secret_key = ‘yfmxvzQdWT4EmVDijOFp6oNt4kZ25y9wRVARas4I‘
conn = boto.connect_s3(
aws_access_key_id = access_key,
aws_secret_access_key = secret_key,
host = ‘101.67.163.34‘,
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,
)

运行结果

[[email protected]_wenzhou-16-34 ceph-rados]# python s3test.py
my-new-bucket	2015-10-10T06:23:48.000Z

至此,Ceph集群的对象存储网关安装设置完毕

时间: 2024-12-29 06:35:31

Ceph对象存储网关安装配置的相关文章

Ceph 对象存储及客户端配置(三)

一.对象存储介绍 作为文件系统的磁盘,操作系统不能直接访问对象存储.相反,它只能通过应用程序级别的API访问.Ceph是一种分布式对象存储系统,通过Ceph对象网关提供对象存储接口,也称为RADOS网关(RGW)接口,它构建在Ceph RADOS层之上. RGW使用librgw (RADOS Gateway Library)和librados,允许应用程序与Ceph对象存储建立连接. RGW为应用程序提供了一个RESTful S3 / swift兼容的API接口,用于在Ceph集群中以对象的形式

ceph对象存储(rgw)服务、高可用安装配置

ceph对象存储服务.高可用安装配置 简介:    Ceph本质上就是一个rados,利用命令rados就可以访问和使用ceph的对象存储,但作为一个真正产品机的对象存储服务,通常使用的是Restfulapi的方式进行访问和使用.而radosgw其实就是这个作用,安装完radosgw以后,就可以使用api来访问和使用ceph的对象存储服务了.    首先明白一下架构,radosgw其实名副其实,就是rados的一个网关,作用是对外提供对象存储服务.本质上radosgw(其实也是一个命令)和rbd

Ceph对象存储介绍与安装

一:概念介绍 Ceph对象网关是建立在librados之上的对象存储接口,可为应用程序提供通往Ceph存储集群的RESTful网关, Ceph对象存储支持两个接口 1.S3兼容:为对象存储功能提供与Amazon S3 RESTful API的大部分子集兼容的接口2.Swift兼容:为对象存储功能提供与OpenStack Swift Ceph对象存储使用Ceph对象网关守护进程(radosgw),该守护进程是用于与Ceph存储群集进行交互的HTTP服务器,由于它提供与OpenStack Swift

Ceph对象存储安装部署及验证

今天来玩下Ceph的对象存储,之前一直觉得对象存储对于玩OpenStack的我来说用不到,但随着越来越多的海量文件的需求,不得不促使我们来学习对象存储.所谓活到老学到老,尤其是我们搞IT的,每天都得学习新技术. 首先呢就是部署一套Ceph环境,这里就不再赘述了,网上好多安装文档,都比较清晰了. 重点说下RGW部分 安装完集群之后 ceph-deploy install --rgw devin-ceph1    #因为是测试所以只用一个rgw 然后创建RGW实例 ceph-deploy rgw c

Ceph对象存储RGW对接企业级网盘OwnCloud三步走

上篇文章我们把Ceph对象存储搭建成功了,但是成功了之后我们怎么用呢?下面我们本文就来讲下Ceph对象存储对接企业私有云网盘OwnCloud. OwnCloud分为企业版和社区版,我们只说社区版,在这里我就不多赘述了. 那么Ceph对接OwnCloud分三步走. 第一:安装Ceph配置RGW对象存储 第二:安装OwnCloud 第三:对接 第一步在上个文章里面已经做了,那么第二步是安装OwnCloud,可以看下我之前的文章进行安装. 如何搭建OwnCloud网盘 主要讲下第三步 要点:网盘节点D

基于LAMP php7.1搭建owncloud云盘 与ceph对象存储S3借口整合案例

ownCloud简介:      是一个来自 KDE 社区开发的免费软件,提供私人的 Web 服务.当前主要功能包括文件管理(内建文件分享).音乐.日历.联系人等等,可在PC和服务器上运行.     简单来说就是一个基于Php的自建网盘.基本上是私人使用这样,因为直到现在开发版本也没有暴露注册功能.我这里采用基于php7.1的LAMP环境搭建这个owncloud 下一篇将介绍和ceph对象存储整合案例 一.环境准备,这里的owncloud是10版本,所以需要php5.6以上的LAMP环境,否则会

基于redhat7.3 ceph对象存储集群搭建+owncloud S3接口整合生产实践

一.环境准备 安装redhat7.3虚拟机四台 在四台装好的虚拟机上分别加一块100G的硬盘.如图所示: 3.在每个节点上配置主机名 4.集群配置信息如下 admin-node node1 node2 node3 192.168.42.110 192.168.42.111 192.168.42.112 192.168.42.113 deploy.osd*1 mon*1.osd*1. rgw*1.mds*1 mon*1.osd*1 mon*1.osd*1 5.各节点配置yum源 #需要在每个主机上

对象存储网关RADOS Gateway(RGW)(一)

一.Ceph整体架构及RGW在Ceph中的位置 1.Ceph的整体架构 Ceph是一个统一的.分布式的的存储系统,具有优秀的性能.可靠性和可扩展性.Ceph支持对象存储(RADOSGW).块存储(RBD)和文件存储(CephFS).一个Ceph存储集群至少包含一个Ceph monitor.Ceph manager及Ceph OSD(Object Store Daemon).若要运行CephFS client,还需要Ceph metadata server.以下是Ceph的整体架构图: 由上面的架

CEPH 对象存储的系统池介绍

RGW抽象来看就是基于rados集群之上的一个rados-client实例. Object和pool简述 Rados集群网上介绍的文章很多,这里就不一一叙述,主要要说明的是object和pool.在rados集群中任意一个对象都会映射为一个(pool,object).其中pool是存储池,object为对象名.如果你只是做rados集群上层应用的开发(类似开发rgw).只需要设计如何将数据存储到rados集群中哪个pool及哪个对象即可. RGW中pool和object应用 RGW中存在的poo