使用ceph-deploy安装和配置RADOS Gateway (RGW)并使用S3访问集群

使用ceph-deploy安装和配置RADOS Gateway (RGW)

RADOS Gateway (RGW) 是Ceph提供的对象存储接口,兼容Amazon S3和OpenStack Swift API。以下是使用ceph-deploy工具安装和配置RGW的详细步骤。

前提条件

已部署Ceph集群并正常运行,如未安装可查看我的博客【虚拟机环境部署Ceph集群的详细指南】

安装步骤

假设我们要在ceph-mon2和ceph-mon3(与monitor节点复用)上安装RGW服务:

bash 复制代码
# 进入ceph集群配置目录(通常包含ceph.conf文件)
cd ~/ceph-cluster

# 安装RGW服务, 我对mon2 mon3的hosts文件做了两个域名的映射
# ceph-mon2和ceph-rgw1是同一个节点,同理ceph-mon3和ceph-rgw2
ceph-deploy rgw create ceph-rgw1 ceph-rgw2

1. 验证RGW服务

bash 复制代码
# 在RGW节点上检查服务状态
ssh ceph-rgw1
sudo systemctl status ceph-radosgw@rgw.ceph-rgw1.service

# 或者使用ceph命令检查
ceph -s | grep rgw

2. 默认配置

默认情况下:

  • RGW监听7480端口
  • 数据存储在默认的.rgw.root池中
  • 日志存储在/var/log/ceph/目录下

3. 创建S3用户

bash 复制代码
# 在管理节点上创建用户
radosgw-admin user create --uid="s3user" --display-name="S3 User" --access-key="ACCESS_KEY" --secret-key="SECRET_KEY"

4. 测试S3访问

bash 复制代码
# 安装s3cmd
sudo yum install -y s3cmd

# 配置s3cmd
s3cmd --configure
# 输入Access Key和Secret Key
# 设置host为rgw-node1:7480
# 使用HTTP协议(除非配置了HTTPS)

# 测试列出存储桶
s3cmd ls

高级配置

1. 更改监听端口

bash 复制代码
# 在ceph.conf中修改,将ceph-rgw2的端口修改为8480
[client.rgw.ceph-rgw2]
rgw_frontends = "civetweb port=8480"

# 推送配置并重启服务,.$(hostname -s) 替换成对应的ceph-rgw2域名
# 因为我的hostname设置的是ceph-mon,所以这里不替换找不到服务
ceph-deploy config push ceph-rgw2
ssh ceph-rgw2
sudo systemctl restart ceph-radosgw@rgw.$(hostname -s).service

2. 启用HTTPS

bash 复制代码
# 生成自签名证书(在RGW节点上)
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
  -keyout /etc/ceph/ceph-rgw.key -out /etc/ceph/ceph-rgw.crt

# 修改配置
[client.rgw.ceph-rgw2]
rgw_frontends = "civetweb port=443s ssl_certificate=/etc/ceph/ceph-rgw.crt ssl_key=/etc/ceph/ceph-rgw.key"

# 推送配置并重启服务
ceph-deploy config push ceph-rgw2

ssh ceph-rgw2
sudo systemctl restart ceph-radosgw@rgw.$(hostname -s).service

常见问题解决

  1. 服务无法启动:

    • 检查/var/log/ceph/ceph-client.rgw.*.log日志
    • 确保端口未被占用
    • 验证ceph集群健康状态
  2. S3访问被拒绝:

    • 确认Access Key和Secret Key正确
    • 检查用户权限radosgw-admin user info --uid=s3user
  3. 性能问题:

    • 考虑增加RGW实例数量
    • 调整rgw_thread_pool_size参数
    • 确保OSD节点有足够资源

后续步骤

  1. 配置负载均衡器处理多个RGW实例
  2. 设置监控和告警
  3. 实施备份策略
  4. 配置生命周期管理规则

通过以上步骤,您应该已经成功使用ceph-deploy部署了Ceph RADOS Gateway服务,并可以通过S3协议访问对象存储。


s3cmd常用命令

以下是 s3cmd 常用命令的整理,涵盖文件/存储桶管理、权限设置、实用操作等,适用于 Ceph RGW (S3 兼容接口) 和 AWS S3:


1. 存储桶 (Bucket) 管理

命令 功能 示例
创建存储桶 新建一个存储桶 s3cmd mb s3://bucket-name
删除存储桶 删除空存储桶 s3cmd rb s3://bucket-name
强制删除非空存储桶 递归删除存储桶及内容 s3cmd rb --force s3://bucket-name
列出所有存储桶 显示用户拥有的存储桶 s3cmd ls
列出存储桶内容 查看存储桶内文件 s3cmd ls s3://bucket-name/

