基本原理科普:

ceph对象存储组件radosgw原生支持swift接口,对接只是把openstack的权限认证配置到ceph里,创建endpoint时指向ceph rgw地址就可以了。

我们要做两件事儿

第一,安装ceph rgw。

如果你是使用ceph deploy部署推荐看官方文档:

https://docs.ceph.com/docs/mimic/install/install-ceph-gateway/

如果你是手动部署的ceph,请往下看。

第二,安装python2-swiftclient,配置keystone认证,创建endpoint。

官方文档:https://docs.ceph.com/docs/mimic/radosgw/keystone/

懒得看英文的也请往下看。

笔者环境:openstack rocky aio,IP 192.168.0.1

ceph mimic 3节点,mon,osd均已正常启动,未安装rgw。IP ceph1:192.168.0.2,ceph2:192.168.0.3,ceph3:192.168.0.4

首先安装rgw:

安装rgw ,三个ceph节点上都执行

yum -y install ceph-radosgw

创建rgw需要的pool(根据环境调整pg和pgp数量),在ceph1上执行

pool=".rgw .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 default.rgw.control default.rgw.data.root default.rgw.gc default.rgw.log"PG_NUM=16PGP_NUM=16SIZE=3for i in $pooldoceph osd pool create $i $PG_NUMceph osd pool set $i size $SIZEdonefor i in $pooldoceph osd pool set $i pgp_num $PGP_NUMdone

在ceph1上创建keying,在ceph1上执行

cd /etc/ceph
sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.radosgw.keyring
sudo chown ceph:ceph /etc/ceph/ceph.client.radosgw.keyring
sudo ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.rgw.ceph1 --gen-key
sudo ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.rgw.ceph2 --gen-key
sudo ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.rgw.ceph3 --gen-key
sudo ceph-authtool -n client.rgw.ceph1 --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring
sudo ceph-authtool -n client.rgw.ceph2 --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring
sudo ceph-authtool -n client.rgw.ceph3 --cap osd 'allow rwx' --cap mon 'allow rwx' /etc/ceph/ceph.client.radosgw.keyring
sudo ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.rgw.ceph1 -i /etc/ceph/ceph.client.radosgw.keyring
sudo ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.rgw.ceph2 -i /etc/ceph/ceph.client.radosgw.keyring
sudo ceph -k /etc/ceph/ceph.client.admin.keyring auth add client.rgw.ceph3 -i /etc/ceph/ceph.client.radosgw.keyring

将创建好的keying拷贝到其它两台ceph节点,在ceph1上执行

scp /etc/ceph/ceph.client.radosgw.keyring root@ceph2:/etc/ceph/ceph.client.radosgw.keyring
scp /etc/ceph/ceph.client.radosgw.keyring root@ceph3:/etc/ceph/ceph.client.radosgw.keyring 

追加ceph的配置项,在所有ceph节点执行

