admin 发表于 2022-2-9 10:11:24

Ceph对象存储如何部署

因公司项目上有使用ceph对象存储的问题,需要了解测试这个对象存储的问题在哪里,于是找了很多相关的ceph对象存储资料,现在就来看看Ceph对象存储如何部署



首先呢就是部署一套Ceph环境,这里就不再赘述了,网上好多安装文档,都比较清晰了。



重点说下RGW部分



安装完集群之后

ceph-deploy install --rgw devin-ceph1    #因为是测试所以只用一个rgw

然后创建RGW实例

ceph-deploy rgw create devin-ceph1

那么这时候就OK了,成功后会提示你访问7480端口

http://10.0.100.201:7480

你会看到如下内容:

<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<Owner>
<ID>anonymous</ID>
<DisplayName/>
</Owner>
<Buckets/>
</ListAllMyBucketsResult>

由于RGW默认采用的是Civetweb,默认端口是7480那有人会说了,那我可不可以修改RGW端口啊。答案肯定是可以的。



修改Ceph配置文件进行修改。下面看看我的配置文件


host = devin-ceph1
rgw_enable_ops_log =true
rgw_frontends ="civetweb port=80"
rgw dns name =s3.devin.com
rgw socket path =/var/run/ceph-client.radosgw.sock
keyring =/etc/ceph/ceph.client.radosgw.keyring



可以看到我的端口设置成80了。



修改完配置文件之后同步到个节点然后重启rgw服务

ceph-deploy --overwrite-conf config push devin-ceph1 devin-ceph2 devin-ceph3

systemctl restart ceph-radosgw.target

那么到此RGW安装完成了,那么RGW怎么使用呢?或者说怎么证明我的RGW是好的?



可能会有人说:你笨啊,刚才都能访问页面了,就证明成功了呗。



可能又会有人说:光访问个页面管P用啊,要能用才行。



别急,下面我们来说下两种方式来玩,一种是S3cmd方式



首先安装S3cmd

yum –y install s3cmd

安装完之后运行s3cmd --configure进行初始化配置(说白了就是生成个配置文件)



然后会提示你输入access key和secret key,没玩过ASW相关产品的童鞋可能会说,这俩key是干嘛的。用行话来说呢简称AK和SK。所谓key嘛就是用来认证和验证的。我们来看看如何生成。



你要用工具连接RGW那么首先得有用户吧,那来创建个用户

radosgw-admin user create —uid=devin —display-name=“Devin” —email=devin@example.com

创建完之后会有AK和SK的信息,记得复制下待会还要用。



那么复制完之后在进行s3cmd –configure配置



配置完之后就可以开始玩了。附赠s3cmd常用命令

s3cmd ls#查看可用的bucket
s3cmd mb s3://devin_bucket#创建bucket,且bucket名字是唯一的,不能重复
s3cmd ls s3://devin_bucket#列出bucket内容

s3cmd put devin.txt s3://devin_bucket#上传本地file到指定的bucket
s3cmd put --acl-public devin.txt s3://devin_bucket#上传本地file到指定的bucket,并开启file的匿名访问权限
s3cmd get s3://devin_bucket/devin.txt#下载file到本地

可能在玩的时候会遇到问题,那么怎么排错呢?



可以在s3cmd的命令后面加上-d 也就是开启debug然后排错。



遇到最多的问题就是解析问题。那么如何解决解析的问题呢?



可以查看下这篇文章 《教你如何配置轻量级DNS》。



然后还有一种方式,就是python-boto方式



首先安装python-boto

yum install python-boto

然后创建个python脚本

vi s3test.py

内容如下:

import boto.s3.connection

access_key = 'Y2S78LKZ1ROD0MGIDUBC'
secret_key = 'LyGCgoydLI2MGA7C0PtynyfBa3aKODNYQ0sHDMtP'
conn = boto.connect_s3(
       aws_access_key_id=access_key,
       aws_secret_access_key=secret_key,
      host='s3.devin.com', port=80,
       is_secure=False, calling_format=boto.s3.connection.OrdinaryCallingFormat(),
       )

bucket = conn.create_bucket('devin-bucket')
for bucket in conn.get_all_buckets():
    print"{name} {created}".format(
       name=bucket.name,
       created=bucket.creation_date,
)

这里要注意修改的地方就是AK和SK还有host域名



完事之后就是执行下脚本

python s3test.py

脚本大概意思就是说导入boto s3模块然后借用AK、SK来进行验证创建一个名为devin-bucket的bucket,创建完成之后并打印出来结果。





OK,本文Ceph对象存储到此就讲述结束了下篇文章来讲述如何对接OwnCloud网盘应用。


admin 发表于 2022-2-9 10:17:40

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
# 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 将网关配置信息添加到集群配置中

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 .* -

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=xuwenping@d***n.com
{
    "user_id": "xuwenping",
    "display_name": "ceph xuwenping",
    "email": "xuwenping@dnion.com",
    "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 7f402eadc8a00 max_buckets=1000 specified=0
{
    "user_id": "xuwenping",
    "display_name": "ceph xuwenping",
    "email": "xuwenping@dnion.com",
    "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 (官方示例)

依赖库安装

sudo yum install python-boto
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,
)
运行结果

# python s3test.py
my-new-bucket        2015-10-10T06:23:48.000Z
至此,Ceph集群的对象存储网关安装设置完毕

附:

有时候通过yum安装软件是报如下错误:

Downloading Packages:
warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY
Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6


GPG key retrieval failed: Could not open/read file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
在执行 安装命令时带上如下参数即可:

yum install mod_proxy_fcgi   --nogpgcheck
到此,关于“Ceph对象存储网关的安装配置”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

页: [1]
查看完整版本: Ceph对象存储如何部署