使用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 中的对象存储资源。

相关推荐
没有bug.的程序员4 小时前
Spring Cloud Gateway 性能优化与限流设计
java·spring boot·spring·nacos·性能优化·gateway·springcloud
小坏讲微服务14 小时前
Spring Cloud Alibaba Gateway 集成 Redis 限流的完整配置
数据库·redis·分布式·后端·spring cloud·架构·gateway
半旧夜夏3 天前
【Gateway】服务调用和网关配置攻略
java·spring boot·spring cloud·gateway
小坏讲微服务4 天前
Nginx集群与SpringCloud Gateway集成Nacos的配置指南
spring boot·nginx·spring cloud·gateway
小坏讲微服务4 天前
使用 Spring Cloud Gateway 实现集群
java·spring boot·分布式·后端·spring cloud·中间件·gateway
没有bug.的程序员4 天前
Spring Cloud Gateway 路由与过滤器机制
java·开发语言·spring boot·spring·gateway
serendipity_hky5 天前
【微服务 - easy视频 | day01】准备工具+gateway网关及路由至内部服务
java·微服务·架构·gateway·springcloud
刘某的Cloud8 天前
ceph osd down排查
linux·运维·ceph·系统·osd
三口吃掉你9 天前
微服务之网关(Spring Cloud Gateway)
java·网关·微服务·gateway
余衫马10 天前
微服务SpringCloud报错合集
spring boot·gateway