2. 文件操作

命令 功能 示例
上传文件 上传本地文件到存储桶 s3cmd put local-file.txt s3://bucket-name/
上传目录 递归上传整个目录 s3cmd put --recursive /local/dir/ s3://bucket-name/
下载文件 下载存储桶文件到本地 s3cmd get s3://bucket-name/remote-file.txt local-file.txt
下载目录 递归下载整个目录 s3cmd get --recursive s3://bucket-name/remote-dir/ /local/path/
删除文件 删除存储桶内文件 s3cmd del s3://bucket-name/file.txt
批量删除文件 通配符删除多个文件 s3cmd del s3://bucket-name/*.log
同步目录 本地与存储桶同步 s3cmd sync /local/dir/ s3://bucket-name/

3. 权限与策略

命令 功能 示例
设置存储桶 ACL 修改存储桶权限 s3cmd setacl s3://bucket-name --acl-public (公开读)
设置文件 ACL 修改文件权限 s3cmd setacl s3://bucket-name/file.txt --acl-private (私有)
查看 ACL 查看权限配置 s3cmd info s3://bucket-name/file.txt

4. 高级功能

命令 功能 示例
生成签名 URL 生成临时下载链接 s3cmd signurl s3://bucket-name/file.txt +3600 (有效期1小时)
多部分上传大文件 分块上传大文件 s3cmd put --multipart-chunk-size=50MB large-file.iso s3://bucket-name/
限速传输 限制上传/下载速度 s3cmd put --limit-rate=1M local-file.txt s3://bucket-name/
排除文件 同步时排除特定文件 s3cmd sync --exclude="*.tmp" /local/dir/ s3://bucket-name/

5. 信息查询与配置

命令 功能 示例
查看文件信息 显示文件元数据 s3cmd info s3://bucket-name/file.txt
查看磁盘用量 统计存储桶占用空间 s3cmd du s3://bucket-name/
显示配置 查看当前配置 s3cmd --dump-config
修改配置 重新运行配置向导 s3cmd --configure

6. 实用技巧

(1) 批量操作
bash 复制代码
# 删除所有 .log 文件
s3cmd del s3://bucket-name/*.log

# 同步时排除隐藏文件
s3cmd sync --exclude=".*" /local/dir/ s3://bucket-name/
(2) 跨存储桶复制
bash 复制代码
# 从存储桶A复制到存储桶B
s3cmd cp s3://bucket-a/file.txt s3://bucket-b/
(3) 生成公开访问链接
bash 复制代码
# 设置文件为公开读
s3cmd setacl s3://bucket-name/file.txt --acl-public

# 直接访问URL(需存储桶支持)
http://rgw-endpoint:7480/bucket-name/file.txt

注意事项

  1. 删除操作谨慎使用 :
    • --force 参数会递归删除存储桶内所有文件,不可逆!
  2. 大文件传输 :
    • 超过 5GB 的文件建议使用 --multipart-chunk-size 分块上传。
  3. 权限控制 :
    • Ceph RGW 的 ACL 行为可能与 AWS S3 存在细微差异,建议测试验证。
  4. 配置文件 :
    • 所有配置保存在 ~/.s3cfg,可直接编辑或通过 --configure 修改。

通过以上命令,您可以高效管理 Ceph RGW 或 AWS S3 中的对象存储资源。

相关推荐
Wang's Blog20 小时前
Java框架 SpringCloud 快速入门: Gateway 路由的过滤器配置
java·spring cloud·gateway
小白的码BUG之路4 天前
Docker -- 构建ruoyi-gateway镜像
docker·容器·gateway
逐流人6 天前
Ceph对象存储与文件系统存储管理:从RADOS网关、S3与Swift到CephFS快照同步
linux·运维·ceph·云原生·云计算·swift·rados
逐流人7 天前
Ceph分布式存储集群配置与池管理:从配置优先级到PG、复本池与纠删码池
运维·分布式·ceph·云原生·云计算·rados
月落汀兰7 天前
建池后类型不可修改!深度拆解 Ceph PG 放置组,副本 / 纠删码池选型,快照与命名空间避坑
运维·ceph
.冰块.7 天前
Ceph 分布式存储实战(二):存储池管理与 cephx 认证授权
分布式·ceph·rados·纠删码·复本池·cephx认证与用户权限
.冰块.7 天前
Ceph 分布式存储实战(一):架构入门与 cephadm 集群部署
分布式·ceph·架构·cephadm
JJJennie7777 天前
MAI Gateway技术揭秘:大模型网关能做故障转移吗?从原理到落地
gateway·ai网关
程序员清风8 天前
Portkey AI Gateway 实战:构建可治理的多模型网关
人工智能·gateway