Ceph环境部署

前言

Ceph 向导

  • Ceph开源项目地址:
  • Ceph官方开发的相关项目总览:
    • https://github.com/ceph
  • 推荐部署方式:
    • 早期版本(Nautilus 14.X.X版本或更早):
      • ceph-deploy(使用SSH的方式进行部署)
    • 现代版本(Octopus 15.X.X及之后的版本):
      • cephadm(新的部署工具)
      • ceph-container(利用容器方式部署):https://github.com/ceph/ceph-container
      • ceph-ansible(利用Ansible剧本部署):https://github.com/ceph/ceph-ansible
      • ceph-salt(利用SaltStack部署):https://github.com/ceph/ceph-salt
      • ceph-chef(利用Chef菜谱部署):https://github.com/ceph/ceph-chef

硬件要求

CPU与内存需求

服务CPU内存存储理由
MDS4C+每进程1G+每进程1M+快速寻址,元数据映射到缓存
OSD每服务1~2C每TB数据~1G独立块设备支撑RADOS服务、执行CRUSH MAP、维护副本,数据重构时有更多内存需求
MON每服务1~2C每进程1G+每进程10G+存算融合架构,根据计算需求调整

存储需求

  • 建议分别使用独立的硬盘承载:操作系统和软件,单个OSD服务,WAL预写日志
  • 按需选择硬盘的大小和个数,基于成本考量,建议选择大容量硬盘的同时避免边际效应
  • 可选择SSD作为承载OSD的预写日志或CephFS元数据的存储介质,以达到更优的性价比,但需要注意:
    • 并发写性能(IPS):WAL涉及写密集语义,廉价SSD的高负载并发写性能可能较低
    • 顺序写:WAL也有一定的顺序写需求,在承载多OSD的WAL时要考虑顺序写的极限

网络需求

  • 存储前后端服务非常依赖网络,因此至少需要2xGE网络,推荐使用10Gb、25Gb、40Gb或100Gb传输速率的设备组网

基础架构

图片[1]-Ceph环境部署 – 北梦の博客-北梦の博客

环境准备

准备三台虚拟机,虚拟机基本配置如下,使用的是centos7

两块硬盘,两张网卡

图片[2]-Ceph环境部署 – 北梦の博客-北梦の博客

1.配置网络

主机名NIC1(存储前端,要求能通外网)-ens32NIC2(存储后端)-ens33
zy-ceph01192.168.110.101/24172.18.1.101/24
zy-ceph02192.168.110.102/24172.18.1.102/24
zy-ceph03192.168.110.103/24172.18.1.103/24

ens32需要和vm虚拟机的nat网卡的网段一致,ens33任意合理网段即可

2.配置hosts

cat >> /etc/hosts << EOF
192.168.110.101 zy-ceph01
192.168.110.102 zy-ceph02
192.168.110.103 zy-ceph03
EOF

3.配置主机名和网络

hostnamectl set-hostname zy-ceph01 #其他同理

4.创建用于部署Ceph的用户(可选建议)

useradd cephduser		##用户名可自定义,但不要使用ceph*
passwd cephduser		##在生产环境中,密码必须尽量复杂

确保各 Ceph 节点上新创建的用户都有 sudo 权限

echo "cephduser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephduser
sudo chmod 0440 /etc/sudoers.d/cephduser
su - cephduser			##切换到该用户,后续命令将使用此用户执
sudo ifconfig			##测试,如果后续碰到权限问题请在命令前加sudo

5.关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

6.关闭selinux

setenforce 0
sed -i 's/enforcing/disabled/' /etc/selinux/config

7.设置文件描述符(调优)

echo 'ulimit -SHn 102400' >> /etc/rc.local		##/etc/profile亦可
cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 65535
EOF

8.内核参数优化(调优)

cat >> /etc/sysctl.conf << EOF
kernel.pid_max = 4194303			##用户打开最大进程数,2^22-1
vm.swappiness = 0				##关闭交换分区
EOF

9.更换yum源

所有节点生成Ceph yum源文件

cat << EOF | tee /etc/yum.repos.d/ceph.repo 
[Ceph]
name=Ceph packages for $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-nautilus/el7/x86_64/

enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1