echo "
[client.rgw.ceph1]
host=ceph1
keyring=/etc/ceph/ceph.client.radosgw.keyring
log file=/var/log/radosgw/client.radosgw.gateway.log
rgw_frontends = civetweb port=8081
rgw keystone api version = 3
rgw keystone url = 192.168.0.1:5000   #keystone认证服务的地址
rgw keystone accepted roles = admin
rgw keystone token cache size = 500
rgw keystone revocation interval = 300
rgw keystone implicit tenants = true
rgw s3 auth use keystone = true
rgw keystone admin user = admin
rgw keystone admin password = 123456 #你的admin用户的密码
rgw keystone admin tenant = admin
rgw keystone admin domain = Default
# 这里如果不设置,swift api无法识别url中的{account},并且无法使用共享对象功能
rgw swift account in url = true
# 如果需要使用 rgw 的配额功能,建议将以下三项设置为0,否则配额缓存不同步,很可能发生莫名其妙的问题。
rgw bucket quota ttl = 0
rgw user quota bucket sync interval = 0
rgw user quota sync interval = 0[client.rgw.ceph2]
host=ceph2
keyring=/etc/ceph/ceph.client.radosgw.keyring
log file=/var/log/radosgw/client.radosgw.gateway.log
rgw_frontends = civetweb port=8081
rgw keystone api version = 3
rgw keystone url = 192.168.0.1:5000   #keystone认证服务的地址
rgw keystone accepted roles = admin
rgw keystone token cache size = 500
rgw keystone revocation interval = 300
rgw keystone implicit tenants = true
rgw s3 auth use keystone = true
rgw keystone admin user = admin
rgw keystone admin password = 123456 #你的admin用户的密码
rgw keystone admin tenant = admin
rgw keystone admin domain = Default
# 这里如果不设置,swift api无法识别url中的{account},并且无法使用共享对象功能
rgw swift account in url = true
# 如果需要使用 rgw 的配额功能,建议将以下三项设置为0,否则配额缓存不同步,很可能发生莫名其妙的问题。
rgw bucket quota ttl = 0
rgw user quota bucket sync interval = 0
rgw user quota sync interval = 0[client.rgw.ceph3]
host=ceph3
keyring=/etc/ceph/ceph.client.radosgw.keyring
log file=/var/log/radosgw/client.radosgw.gateway.log
rgw_frontends = civetweb port=8081
rgw keystone api version = 3
rgw keystone url = 192.168.0.1:5000   #keystone认证服务的地址
rgw keystone accepted roles = admin
rgw keystone token cache size = 500
rgw keystone revocation interval = 300
rgw keystone implicit tenants = true
rgw s3 auth use keystone = true
rgw keystone admin user = admin
rgw keystone admin password = 123456 #你的admin用户的密码
rgw keystone admin tenant = admin
rgw keystone admin domain = Default
# 这里如果不设置,swift api无法识别url中的{account},并且无法使用共享对象功能
rgw swift account in url = true
# 如果需要使用 rgw 的配额功能,建议将以下三项设置为0,否则配额缓存不同步,很可能发生莫名其妙的问题。
rgw bucket quota ttl = 0
rgw user quota bucket sync interval = 0
rgw user quota sync interval = 0">> /etc/ceph/ceph.conf

启动radosgw服务,在所有ceph节点执行

hostname=`hostname`
systemctl start ceph-radosgw@rgw.$hostname
systemctl enable ceph-radosgw@rgw.$hostname

检查rgw服务是否成功启动

netstat -ntlp|grep radosgw
tcp        0      0 0.0.0.0:8081            0.0.0.0:*               LISTEN      42166/radosgw     

创建openstack的endpoint,在openstack机器上执行。

openstack service create --name swift --description "OpenStack Object Storage" object-store#注意,我这写的是ceph1的地址,所有swift请求都会发往ceph1,读者可以通过haproxy等负载均衡工具进行配置,使三个节点变成高可用环境
openstack endpoint create --region RegionOne object-store public "http://192.168.0.2:8081/swift/v1/AUTH_%(tenant_id)s" openstack endpoint create --region RegionOne object-store internal "http://192.168.0.2:8081/swift/v1/AUTH_%(tenant_id)s" openstack endpoint create --region RegionOne object-store admin "http://192.168.0.2:8081/swift/v1/AUTH_%(tenant_id)s" 

理论上来讲这里就算成功了,测试一下,在openstack机器上执行

#导入环境变量
export OS_USERNAME=admin
export OS_PASSWORD=123456
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://192.168.0.1:5000/v3
export OS_IDENTITY_API_VERSION=3
#上传一个文件测试
swift upload testfile /var/log/messages
#查看上传的文件
swift list

最后,有遇到什么问题或者报错请留言,转载请注明出处,原创不易,谢谢配合。

