ceph对象存储系统部署

本文详细介绍了如何在已部署的Ceph集群(14.2.22版本,运行在Ubuntu18.04系统上)中设置对象存储服务RGW。首先,在集群节点上创建并配置RGW,然后创建S3用户,安装并配置s3cmd工具进行对象存储的使用,包括创建bucket和上传文件。最后,检查了集群的I/O状态和存储池使用情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 前言

本文介绍如何部署ceph对象存储系统,并使用ceph对象存储系统。系统环境如下:

Ceph版本:14.2.22
操作系统:ubuntu 18.04

本文默认已经提前部署ceph集群,如果没有部署,请参考Ceph集群部署1

 
 

2. 集群规划

mon             192.168.3.11      node1
mgr             192.168.3.11      node1
rgw             192.168.3.11      node1
osd.0           192.168.3.11      node1
osd.1           192.168.3.12      node2
osd.2           192.168.3.13      node3
ceph-delpoy     192.168.3.10      node0

在ceph集群中,安装了ceph软件的并且部署了一系列ceph集群服务的主机被称之为ceph集群节点,上图中的node0虽然属于管理节点,但它并不属于ceph集群,它没有安装任何ceph软件,也没有部署任何ceph集群服务。

 
 

3. 对象存储集群部署

3.1. 创建rgw服务

在集群节点(node1)上执行以下命令:

ceph-deploy --overwrite-conf rgw create node1

其中node1为集群节点的hostname,该命令将在node1节点上安装rgw服务相关软件。

3.2. 配置rgw

默认情况下rgw采用beast作为网络服务,端口为7480。此处修改成使用civetweb作为前端服务。
修改集群节点(node1)的/etc/ceph/ceph.conf文件:

[client.rgw.node]
rgw_frontends = "civetweb port=192.168.3.11:7480"

其中client.rgw.node为rados用户名字,用户类型为rgw,node为rgw的名字,可以通过 ceph auth ls 命令获取。

3.3. 重启rgw服务

在集群节点(node1)上执行以下命令:

systemctl restart ceph-radosgw.target

3.4. 关闭防火墙

在集群节点(node1)上执行以下命令:

systemctl stop firewalld.service

3.5. 测试访问

在集群节点(node1)上执行以下命令:

curl http://node1:7480
-----------------------------------------------------------------------------------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
	<0wner>
		<ID>anonymous</ID>
		<DisplayName></DisplayName>
	</0wner>
		<Buckets></Buckets>
</ListALLMyBucketsResult>

 

4. 使用对象存储

4.1. 创建s3用户

在集群节点(node1)上执行以下命令:

radosgw-admin user create --uid=s3user --display-name=s3user
-----------------------------------------------------------------------------------------------------------------------
{
    "user_id": "s3user",
    "display_name": "s3user",
    "email": "",
    "suspended": 0,
    "max_buckets": 1000,
    "subusers": [],
    "keys": [
        {
            "user": "s3user",
            "access_key": "NT9IDJLORAK7OU73JEMA",
            "secret_key": "S6PjcSPICnFUxDpBYH4Elr8cwBwCs11R3ZXMHfhi"
        }
    ],
    "swift_keys": [],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "default_storage_class": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "temp_url_keys": [],
    "type": "rgw",
    "mfa_ids": []
}

上述命令中--uid的值是用户名,--display-name的值是对外显示的用户名。该命令将会创建名为s3user的对象存储用户,并初始化该用户信息,需要记住上面用户的access_keysecret_key,后面配置s3cmd时需要用到。

4.2. 安装s3cmd命令行工具

在集群节点(node1)上执行以下命令:

apt install s3cmd

4.3. 配置s3cmd

在集群节点(node1)上执行以下命令:

