Ceph对象存储使用Ceph对象网关守护进程(radosgw 以下简称RGW),它是个与Ceph存储集群交互的FastCGI模块。 版本: Mimic [radosgw-Frame.png] 架构 RGW 主要由3部分组成。
按 Luminous 方式安装好 Ceph 软件好,想按照以往的习惯,直接执行下面的命令来启动 radosgw 进程。 systemctl enable ceph-radosgw@radosgw.gateway systemctl start ceph-radosgw.target 然后发现居然说没有这个 target 找了 Ceph 的官方文档,关于 Manual 的安装手册居然没有提到 radosgw 的启动…还是挺神奇的。 最后发现 radosgw 被拆到另一个软件包,通过下面的命令安装完之后再重复上述命令就可以启动 radosgw 了。 yum install ceph-radosgw
/blemmenes/radosgw_usage_exporter 因为这个 exporter 其实是很简单的,可以查看一下 radosgw_usage_exporter.py 源码,分析一下 exporter radosgw_usage_successful_ops_total 是指成功的操作次数。 radosgw_usage_sent_bytes_total 是指发送的字节数。 radosgw_usage_received_bytes_total 是指接收的字节数。 radosgw_usage_bucket_bytes 是指对象的原始字节数。 radosgw_usage_bucket_utilized_bytes 是指对象的实际字节数(因为会有压缩等操作)。 radosgw_usage_bucket_objects 是指对象数量。 cat >/lib/systemd/system/radosgw_usage_exporter.service <<EOF [Unit] Description=radosgw_usage_exporter
restart 检查服务是否启动:ps -ef|grep radosgw 3、ngixn方式 yum install -y radosgw nginx 新建用户和keying(在每台主机上建一个用户和 key) ceph-authtool --create-keyring /etc/ceph/ceph.client.radosgw.keyring chmod +r /etc/ceph/ceph.client.radosgw.keyring log file=/var/log/radosgw/client.radosgw.gateway.log rgw print continue=false rgw content length log file=/var/log/radosgw/client.radosgw.gateway.log rgw print continue=false rgw content length log file=/var/log/radosgw/client.radosgw.gateway.log rgw print continue=false rgw content length
安装radosgw yum install ceph-radosgw -y 创建rgw相关的资源池 资源池列表及部分资源池功能介绍如下。 .rgw:region和zone配置信息。 ceph:ceph /etc/ceph/ceph.client.radosgw.keyring 生成ceph-radosgw服务对应的用户和key ceph-authtool /etc/ceph/ceph.client.radosgw.keyring ] host=node2 keyring=/etc/ceph/ceph.client.radosgw.keyring log file=/var/log/radosgw/client.radosgw.gateway.log /etc/ceph/ceph.client.radosgw.keyring node2:/etc/ceph/ceph.client.radosgw.keyring scp /etc/ceph/ceph.client.radosgw.keyring 创建日志目录并授权 mkdir /var/log/radosgw chown ceph:ceph /var/log/radosgw 启动rgw服务 systemctl start ceph-radosgw
部署对象存储 安装ceph-radosgw [ceph-admin@ceph-node1 my-cluster]$ sudo yum install ceph-radosgw 部署rgw [ceph-admin tnlp |grep 7480 tcp 0 0 0.0.0.0:7480 0.0.0.0:* LISTEN 15418/radosgw 用户 [ceph-admin@ceph-node1 my-cluster]$ radosgw-admin user create --uid=radosgw --display-name="radosgw " { "user_id": "radosgw", "display_name": "radosgw", "email": "", "suspended": 0, subuser create --uid=radosgw --subuser=radosgw:swift --access=full { "user_id": "radosgw", "
对象存储额外需要安装的包是:ceph-radosgw和ceph-common 安装完毕你的系统上应该至少存在三个命令:rados 、 radosgw 、 radosgw-admin 其中整个对象网关服务就是由 radosgw来启动的,radosgw-admin负责管理对象资源(用户,权限,bucket),rados基本算一个比较简单的s3客户端(? /run/ceph/ceph.radosgw.gateway.fastcgi.sock" log_file = "/data/logs/client.radosgw.gateway.log" rgw_frontends osd 'allow rwx' mon 'allow rwx' -o /etc/ceph/ceph.client.radosgw.keyring #密钥环的样子 [client.radosgw.t56 /etc/init.d/ceph-radosgw [start|stop|status|reload] 2. systemctl start ceph-radosgw 3. radosgw -c
ceph/ceph.client.radosgw.keyring 生成ceph-radosgw服务对应的用户和key ceph-authtool /etc/ceph/ceph.client.radosgw.keyring =node3 keyring=/etc/ceph/ceph.client.radosgw.keyring log file=/var/log/radosgw/client.radosgw.gateway.log =node6 keyring=/etc/ceph/ceph.client.radosgw.keyring log file=/var/log/radosgw/client.radosgw.gateway.log ceph.client.radosgw.keyring node5:/etc/ceph/ceph.client.radosgw.keyring scp /etc/ceph/ceph.client.radosgw.keyring 创建目录并授权 mkdir /var/log/radosgw chown ceph:ceph /var/log/radosgw 启动rgw服务 systemctl start ceph-radosgw
[root@master supdev]# radosgw-admin bucket sync status --bucket=demo1 realm f6ab846d-fb50-4f02 @`hostname -s` [root@slave supdev]# systemctl stop ceph-radosgw@`hostname -s` 之后在主集群上的任意节点执行下面操作,手工对指定 bucket做reshard,记录对应的old bucket instance id [root@master supdev]# radosgw-admin bucket reshard --bucket bucket rm --purge-objects --bucket=demo1 [root@slave supdev]# radosgw-admin bucket list [ "demo8 [root@master supdev]# radosgw-admin bucket sync enable --bucket=demo1 [root@master supdev]# radosgw-admin
可以使用ceph -s来测试一下: ceph -s 安装radosgw 为radosgw创建用户和keyring 为网关服务器创建Keyring: ceph-authtool --create-keyring /etc/ceph/ceph.client.radosgw.keyring chmod +r /etc/ceph/ceph.client.radosgw.keyring 为网关实例client.radosgw.gateway 生成一个名称和key: ceph-authtool /etc/ceph/ceph.client.radosgw.keyring -n client.radosgw.gateway --gen-key 为 auth add client.radosgw.gateway -i /etc/ceph/ceph.client.radosgw.keyring 创建rgw相关的pool ceph osd pool 注意其中的: keyring = /etc/ceph/ceph.client.radosgw.keyring 启动rgw radosgw -c /etc/ceph/ceph.conf -n client.radosgw.gateway
] rgw dns name = s3.ceph.work rgw frontends = "civetweb port=80" host = radosgw-1 keyring = /etc/ceph/ceph.client.radosgw.keyring rgw socket path = /home/ceph/var/run/ceph-client.radosgw.us-zone1 .sock log file = /home/ceph/log/radosgw.us-zone1.log rgw print continue = false rgw content realm create --rgw-realm=nt --default #新建一个realm名称为nt radosgw-admin zonegroup set < zonegroup.json - -rgw-realm=nt --rgw-zonegroup=zg --default #导入之前的zonegroup配置,zonegroup名称为zg radosgw-admin zone set <
_64.2.12.2.7-0.el7 将被 安装 --> 正在处理依赖关系 librados2 = 2:12.2.7-0.el7,它被软件包 2:ceph-radosgw-12.2.7-0.el7.x86 _64 需要 --> 正在处理依赖关系 librgw2 = 2:12.2.7-0.el7,它被软件包 2:ceph-radosgw-12.2.7-0.el7.x86_64 需要 --> 正在处理依赖关系 ceph-selinux = 2:12.2.7-0.el7,它被软件包 2:ceph-radosgw-12.2.7-0.el7.x86_64 需要 --> 正在处理依赖关系 ceph-common = 2:12.2.7-0.el7,它被软件包 2:ceph-radosgw-12.2.7-0.el7.x86_64 需要 --> 正在处理依赖关系 mailcap,它被软件包 2:ceph-radosgw 2:ceph-radosgw-12.2.7-0.el7.x86_64 需要 ...... ---> 软件包 libselinux-python.x86_64.0.2.5-11.el7 将被 升级 --
4、为S3访问新建一个RADOSGW用户 为了使用 REST 接口, 首先需要为 S3 接口初始化一个 Ceph 对象网关用户. 然后为 Swift 接口新建一个子用户. sudo radosgw-admin user create --uid="yuanfan2020" --display-name="yuanfan2012 test" ? 在 gateway host 主机上进行如下操作: 1)创建 Swift 用户: sudo radosgw-admin subuser create --uid=yuanfan2020 --subuser 2)创建用户的密钥: sudo radosgw-admin key create --subuser=yuanfan2020:swift --key-type=swift --gen-secret ? radosgw_admin 命令的返回值中的 access_key 和 secret_key. 1)yum install python-boto 2)vi s3test.py import boto
前言 ceph的s3数据的同步可以通过radosgw-agent进行同步,同region可以同步data和metadata,不同region只能同步metadata,这个地方可以参考下秦牧羊梳理的 ceph radosgw 多集群同步部署流程,本篇讲述的方案与radosgw-agent的复制方案不同在于,这个属于前端复制,后端相当于透明的两个相同集群,在入口层面就将数据进行了复制分流 在某些场景下,需求可能比较简单 : 需要数据能同时存储在两个集群当中 数据写一次,读多次 两个集群都能写 一方面两个集群可以增加数据的可靠性,另一方面可以提高读带宽,两个集群同时可以提供读的服务 radosgw-agent是从底层做的同步 --access_key=admin --secret=123456 这里为了测试方便使用了简单密码 此时admin还仅仅是普通的权限,需要通过—cap添加user的capabilities,例如: radosgw-admin caps add --uid=admin --caps="users=read, write"radosgw-admin caps add --uid=admin --caps="usage=read
rgw socket path = /home/ceph/var/run/ceph-client.radosgw.us-zone1.sock log file = /home/ceph /log/radosgw.us-zone1.log rgw print continue = false rgw content length compat = true 元数据信息检查 root@demo:/home/demouser# radosgw-admin metadata list user --name client.radosgw.us-zone1 [ "en-user1 ", ··· ] root@demo:/home/demouser# radosgw-admin metadata list bucket --name client.radosgw.us-zone1 —-by 秦牧羊 附 官方升级操作指南:http://docs.ceph.com/docs/master/radosgw/upgrade_to_jewel/ 注意 由于微信公众号字数的限制,只能20000
注意下面的操作一定要确保对应的bucket相关的操作都已经全部停止,之后使用下面命令备份bucket的index radosgw-admin bi list --bucket=<bucket_name > > <bucket_name>.list.backup 通过下面的命令恢复数据 radosgw-admin bi put --bucket=<bucket_name> < <bucket_name >.list.backup 查看bucket的index id root@demo:/home/user# radosgw-admin bucket stats --bucket=bucket-maillist index操作如下: 使用命令将"bucket-maillist"的shard调整为4,注意命令会输出osd和new两个bucket的instance id root@demo:/home/user# radosgw-admin 2c76-427a-99c6-8a788ca25034.54147.1 total entries: 3 之后使用下面的命令删除旧的instance id root@demo:/home/user# radosgw-admin
使用 apt-rdepends 列出 radosgw 及其所有依赖的包: apt-rdepends radosgw | grep -v "^ " > packages.txt 这会生成一个名为 packages.txt 的文件,包含 radosgw 及其所有依赖的包的名称。 将下载的包拷贝到离线的环境中: tar -zcvf ceph_radosgw.tar.gz packages 离线环境解压安装 tar -zxvf ceph_radosgw.tar.gz packages sudo mkdir -p /var/lib/ceph/radosgw/ceph-rgw. 使用radosgw-admin 命令行工具来创建用户 radosgw-admin user create --uid="wanger" --display-name="wanger" 创建完成后需要保存好
部署RGW Cephadm将radosgw部署为管理特定领域和区域的守护程序的集合,RGW是Ceph对象存储网关服务RADOS Gateway的简称,是一套基于LIBRADOS接口封装而实现的FastCGI 使用cephadm时,radosgw守护程序是通过mon配置数据库而不是通过ceph.conf或命令行配置的。如果该配置尚未就绪,则radosgw守护进程将使用默认设置启动(默认绑定到端口80)。 命令手动创建区域、区域组和区域: radosgw-admin realm create --rgw-realm=myorg --default radosgw-admin zonegroup create --rgw-zonegroup=default --master --default radosgw-admin zone create --rgw-zonegroup=default --rgw-zone =cn-east-1 --master --default radosgw-admin period update --rgw-realm=myorg --c 可以看到RGW已经创建完成 ?
使用 Ceph S3 为 Harbor chart 提供后端存储 创建 radosgw 如果你是通过 ceph-deploy 部署的,可以通过以下步骤创建 radosgw: 先安装 radosgw: ? 将 radosgw 部署为管理特定领域和区域的守护程序的集合。 → radosgw-admin zone create --rgw-zonegroup=myzg --rgw-zone=myzone --master --default #为特定领域和区域部署一组radosgw → ceph auth get-or-create client.radosgw.gateway osd 'allow rwx' mon 'allow rwx' -o /etc/ceph/ceph.client.radosgw.keyring 分发 /etc/ceph/ceph.client.radosgw.keyring 到其它 radosgw 节点。
exec -it rook-ceph-tools-6ccb958485-j7pvb bash 查看可用的对象存储 [root@rook-ceph-tools-6ccb958485-j7pvb /]# radosgw-admin ", "realms": [ "my-store" ] } 查看可用的对象存储组 [root@rook-ceph-tools-6ccb958485-j7pvb /]# radosgw-admin default_info": "fcdf8b04-bfba-492b-b1db-9f89771c85cc", "zonegroups": [ "my-store" ] } 创建账号 radosgw-admin secret_key": "AudsraBSwjVm5hjLZ7XoBmA6Pe5Cj7JBYnT4GyTC" } 查看账号 [root@rook-ceph-tools-6ccb958485-j7pvb /]# radosgw-admin