3案例3:创建对象存储服务器
3.1问题
延续前面的实验,实现Ceph对象存储功能。具体实现有以下功能:
- 安装部署Rados Gateway
- 启动RGW服务
- 设置RGW的前端服务与端口
- 客户端测试
3.2步骤
步骤一:部署对象存储服务器
1)准备实验环境,要求如下:
IP地址:192.168.4.15
主机名:node5
配置yum源(包括RHEL、ceph的源)
与client主机同步时间
node1允许无密码远程node5
修改node1的/etc/hosts,并同步到所有node主机
2)部署RGW软件包
[root@node1 ~]# ceph-deploy install --rgw node5
同步配置文件与密钥到node5
[root@node1 ~]# cd /root/ceph-cluster
[root@node1 ~]# ceph-deploy admin node5
3)新建网关实例
启动 一rgw服务
[root@node1 ~]# ceph-deploy rgw create node5
登录node5验证服务是否启动
[root@node5 ~]# ps aux |grep radosgw
ceph 4109 0.2 1.4 2289196 14972 ? Ssl 22:53 0:00 /usr/bin/radosgw -f --cluster ceph --name client.rgw.node4 --setuser ceph --setgroup ceph
[root@node5 ~]# systemctl status ceph-radosgw@\*
4)修改服务端口
登录node5,RGW默认服务端口为7480,修改为8000或80更方便客户端记忆和使用
[root@node5 ~]# vim /etc/ceph/ceph.conf
[client.rgw.node5]
host = node5
rgw_frontends = "civetweb port=8000"
//node5为主机名
//civetweb是RGW内置的一个web服务
步骤二:客户端测试
1)curl测试
[root@client ~]# curl 192.168.4.15:8000
<?xml version="1.0" encoding="UTF-8"?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>anonymous</ID><DisplayName></DisplayName></Owner><Buckets></Buckets></ListAllMyBucketsResult>
2)使用第三方软件访问
登录node5(RGW)创建账户
[root@node5 ~]# radosgw-admin user create \
--uid="testuser" --display-name="First User"
… …
"keys": [
{
"user": "testuser",
"access_key": "5E42OEGB1M95Y49IBG7B",
"secret_key": "i8YtM8cs7QDCK3rTRopb0TTPBFJVXdEryRbeLGK6"
}
],
... ...
#
[root@node5 ~]# radosgw-admin user info --uid=testuser
//testuser为用户,key是账户访问密钥
3)客户端安装软件
[root@client ~]# yum install s3cmd-2.0.1-1.el7.noarch.rpm
修改文件配置(注意,除了下面的设置内容,其他提示都默认回车)
[root@client ~]# s3cmd --configure
Access Key: 5E42OEGB1M95Y49IBG7BSecret Key: i8YtM8cs7QDCK3rTRopb0TTPBFJVXdEryRbeLGK6
S3 Endpoint [s3.amazonaws.com]: 192.168.4.15:8000
[%(bucket)s.s3.amazonaws.com]: %(bucket)s.192.168.4.15:8000
Use HTTPS protocol [Yes]: No
Test access with supplied credentials? [Y/n] n
Save settings? [y/N] y
//注意,其他提示都默认回车
4)创建存储数据的bucket(类似于存储数据的目录)
[root@client ~]# s3cmd ls
[root@client ~]# s3cmd mb s3://my_bucket
Bucket 's3://my_bucket/' created
[root@client ~]# s3cmd ls
2018-05-09 08:14 s3://my_bucket
[root@client ~]# s3cmd put /var/log/messages s3://my_bucket/log/
[root@client ~]# s3cmd ls
2018-05-09 08:14 s3://my_bucket
[root@client ~]# s3cmd ls s3://my_bucket
DIR s3://my_bucket/log/
[root@client ~]# s3cmd ls s3://my_bucket/log/
2018-05-09 08:19 309034 s3://my_bucket/log/messages
测试下载功能
[root@client ~]# s3cmd get s3://my_bucket/log/messages /tmp/
测试删除功能
[root@client ~]# s3cmd del s3://my_bucket/log/messages