s3cmd --configure
-----------------------------------------------------------------------------------------------------------------------
Enter new values or accept defaults in brackets with Enter.
Refer to user manual for detailed description of all options.
Access key and Secret key are your identifiers for Amazon S3. Leave them empty for using the env variables.
Access Key: NT9IDJLORAK7OU73JEMA
Secret Key: S6PjcSPICnFUxDpBYH4Elr8cwBwCs11R3ZXMHfhi
Default Region [US] :
Encryption password is used to protect your files from reading
by unauthorized persons while in transfer to S3 
Encryption password:
Path to GPG program [/usr/bin/gpg]:
When using secure HTTPS protocol all Communication with Amazon S3
servers is protected from 3rd party eavesdropping. This method is
slower than plain HTTP, and can only be proxied with Python 2.7 or newer
Use HTTPS protocol [Yes] : no
On some networks all internet access must go through a HTTP proxy.
Try setting it here if you can't connect to S3 directly
HTTP Proxy server name :
New settings :
Access Key:
Secret Key:
Default Region: US
Encryption password:
Path to GPG program: /usr/bin/gpg
Use HTTPS protocol: False
HTTP Proxy server name:
HTTP Proxy server port: 0

s3cmd配置过程需要重点留意access_keysecret_key,该选项必须和前面创建用户生成的key保持一致。

4.4. 修改s3配置文件

s3的配置文件放在/root/.s3cfg中,主要修改host_basehost_bucket,需要配置为rgw服务端的ip地址。
修改集群节点(node1)的/root/.s3cfg文件内容:

gpg_passphrase =
guess_mime_type = True
host_base = 192.168.3.11
host_bucket = 192.168.3.11
human_readable_sizes = False
invalidate_default_index_on_cf = False
invalidate_default_index_root_on_cf = True
invalidate_on_cf = False

4.5. 创建bucket

在集群节点(node1)上执行以下命令:

s3cmd mb s3://bucket1

其中bucket1是桶的名字。

4.6. 上传文件

在集群节点(node1)上执行以下命令:

s3cmd put abc s3://bucket1

其中abc为本地文件的名字,bucket1是对象存储系统中已经存在的桶的名字,该命令将会把abc文件存储到bucket1中。

4.7. 查看集群I/O读写状态

在集群节点(node1)上执行以下命令:

ceph -s
-----------------------------------------------------------------------------------------------------------------------
cluster :
	id:		e7406bb4-35c7-420b-a04a-991510c7f143
	health: HEALTH 0K
services :
	mon: 1 daemons, quorum node (age 51m)
	mgr: node (active, since 60m)
	mds: cephfs:1 {0=node=up:active}
	osd: 3 osds: 3 up (since 58m)3 in (since 58m)
data:
	pools:	 2 pools, 2 pgs
	objects: 23 objects, 7.4 KiB
	usage:   3.0 GiB used, 27 GiB / 30 GiB avail
	pgs :	 2 active+clean
io:
	client:	 426 B/s wr, 0 op/s rd, 0 op/s wr

4.8. 查看存储池使用状况

在集群节点(node1)上执行以下命令:

ceph df 
-----------------------------------------------------------------------------------------------------------------------
RAW STORAGE:
    CLASS     SIZE       AVAIL      USED        RAW USED     %RAW USED 
    hdd       30 GiB     27 GiB     122 MiB      3.1 MiB         10.40 
    TOTAL     30 GiB     27 GiB     122 MiB      3.1 MiB         10.40 
 
POOLS:
    POOL                          ID     PGS     STORED      OBJECTS     USED        %USED     MAX AVAIL 
    .rgw.root                      1      32     1.2 KiB           4     768 KiB         0       8.5 GiB 
    default.rgw.control            2      32         0 B           8         0 B         0       8.5 GiB 
    default.rgw.meta               3      32       805 B           5     768 KiB         0       8.5 GiB 
    default.rgw.log                4      32         0 B         175         0 B         0       8.5 GiB 
    default.rgw.buckets.index      5      32         0 B           1         0 B         0       8.5 GiB 
    default.rgw.buckets.data       6      32         4 B           1     192 KiB         0       8.5 GiB 

4.9. 查看池存储中的对象

在集群节点(node1)上执行以下命令:

rados -p default.rgw.buckets.data ls
-----------------------------------------------------------------------------------------------------------------------
e763329b-e838-4633-8640-6fb8e35161f4.34178.2 abc

其中default.rgw.buckets.data是对象存储系统中的数据存储池的名字,该池是用来存储具体的文件数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值