经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » Swift » 查看文章
CEPH Object Gateway
来源:cnblogs  作者:Netonline  时间:2019/4/12 8:54:58  对本文有异议

参考文档:

一.环境准备

1. Ceph Object Gateway框架

Ceph Object Gateway是对象存储接口,构建在librados之上,为应用提供restful类型的网关。其支持两种接口:

  1. S3-compatible API:兼容AWS S3 Restful接口;
  2. Swift-compaible API:兼容Openstack Swift接口。

2. 环境

以《CEPH LIO iSCSI Gateway》中的环境为基础,即:

Hostname

IP

Service

Remark

ceph01

publice:172.30.200.57

cluster:192.30.200.57

 

1. centos7.5 with kernel v4.18.7-1;

2. ceph-13.2.1 mimic (stable),已部署

3. ntp已部署;

4. 禁用selinux;

5. 禁用firewalld或iptables,rgw内嵌civetweb默认采用7480端口。

ceph02

publice:172.30.200.58

cluster:192.30.200.58

 

ceph03

publice:172.30.200.59

cluster:192.30.200.59

 

ceph-client

172.30.200.50

   

二.部署Ceph RGW

1. 创建ceph mds

  1. # 通过部署服务器部署,格式:ceph-deploy install --rgw Gateway-NODE1 [Gateway-NODE2 …];
  2. # 如因网络原因导致安装不成功,可在各节点独立安装:ceph-radosgw ceph-common
  3. [root@ceph01 ~]# su - cephde
  4. [cephde@ceph01 ~]$ cd cephcluster/
  5. [cephde@ceph01 cephcluster]$ ceph-deploy install --rgw ceph01 ceph02 ceph03

2. 创建对象网关实例

Ceph 对象存储使用 Ceph 对象网关守护进程( radosgw ,RGW),内嵌了Civetweb服务器与FastCGI 模块。

其中Civetweb服务器默认使用tcp 7480端口。

1)变更默认端口(option)

  1. # 变更Civetweb服务器默认端口,可修改ceph.conf文件,增加[client.rgw.<GATEWAY-NODE>]字段,其中“GATEWAY-NODE”为所在网关节点的短主机名,即:hostname -s;
  2. # 可在部署服务器修改后分发到各网关节点,也可在各网关节点独立修改;
  3. # [client.rgw.<GATEWAY-NODE>]字段与[global]字段在相同层级,且1个网关节点使用1个字段,其中”client”表示客户端配置,“rgw”表示客户端类型,“GATEWAY-NODE”标识实例名;
  4. [cephde@ceph01 cephcluster]$ cat ceph.conf
  5. [client.rgw.ceph01]
  6. rgw_frontends = "civetweb port=80"
  7. [client.rgw.ceph02]
  8. rgw_frontends = "civetweb port=80"
  9. [client.rgw.ceph03]
  10. rgw_frontends = "civetweb port=80"
  11. # 从部署服务器分发ceph.conf
  12. [cephde@ceph01 cephcluster]$ ceph-deploy --overwrite-conf config push ceph01 ceph02 ceph03

2)创建实例

  1. # 在部署服务器创建实例;
  2. # 创建后,在各网关节点对应的守护进程启动;
  3. # 如果ceph.conf配置文件变更,可在对应节点重启服务
  4. [cephde@ceph01 cephcluster]$ ceph-deploy rgw create ceph01 ceph02 ceph03

 

  1. # 查看服务
  2. [root@ceph01 ~]# systemctl status ceph-radosgw@rgw.ceph01

 

  1. # 查看端口
  2. [root@ceph01 ~]# netstat -tunlp | grep radosgw

 

  1. # 创建实例后,同时创建部分默认pool;
  2. # 或:”rados df” 与 “ceph osd pool ls”
  3. [root@ceph01 ~]# ceph osd lspools

 

3)访问

  1. # 格式:http://RGW-IP:port
  2. [root@ceph01 ~]# curl http://172.30.200.57
  3. # 如果网关实例正常运行,响应如下:
  4. <?xml version="1.0" encoding="UTF-8"?>
  5. <ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
  6. <Owner>
  7. <ID>anonymous</ID>
  8. <DisplayName></DisplayName>
  9. </Owner>
  10. <Buckets>
  11. </Buckets>
  12. </ListAllMyBucketsResult>

三.验证

使用REST接口验证,步骤如下:

  1. 首先创建适用于s3接口的ceph对象网关用户;
  2. 基于已创建的用户,创建适用于swift接口的子用户
  3. 验证用户是否能访问网关。

1. 创建用户

1)创建用于S3访问的RADOSGW用户

  1. # “--uid”与“--display-name”自定义;
  2. # 返回结果中,keys->access_keykeys->secret_key 是访问验证时需要的值
  3. [root@ceph01 ~]# radosgw-admin user create --uid="objectuser" --display-name="Object Stoage User"

 

2)创建SWITF用户

Swift用户创建分两步:

  1. 创建子用户
  2. 生成秘钥。
  1. # 创建子用户,基于已创建的s3用户;
  2. # 赋予全权限
  3. [root@ceph01 ~]# radosgw-admin subuser create --uid=objectuser --subuser=objectuser:swift --access=full

 

  1. # 生成秘钥;
  2. # 返回结果中,swift_keys ->secret_key 是访问验证时需要的值
  3. [root@ceph01 ~]# radosgw-admin key create --subuser=objectuser:swift --key-type=swift --gen-secret

 

2. 访问验证

1)测试S3访问

测试采用python脚本完成,脚本流程如下:测试脚本连接radosgw,创建bucket,list bucket。

  1. # 客户端需要安装python-boto
  2. [root@ceph-client ~]# yum install -y python-boto
  3. # 编辑测试脚本;
  4. # 注意”access_key”,”secret_key”,”host”与”port”值修改
  5. [root@ceph-client ~]# vim s3.py
  6. import boto.s3.connection
  7. access_key = 'YT6ZE7N82VOY82CP5F1D'
  8. secret_key = 'tvRcE4sLh7YOrBBgcLUAWL4Czdqrak2UBg5DsOcy'
  9. conn = boto.connect_s3(
  10. aws_access_key_id=access_key,
  11. aws_secret_access_key=secret_key,
  12. host='172.30.200.57', port=80,
  13. is_secure=False, calling_format=boto.s3.connection.OrdinaryCallingFormat(),
  14. )
  15. bucket = conn.create_bucket('my-new-bucket')
  16. for bucket in conn.get_all_buckets():
  17. print "{name} {created}".format(
  18. name=bucket.name,
  19. created=bucket.creation_date,
  20. )
  21. # 运行脚本,返回结果符合预期
  22. [root@ceph-client ~]# python s3.py

 

2)测试Swift访问

测试采用swift客户端进行。

  1. # 安装swift客户端
  2. [root@ceph-client ~]# yum install python-setuptools
  3. [root@ceph-client ~]# easy_install pip
  4. [root@ceph-client ~]# pip install --upgrade setuptools
  5. [root@ceph-client ~]# pip install --upgrade python-swiftclient
  6. # 命令格式:swift -A http://{IP ADDRESS}:{port}/auth/1.0 -U USER:swift -K '{swift_secret_key}' list;
  7. # 这里基于s3测试生成的bucket,list bucker,返回结果符合预期
  8. [root@ceph-client ~]# swift -A http://172.30.200.57/auth/1.0 -U objectuser:swift -K '9mm3yJT6CQ62A1II0AqENu3LDKmBxcEwy1kXBspn' list

 

 

原文链接:http://www.cnblogs.com/netonline/p/10691953.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号