[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1

[ceph-source]
name=Ceph source packages
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-nautilus/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
EOF

重建仓库缓存

yum makecache

10.安装基础软件包

yum -y install epel-release.noarch
yum -y install vim net-tools bash-completion unzip sshpass wget

11.调优,按需选择

  • echo "8192" > /sys/block/sd[x]/queue/read_ahead_kb ##预读策略,预读大小
  • echo "deadine" > /sys/block/sd[x]/queue/scheduler ##适用于HDD的IO调度
  • echo "noop" > /sys/block/sd[x]/queue/scheduler ##适用于SSD的IO调度

一般第二块磁盘的名称为sdb,可以使用lsblk查看

虚拟机可以直接选择

echo "8192" > /sys/block/sdb/queue/read_ahead_kb
echo "noop" > /sys/block/sdb/queue/scheduler

12.安装时间同步软件chrony(注意部分系统可能已经内置该软件)

yum -y install chrony
vim /etc/chrony.conf
  • 注释掉公网的时间同步服务器域名
  • 插入【server [IP] iburst】,此处[IP]为主节点IP,此操作每个节点都要执行
  • 插入【allow [IP段/MASK]】,[IP]为集群所在的网络地址(网段),仅主节点执行
  • 插入【local stratum 10】,设置本地同步级别为10(1-15)*,而且即便本机时间没有向上级同步,也允许客户端向本地获取时间,仅主节点执行
图片[3]-Ceph环境部署 – 北梦の博客-北梦の博客

重启chrony服务

systemctl restart chronyd

测试同步服务

chronyc sources -v

MS项的值为^时同步即为同步成功

图片[4]-Ceph环境部署 – 北梦の博客-北梦の博客

第一次可能会失败,重试几次即可

vim /etc/chrony.conf
  • 注释掉公网的时间同步服务器域名
  • 插入【server [IP] iburst】,此处[IP]为主节点IP,此操作每个节点都要执行
  • 插入【allow [IP段/MASK]】,[IP]为集群所在的网络地址(网段),仅主节点执行
  • 插入【local stratum 10】,设置本地同步级别为10(1-15)*,而且即便本机时间没有向上级同步,也允许客户端向本地获取时间,仅主节点执行
图片[5]-Ceph环境部署 – 北梦の博客-北梦の博客

重启chrony服务

systemctl restart chronyd

测试同步服务

chronyc sources -v
图片[6]-Ceph环境部署 – 北梦の博客-北梦の博客

第一次可能会失败,重试几次即可

13.配置免密互信,使节点间可直接登录,为之后Ceph-Deploy批量配置作准备*

ssh-keygen

按3次回车在默认路径生成无口令的密钥对

ssh-copy-id cephduser@zy-ceph01
ssh-copy-id cephduser@zy-ceph02
ssh-copy-id cephduser@zy-ceph03

在每一台分别输入上述3条命令,输入用户cephduser的密码

图片[7]-Ceph环境部署 – 北梦の博客-北梦の博客

测试免密登录

ssh cephduser@zy-ceph01
ssh cephduser@zy-ceph02
ssh cephduser@zy-ceph03

可以直接登录就说明没有问题

图片[8]-Ceph环境部署 – 北梦の博客-北梦の博客
ssh-copy-id root@zy-ceph01
ssh-copy-id root@zy-ceph02
ssh-copy-id root@zy-ceph03

在每一台分别输入上述3条命令,输入用户root的密码

测试免密登录

ssh root@zy-ceph01
ssh root@zy-ceph02
ssh root@zy-ceph03

可以直接通信就说明没有问题

14.在所有节点安装Ceph-Deploy(v2.0.1)

检查Ceph-Deploy版本是否为2.0.1

yum list|grep ceph-deploy
图片[9]-Ceph环境部署 – 北梦の博客-北梦の博客

安装Ceph-Deploy

yum install -y ceph-deploy

开始部署

ceph-deploy命令概述

常用命令描述
new开始部署一个新课ceph存储集群,并生成CLUSTER.conf集群配置文件和keyring认证文件
install在远程主机上安装ceph相关的软件包,可以通过–release指定安装的版本
rgw管理RGW守护进程
mgr管理MGR守护进程
mds管理MDS守护进程
mon管理MON守护进程
gatherkeys收集用于配置新节点的身份验证密钥
disk管理远程主机的硬盘
osd在远程主机上准备数据磁盘;即为指定主机的指定数据盘绑定OSD服务
repo仓库定义配置管理
admin分发集群配置文件和admin认证文件到远程主机
config分发集群配置文件ceph.conf到远程主机,或从远程主机拷贝此文件
uninstall删除远程主机的Ceph软件包
purgedata删除远程主机的Ceph数据,包括/var/lib/ceph和/etc/ceph下的内容
purge删除远程主机的Ceph软件包和数据,相当于uninstall+purgedata
forgetkeys遗忘(删除)本地主机所有的验证keyring,包括client.admin、monitor、bootstrap等认证文件
pkg管理远程主机的安装包
calamari安装和配置 Calamari 节点;它是一个web监控平台;需要预配置包含该软件包的软件仓库
su - cephduser

1.在主节点中创建一个目录,用于存放Ceph生成的配置文件、密钥对

将Ceph01作为主节点,后续部署操作将在此节点,以ceph_cluster为工作目录执行ceph-deploy命令(主节点)

mkdir ceph_cluster && cd ceph_cluster

安装pip(如果已经安装可以省略)(主节点)

curl https://cdn.b52m.cn/static/get-pip-py2.py -o get-pip.py
python get-pip.py
curl https://cdn.b52m.cn/static/get-pip.py -o get-pip.py
python get-pip.py

2.在主节点上创建Ceph集群

创建MON服务,并在当前工作目录生成配置文件等(主节点)

ceph-deploy new zy-ceph01 zy-ceph02
图片[10]-Ceph环境部署 – 北梦の博客-北梦の博客

3.在集群配置目录下的集群配置文件【ceph.conf】的global段中定义网段

  • public_network = 192.168.110.0/24 ##用于客户端访问集群服务
  • cluster_network = 172.18.1.0/24 ##用于内部数据同步(如OSD数据复制、心跳检测)
  • 修改集群副本数为“2”(可选,针对低配实验环境)
    • osd pool default size = 2

修改配置文件(主节点),例如:

vim ceph.conf
[global]
fsid = 9ad73733-1d25-4c44-abf4-7f27c0c3c473
mon_initial_members = zy-ceph01, zy-ceph02
mon_host = 192.168.110.101,192.168.110.102
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
public_network = 192.168.110.0/24
cluster_network = 172.18.1.0/24

推送配置到所有节点(主节点)

ceph-deploy --overwrite-conf config push zy-ceph01 zy-ceph02

重启服务(每个节点都要执行)

sudo systemctl restart ceph-*.target

4.为每个节点安装Ceph

ceph-deploy install --no-adjust-repos --nogpgcheck zy-ceph01 zy-ceph02

批量安装,同时安装ceph-radosgw,–no-adjust-repos:安装过程中不调整为官方源

sudo yum install -y ceph

手动为所有节点执行,并行操作效率更高

查询版本

ceph -v
图片[11]-Ceph环境部署 – 北梦の博客-北梦の博客

5.初始化mon,生成检测集群所需的密钥

ceph-deploy mon create-initial
图片[12]-Ceph环境部署 – 北梦の博客-北梦の博客

执行ls可以发现目录下多了几个keyring文件

查询服务状态

主节点

sudo systemctl status ceph-mon@zy-ceph01
图片[13]-Ceph环境部署 – 北梦の博客-北梦の博客

子节点

sudo systemctl status ceph-mon@zy-ceph02
图片[14]-Ceph环境部署 – 北梦の博客-北梦の博客

分发集群配置和admin认证文件

ceph-deploy admin zy-ceph01 zy-ceph02
图片[15]-Ceph环境部署 – 北梦の博客-北梦の博客

可以使用ls /etc/ceph查看是否生成ceph.conf文件

图片[16]-Ceph环境部署 – 北梦の博客-北梦の博客

生成的客户端管理员密钥需要对主节点的集群部署用户开放权限

如果为root用户可以省略

sudo setfacl -m u:cephduser:rw /etc/ceph/ceph.client.admin.keyring

使用ls -l /etc/ceph可以发现权限多出了个+

  • 完成后可在mon节点输入ceph -s查询集群状态
  • 也可在mon节点查找带mon关键字的进程和其侦听的端口,默认端口为6789
  • 可为mon配置DNS轮询或3层负载均衡,但通常mon压力较小,不会成为性能瓶颈
图片[17]-Ceph环境部署 – 北梦の博客-北梦の博客
图片[18]-Ceph环境部署 – 北梦の博客-北梦の博客

6.部署mgr,用于监测集群

ceph-deploy mgr create zy-ceph01 zy-ceph02
图片[19]-Ceph环境部署 – 北梦の博客-北梦の博客

查询状态

ceph -s
图片[20]-Ceph环境部署 – 北梦の博客-北梦の博客
sudo ss -antlup | grep mgr
图片[21]-Ceph环境部署 – 北梦の博客-北梦の博客

7.在主节点上开始部署Ceph-osd(请确保集群后端网络正常)

列出该节点的块设备

ceph-deploy disk list zy-ceph02
图片[22]-Ceph环境部署 – 北梦の博客-北梦の博客

可以看见第二块磁盘的名称为sdb

擦除指定主机的指定磁盘(可选)

ceph-deploy disk zap zy-ceph01 /dev/sdb
ceph-deploy disk zap zy-ceph02 /dev/sdb

每个主机的每个业务硬盘创建OSD,要在主节点上为每个节点的每个业务硬盘执行

ceph-deploy osd create --data /dev/sdb zy-ceph01
ceph-deploy osd create --data /dev/sdb zy-ceph02
图片[23]-Ceph环境部署 – 北梦の博客-北梦の博客
图片[24]-Ceph环境部署 – 北梦の博客-北梦の博客

查询状态

ceph -s
图片[25]-Ceph环境部署 – 北梦の博客-北梦の博客

可以发现osd为2

安装完毕,检查集群状态

  • 输入ceph -s,检查集群状态信息;或输入ceph df,检查集群容量信息
    • 集群信息:可能会有一个告警,因为集群运行在不安全模式下,执行ceph config set mon auth_allow_insecure_global_id_reclaim false命令关闭不安全模式即可
    • 服务信息:包含mon、mgr、mds、osd、rgw,且数量符合节点配置
    • 数据信息:存储池、PG、对象的数量,已用和可用的容量、PG状态等符合实配
  • 输入ceph osd tree,可查询到集群各节点的osd服务和它们对应的硬盘
  • 若其它节点中没有密钥,可向主节点手动请求&同步密钥(可选)
    • cd /etc/ceph ##以此目录为工作目录,输入pwd可查询
    • ceph-deploy gatherkeys {hostname} ##向主节点同步;其它所有节点都要执行
  • 完成Ceph部署,建议重新登录用户以刷新环境变量
图片[26]-Ceph环境部署 – 北梦の博客-北梦の博客
图片[27]-Ceph环境部署 – 北梦の博客-北梦の博客
  • 如果安装过程中碰到难以解决的阻碍,可以尝试执行以下命令清理环境,然后重新部署Ceph
    • ceph-deploy purgedata {hostname1} [{hostnameX}]
    • ceph-deploy forgetkeys
  • 还可以执行下列命令,将本地安装包一并清理
    • ceph-deploy purge {hostname1} [{hostnameX}]
  • 如果需要删除某OSD或移除对应的块设备,必须遵循以下流程:
    • 剔除设备:ceph osd out {osd-num}
      • 不允许批量操作,除非存储池中没有重要数据;
    • 停止服务:sudo systemctl stop ceph-osd@{osd-num}
    • 擦除数据(可选):ceph osd purge {osd-num} –yes-i-really-mean-it
    • 移出 crush map:ceph osd crush remove {name}
    • 删除 ceph auth 记录:ceph auth del osd.{osd-num}
    • 移出 osdmap:ceph osd rm {osd-num}
    • 手动删除 ceph.conf 中的记录(如果有)
      • 必须等待集群自愈后(PG 状态为 active+clean)才能继续删除*

8.扩展Ceph集群

扩展Ceph集群

仅安装ceph通用组件和mon组件(节点3执行)

yum install ceph-common ceph-mon

为集群添加mon节点(主节点执行)

ceph-deploy mon add zy-ceph03

查验集群mon节点状态,将返回JSON数据;带上--format json-pretty参数会格式化显示,可读性更佳(主节点执行)

ceph quorum_status --format json-pretty

或者使用ceph -s(主节点执行)

图片[28]-Ceph环境部署 – 北梦の博客-北梦の博客

扩展Ceph-mgr节点

仅安装ceph-mgr组件(节点3执行)

sudo yum install ceph-mgr -y

为集群添加mgr节点(主节点执行)

ceph-deploy mgr create zy-ceph03
图片[29]-Ceph环境部署 – 北梦の博客-北梦の博客

查询运行状态(节点3执行)

sudo systemctl status ceph-mgr@zy-ceph03.service
图片[30]-Ceph环境部署 – 北梦の博客-北梦の博客

分发集群配置和admin认证文件(主节点执行)

ceph-deploy admin zy-ceph03

扩展Ceph-osd节点

安装osd组件(节点3执行)

sudo yum install ceph -y

创建OSD(主节点执行)

ceph-deploy osd create --data /dev/sdb zy-ceph03
图片[31]-Ceph环境部署 – 北梦の博客-北梦の博客

查验集群mgr节点状态(主节点执行)

ceph -s
图片[32]-Ceph环境部署 – 北梦の博客-北梦の博客

修改Ceph配置(主节点执行)

ceph config set mon auth_allow_insecure_global_id_reclaim false

如果报错可能是因为/etc/ceph/ceph.conf文件少了个换行

图片[33]-Ceph环境部署 – 北梦の博客-北梦の博客

执行以下命令

echo "" >> /etc/ceph/ceph.conf

添加后保存重新运行命令

再次查验集群mgr节点状态(主节点执行)

ceph -s
图片[34]-Ceph环境部署 – 北梦の博客-北梦の博客

运行后health显示为HEALTH_OK

9.管理Ceph-RBD存储池

ceph osd pool create {poolName} {pgNum} [pgpNum]

  • 创建存储池,pg数量与osd数量正相关,此处建议设为16-64;pgp数量通常与pg一致,可缺省
ceph osd pool create testpool 16
图片[35]-Ceph环境部署 – 北梦の博客-北梦の博客

ceph osd pool ls [detail]

  • 列出存储池,带上detail表示列出细节
ceph osd pool ls
图片[36]-Ceph环境部署 – 北梦の博客-北梦の博客

10.利用rados命令直接使用存储池

rados put {oid} {fileName} -p {poolName}

  • 指定oid并上传文件对象到存储池
rados put testfile /bin/rbd -p testpool

查询Ceph存储使用情况

ceph df
图片[37]-Ceph环境部署 – 北梦の博客-北梦の博客

rados ls -p {poolName}

  • 列出该存储池中的对象
rados ls -p testpool
图片[38]-Ceph环境部署 – 北梦の博客-北梦の博客

ceph osd map {poolName} {oid}

  • 查询存储池中指定对象的映射信息
ceph osd map testpool testfile
图片[39]-Ceph环境部署 – 北梦の博客-北梦の博客

rados get {oid} -p {poolName} {fileName}

  • 从存储池中获取对象并保存到本地文件系统
rados get testfile -p testpool ./newfile
图片[40]-Ceph环境部署 – 北梦の博客-北梦の博客

rados rm {oid} -p {poolName}

  • 从存储池中删除对象
rados rm testfile -p testpool
rados ls -p testpool
图片[41]-Ceph环境部署 – 北梦の博客-北梦の博客

ceph osd pool delete –yes-i-really-really-mean-it

  • 删除存储池
  • <pool-name>: 要删除的存储池的名称。在命令中需要重复两次,这是为了确保你确实想要删除这个存储池。
  • --yes-i-really-really-mean-it: 这是一个确认标志,表示你确实想要删除这个存储池。Ceph要求你明确确认这个操作,以防止误操作。
ceph osd pool delete testpool testpool --yes-i-really-really-mean-it

使用ceph osd pool ls查询存储池

如果出现以下错误可以尝试

图片[42]-Ceph环境部署 – 北梦の博客-北梦の博客
使用命令临时启用池删除功能
ceph tell mon.* injectargs --mon_allow_pool_delete=true
  • mon.*:表示对所有 Monitor 节点生效。
  • injectargs:用于动态修改 Monitor 的配置。

执行完重新删除即可

恢复配置(可选)
ceph tell mon.* injectargs --mon_allow_pool_delete=false
永久修改配置(可选)

如果你希望永久允许池删除,可以修改 Ceph 的配置文件(ceph.conf),在 [mon] 部分添加以下配置:

[mon]
mon_allow_pool_delete = true

然后重启 Monitor 服务以使配置生效:

sudo systemctl restart ceph-mon.target

11.RBD业务测试

创建Ceph-RBD存储池(在主节点工作目录下操作)

ceph osd pool create {poolName} {pgNum} {pgpNum}
  • pg数量与osd数量正相关,此处建议设为16-64;pgp数量通常与pg一致,可缺省
ceph osd pool create rpdpool 16

使用ceph osd pool ls查询存储池

将存储池关联为RBD应用类型

ceph osd pool application enable {poolName} {appName}
  • 应用名可选cephfs、rbd、rgw,此处为rbd
ceph osd pool application enable rpdpool rbd
rbd pool init -p {poolName}
  • 初始化存储池(只针对rbd类型)
rbd pool init  -p rpdpool

在存储池中创建1G容量映像

rbd create {poolName/imgName} -s 1G
  • 后续可用rbd resize扩容
rbd create rpdpool/sqldb -s 1G
rbd info {poolName/imgName}
  • 查询映像信息
rbd info rpdpool/sqldb
图片[43]-Ceph环境部署 – 北梦の博客-北梦の博客

客户机测试

再次克隆一台虚拟机,做好环境准备,目前机器:

主机名NIC1(存储前端,要求能通外网)-ens32NIC2(存储后端)-ens33
zy-ceph01192.168.110.101/24172.18.1.101/24
zy-ceph02192.168.110.102/24172.18.1.102/24
zy-ceph03192.168.110.103/24172.18.1.103/24
kehu192.168.110.104/24172.18.1.104/24

若要在客户端访问RBD,则需要安装ceph-common,客户端和集群块设备之间并非使用iSCSI协议沟通,而是通过Linux内核(所以客户端不能为Windows)

安装ceph-common(节点4执行)

yum install -y ceph-common.x86_64

在主节点复制集群配置文件到客户端,客户端利用其中的信息访问集群(主节点执行)

scp -p /etc/ceph/ceph.conf root@192.168.110.104:/etc/ceph/

复制密钥到客户端,生产环境下建议限制客户端访问密钥的权限(主节点执行)

scp -p /etc/ceph/ceph.client.admin.keyring root@192.168.110.104:/etc/ceph
图片[44]-Ceph环境部署 – 北梦の博客-北梦の博客

完成后在客户端可输入ceph -s查询集群状态

图片[45]-Ceph环境部署 – 北梦の博客-北梦の博客

映射映像

rbd map rpdpool/sqldb
图片[46]-Ceph环境部署 – 北梦の博客-北梦の博客

执行以下命令

echo "" >> /etc/ceph/ceph.conf
图片[47]-Ceph环境部署 – 北梦の博客-北梦の博客
  • 若客户端的Linux内核版本过旧,则需禁用存储池的部分功能,具体可参考报错回显内容
  • rbd info {poolName/imgName} ##查询&确认映像的信息
  • rbd feature disable {poolName/imgName} object-map fast-diff deep-flatten ##调整功能
  • rbd info {poolName/imgName} ##再次查询&确认映像的信息,确认无误后重新映射
rbd info rpdpool/sqldb
rbd feature disable rpdpool/sqldb object-map fast-diff deep-flatten
rbd info rpdpool/sqldb
rbd map rpdpool/sqldb
图片[48]-Ceph环境部署 – 北梦の博客-北梦の博客

查询新块设备

lsblk
图片[49]-Ceph环境部署 – 北梦の博客-北梦の博客

初始化rbd0

mkfs.ext4 /dev/rbd0
图片[50]-Ceph环境部署 – 北梦の博客-北梦の博客

手动挂载到本地目录

mkdir /mnt/rbd
mount /dev/rbd0 /mnt/rbd

查询挂载状态

df -h
图片[51]-Ceph环境部署 – 北梦の博客-北梦の博客

自动挂载(可选)

echo "rpdpool/sqldb id=admin,keyring=/etc/ceph/ceph.client.admin.keyring" >> /etc/ceph/rbdmap

使用blkid查询/dev/rbd0的uuid

图片[52]-Ceph环境部署 – 北梦の博客-北梦の博客
echo "UUID=db5317e8-8002-4e28-a3a8-a73363d750d3 /mnt/rbd ext4 defaults,_netdev 0 0" >> /etc/fstab

启用rbdmap服务:负责把RBD镜像映射为本地块设备

systemctl enable rbdmap

重启虚拟机查询是否自动挂载

df -h
图片[53]-Ceph环境部署 – 北梦の博客-北梦の博客

12.RGW业务测试

对象存储没有目录层级结构,而是采用唯一的全局标识符(如 bucket-name/object-key)访问数据,数据以“对象”形式存储,每个对象包含数据、元数据和唯一标识符(如UUID或哈希值)
RGW提供RESTful API,客户端可通过标准的 HTTP/HTTPS 接口完成数据的增删改查操作

部署RGW业务

安装radosgw服务(节点3执行)
yum install -y ceph-radosgw
ceph-deploy [–overwrite-conf] rgw create {hostname}
  • 在主节点操作,填写安装了rgw的主机名;可选项–overwrite-conf:覆盖式生成新的配置文件

主节点执行

ceph-deploy rgw create zy-ceph03
图片[54]-Ceph环境部署 – 北梦の博客-北梦の博客
若节点是新部署的,则需要复制集群配置文件(主节点执行)
scp -p /etc/ceph/ceph.conf /etc/ceph/ceph.client.admin.keyring root@zy-ceph03:/etc/ceph/
查询集群状态(主节点执行)
ceph -s
  • 也可在rgw节点查找带radosgw关键字的进程和其侦听的端口,访问rgw节点的该端口能得到对象存储API相关的xml配置信息
  • 生产环境建议至少部署 3 个 RGW,并通过负载均衡器(如 Nginx、HAProxy)对外提供服务
图片[55]-Ceph环境部署 – 北梦の博客-北梦の博客
主节点创建 RADOSGW 用户(主节点执行)
radosgw-admin user create --uid="testuser" --display-name="Test User"
"keys": [
        {
            "user": "testuser",
            "access_key": "WXNHPPBGZJE7M3H7W60Q",
            "secret_key": "jClXsbl06sDegwl6rc6akCjNG99c7D2JhqdADp6B"
        }
    ],
客户端安装和配置awscli(节点3执行)

安装awscli,用于访问S3 API

yum install awscli -y

查询awscli版本,验证是否可用

aws –version

配置密钥ID(必填)

  • aws configure set aws_access_key_id <access_key>
aws configure set aws_access_key_id WXNHPPBGZJE7M3H7W60Q

配置密钥(必填)

  • aws configure set aws_secret_access_key <secret_key>
aws configure set aws_secret_access_key jClXsbl06sDegwl6rc6akCjNG99c7D2JhqdADp6B

配置默认区域名称

aws configure set default.region us-east-1

配置默认输出格式

aws configure set default.output_format json

也可以直接输入aws configure命令,交互式地输入以上信息

使用 awscli 测试 S3 接口

设置环境变量

  • export ENDPOINT=http://{RGW节点IP}:7480
export ENDPOINT=http://192.168.110.103:7480

创建 Bucket

aws --endpoint-url $ENDPOINT s3 mb s3://test
图片[56]-Ceph环境部署 – 北梦の博客-北梦の博客

上传文件

echo 'Hello Ceph RGW!' > test.txt
aws --endpoint-url $ENDPOINT s3 cp test.txt s3://test
图片[57]-Ceph环境部署 – 北梦の博客-北梦の博客

列出文件

aws --endpoint-url $ENDPOINT s3 ls s3://test
图片[58]-Ceph环境部署 – 北梦の博客-北梦の博客

下载文件

aws --endpoint-url $ENDPOINT s3 cp s3://test/test.txt ./123.txt
cat 123.txt
图片[59]-Ceph环境部署 – 北梦の博客-北梦の博客

如果 Bucket 是公共可读的,可直接用浏览器或 curl 访问

curl http://192.168.110.103:7480/test/test.txt
图片[60]-Ceph环境部署 – 北梦の博客-北梦の博客

设置Bucket为公共可读

aws --endpoint-url $ENDPOINT s3api put-bucket-acl \
  --bucket test \
  --acl public-read

设置单个Object为公共可读

aws --endpoint-url $ENDPOINT s3api put-object-acl \
  --bucket test \
  --key test.txt \
  --acl public-read

以上操作可能需要等待一定的时间才能生效;访问对象时路径末尾不要加“/”

温馨提示:本文最后更新于2025-05-12 21:12:46,某些文章具有时效性,若有错误或已失效,请在下方留言或联系站长
© 版权声明
THE END
喜欢就支持一下吧
点赞1 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情

    暂无评论内容