swift对接整合ceph相关推荐

  1. Swift对接C++库

    最近遇到一个项目需要用swift 对接c++,调用图像处理.对接的我头昏眼花,真的,一顿骚操作头皮发麻. 言归正传,首先就是把静态库拖入, 没得过多解释. 然后swift 没办法直接调用C++ , 所 ...

  2. openstack整合ceph

    2019独角兽企业重金招聘Python工程师标准>>> 环境:ubuntu16.04.ceph:10.2.3.openstack:14.0.1 一.在ceph集群中创建池 ceph ...

  3. OpenStack 对接 Ceph 环境可以创建卷但不能挂载卷的问题

    问题 环境:Nova.Cinder.Glance 都对接了 Ceph RBD 后端存储. 以往的操作包括上传镜像.创建卷.挂载卷都是一切正常的,但突然出现了无法挂载卷的问题,而且还是因为 Ceph 客 ...

  4. 使用kolla-ansible部署多节点OpenStack(T版)及对接Ceph

    推荐感兴趣的小伙伴先阅读官方文档 近期使用kolla-ansible部署一套OpenStack多节点测试环境,用于测试计算节点宕机撤离的生产场景. 虽然官方文档写的非常详细,但是整个部署过程也多多少少 ...

  5. Ceph专题三 Ceph与OpenStack集成和行业应用

     Ceph专题三Ceph与OpenStack集成和行业应用 Ceph 在OpenStack中的地位 Openstack是继Linux之后又一个非常成熟和受欢迎的开源云计算解决方案,Openstac ...

  6. “CEPH浅析”系列之七——关于CEPH的若干想法

    为什么80%的码农都做不了架构师?>>>    本篇文章的内容,主要是笔者在调研分析Ceph过程中产生的一些思考.因为其中的内容比较自由发散,且大多是笔者的个人见解,故此另启一文进行 ...

  7. 如何学习开源项目及Ceph的浅析

    摘要:开源技术的学习和采用确实存在着一定门槛,然而学习各种开源项目已经成为许多开发者不可回避的工作内容.那么,对于类似OpenStack的大型开源项目,开发者该如何着手,这里我们看章宇的分享. [编者 ...

  8. 【CEPH-初识篇】ceph详细介绍+“ 一 ” 篇解决ceph集群搭建, “ 三 ” 大(对象、块、文件)存储使用

    文章目录 前言 简介(理论篇) 逻辑结构 数据存储原理 三大存储 RADOSGW(对象网关) BRD(块存储) CEPHFS(文件存储) 所有组件结合起来 POOL.PG简介 组件结合 搭建ceph( ...

  9. 基于 Ceph 的 Kubernetes 数据持久化

    本文通过简单介绍 Ceph 的功能特性与安装配置,并结合应用场景进行实践讲解,演示如何利用 Ceph 实现 Kubernetes 及常用业务需求场景下的数据持久化.在最后部分,介绍 Ceph 的管理维 ...

最新文章

  1. ASP.NET十七种正则表达试
  2. Linux 下hosts文件
  3. Direct2D (19) : 图层之 TD2D1LayerParameters.geometricMask (使用几何图形剪裁图层)
  4. python 正则使用笔记
  5. mysql 窗口函数最新一条_MySQL 8.0 窗口函数(window functions)
  6. Qt工作笔记-对setupUi(this)进一步理解
  7. Python的list方法append和extend有什么区别?
  8. python视频分段_Python 视频文件的分割和合并
  9. fd在python_【后端开发】python中fd()是什么
  10. 数据格式化 string.format()
  11. 诗歌(8)—梅花二首(其二)
  12. python基础教学习题_python基础|数据类型练习题
  13. [Cqoi2016] 密钥破解 Java 题解
  14. 计算机与生物教学思路和方法,信息技术与生物教学相互融合
  15. Java日期有效性验证
  16. DSP芯片F2803x系列之PWM模块及高精度PWM使用
  17. 【网络安全】beef-xss实操以及xss修复方案
  18. python下载电影_python下载电影
  19. iOS逆向 - 环境搭建
  20. 在腾讯的第二堂产品课——改变大河的流向

热门文章

  1. Python打包源码
  2. 拯救者Y9000P 加装固态
  3. 布考斯基样样干_查尔斯·布考斯基经典语录
  4. 如何绘制三次B样条曲线
  5. DOTS介绍+Unity DOTS-MAN小游戏项目实战
  6. 2020年jQuery被抛弃了吗
  7. CSS样式不生效技巧
  8. 终端安全解决方案如何帮助保护数字化工作空间中的设备
  9. HUAWEI P20系列国内发布 徕卡三摄+AI开启智慧摄影新时代
  10. DSP程序开发与优化经验之四:TMS320C64x+ DSP------Using Cache