集群配置以及用户授权

配置

使用cephadm安装完成ceph之后,会在/etc/ceph目录中自动生成ceph的配置文件ceph.conf,采用ini file格式,使用#或者;对配置进行注释

云计算-ceph的配置使用_swift

  • global 全局配置,对所有的服务和客户端有效,优先级最低
  • mon mgr osd等都是ceph相关组件的配置

配置修改

#ceph配置修改和查看
ceph config set
ceph config ls

云计算-ceph的配置使用_客户端_02

ceph的集中配置管理数据库默认存放在每个MON节点的/var/lib/ceph/云计算-ceph的配置使用_客户端_03host/store.db中,该数据库由mon节点负责维护。

数据库的容量会随着时间增大,可以使用命令ceph config set mon mon_compact_on_start true使得mon每次启动后对其进行压缩

网络配置举例

生产环境中,ceph需要两个网络平面来承载,公共网络和集群网络,前者用于客户端访问ceph提供的存储资源,后者是后端网络,用于ceph组件之间的交互,数据复制。

云计算-ceph的配置使用_元数据_04

#将集群public network 设置为172.16.0.0/24网段,cluster network 设置为
#192.168.1.0/24
#使用命令ceph config set修改
ceph config get mon  public_network
ceph config set mon cluster_network 172.16.0.0/24

云计算-ceph的配置使用_swift_05

ceph认证

ceph认证授权的使用场景分为:

1、客户端接入ceph资源池

2、ceph集群组件之间交互

默认是使用cephx协议进行认证授权,在进行ceph访问的时候,需要指定用户和keying

认证流程

1、clinet像mon发起创建用户的请求,mon会产生对应的密钥并将密钥返回给clinet

2、mon同时将生产的密钥分享给MDS和osd

3、发起认证请求,合法时,MON产生sesion key,并使用密钥加密,返回给客户端

4、客户端收到session key进行解密,并向MON申请session 的ticket,返回给客户端

5、客户端使用ticket与mds和osd进行交互

云计算-ceph的配置使用_客户端_06


用户

cephx协议格式是云计算-ceph的配置使用_客户端_07id的格式,分为两大类

1、客户端

2、服务进程

ceph auth ls

云计算-ceph的配置使用_元数据_08

#指定用户
cehp -s --id admin --keying /etc/ceph/ceph.keying

#创建用户
ceph auth add 
ceph auth get-or-create
ceph auth get-or-create-key

#用户授权
#允许用户对mon进行读写和执行
ceph auth add clinet test mon "allow rwx"

#用户常用命令
#查看所有用户
ceph auth ls
#查看相信信息
ceph auth get 
#获取key
ceph auth print-key 
#删除用户
ceph auth del 
#用户备份
ceph auth get 
#导入用户
ceph auth import -i

对象存储以及网关站点部署

对象存储

对象存储是一个基于对象的海量存储服务,为用户提供海量,安全,高可用,低成本的数据存储能力,对象是osd中的数据存储的基本单位,一个对象实际上是一个文件的数据与其相关的属性信息的集合体,包括key,metadata,data三部分。

  • key 键值,对象的名称
  • metadata 元数据,对象的描述信息
  • data 实际数据

云计算-ceph的配置使用_客户端_09

桶 bucket,是obs中对象存储的容器,对象存储提供了基于桶和对象的扁平化存储方式,桶中所有的对象都处于同一逻辑层级,去除了文件系统中的多层级树形目录结构

每个桶都有自己的存储类别,访问权限,所属区域等属性,用户可以在不同的区域创建不通的存储列别和访问权限的桶,并配置更多高级属性来满足不同场景的存储场景

对象存储网关

ceph的对象存储服务可直接开发应用调用rados实现,也可以通过rgw (rados gateway)实现,rgw是建立librados上一个对象存储接口,它为应用访问ceph存储集群提供了restful网关,当前支持两种接口s3,swift

云计算-ceph的配置使用_客户端_10


在rgw中,realm是一个全局的,独一无二的,由zonegroup组成命名空间,每个realm都有对应的period,在进行配置修改的时候,需要更新并提交period,使得配置生效。

zone,是由一个或者多个rgw实例组成的逻辑概念,zone的配置保存在period中,多个zone可以组成zonegroup,用于多站点服务

云计算-ceph的配置使用_元数据_11

当创建对象存储网关后,系统会自动生成数个资源池,分别是

rgw.root,rgw.log,rgw.control ,rgw.meta,rgw.buckets.index,buckets.data,rg等

对象存储网关操作

#创建realm
radosgw-admin realm create --rgw-realm=for_swift --default

#创建zonegroup
radosgw-admin zonegroup create --rgw-realm=for_swift  \
--rgw-zonegroup=for_swift --master --default

云计算-ceph的配置使用_swift_12

云计算-ceph的配置使用_元数据_13

#创建zone
radosgw-admin zone create --rgw-realm=for_swift \
--rgw-zonegroup=for_swift --rgw-zone=for_swift --master --default

云计算-ceph的配置使用_客户端_14

#确认配置生效
radosgw-admin period update --rgw-realm=for_swift --commit

#创建rgw,并和已经创建的for_swift进行关联,数量为2
ceph orch apply rgw for_swift --realm=for_swift --zone=for_swift \
--placement="2" --port=8080

云计算-ceph的配置使用_客户端_15

#创建用户
radosgw-admin user create --uid=swift --display-name=swift

#创建子账号swift_rgw
radosgw-admin subusr create --uid=swift --subuser=swift:swift_rgw \
-- access=full

#生成key
radosgw-admin key create --subuser=swfit:swift_rgw \
--key-type=swfit --gen-secret

块存储RBD和文件存储cephFS

ceph的块存储

基于rados构建,经过精简配置,大小调整后,在多个osd上实现存储的条带化,可以实现快照,复制和存储的强一致性。

应用访问块存储通过两种方式实现

  • librdb用户接口,libardos.so库作为客户端连接rados集群
  • krbd内核接口,通过rdb命令将块设备映射为主机设备,可以挂载到指定目录

云计算-ceph的配置使用_swift_16


创建块存储并挂载给客户端

#创建rbd资源池
ceph osd pool create block
ceph osd pool application enable block rbd

云计算-ceph的配置使用_swift_17

#创建rbd设备
rbd create --size 3G block/rbd1
rbd create --size 5G block/rbd2
#查看rbd信息
rpd info block/rbd1
rpd info block/rdb2

云计算-ceph的配置使用_swift_18

云计算-ceph的配置使用_swift_19

#创建用户
ceph auth add client.block mon 'allow r' osd 'allow rwx pool=block'
#检查用户
ceph auth get cleient.block 

云计算-ceph的配置使用_客户端_20

#将用户block的keying文件导出为ceph.clien.block.keyring
ceph auth get client.block -o ceph.client.block.keyring

云计算-ceph的配置使用_元数据_21

#发送给客户端
scp ceph.client.block.keyring root@192.168.1.14:/etc/ceph/

#客户端挂载
yum install -y ceph
rbd map block/rdb1 --name client.block
rbd map block/rdb2 --name client.block

#检查客户端挂载情况
lsblk

云计算-ceph的配置使用_客户端_22

#客户端格式化并挂载
mkdir -p /mnt/rbd{1,2}
mkfs.xfs /dev/rbd0
mkfs.xfx /dev/rbd1
mount /dev/rbd0 /mnt/rbd1
mount /dev/rbd0 /mnt/rbd2

云计算-ceph的配置使用_元数据_23

#设置为自动挂载
#vim /etc/fstab

/dev/rdb/block/rbd1    /mnt/rbd1   xfs   defaults,_netdev 0 0 
/dev/rdb/block/rbd1    /mnt/rbd1   xfs   defaults,_netdev 0 0


#编辑/etc/ceph/rdbmap,
block/rdb1   id=block,keyring=/etc/ceph/ceph.client.block.keyring
block/rdb2   id=block,keyring=/etc/ceph/ceph.client.block.keyring

#设置开机启动
systemctl enable rdbmap

RBD设置扩容

#rbd1 扩容到5G
rbd --pool block resize rbd1 --size 5G
rbd --pool block du rbd1 

云计算-ceph的配置使用_客户端_24

#客户端扩容
xfs.growfs /dev/rbd0

RBD快照管理

#创建快照
rbd snap create block/rbd2@snap1

#回滚快照
rbd snap rollback block/rbd2@snap1

#设置快照为保护模式
rbd snap protect block/rbd2@snap1

#创建snap1的克隆卷rbd3
rbd clone block/rbd2@snap1 block/rbd3

#将克隆卷转换为rbd设备
rbd flatten block/rbd3

#客户端重新映射
rbd map block/rbd3 --name client.block


CephFS

cephfs 文件系统是基于ceph分布式存储RADOS构架的兼容posix的文件系统,它需要运行在集群中运行MDS服务,其守护进程为ceph-mds,用于管理cephfs中所存储的文件的元数据,以及协调对ceph集群的访问,并且通过ceph-mds将元数据与数据分开,可以降低复杂性并提高可靠性。

原理

MDS管理CephFS客户端的元数据,ceph-mds为客户接入提供相关信息,如文件在文件系统结构中的具体位置等。

MDS还管理着目录结构以及文件的元数据,如所属用户,时间戳,权限等,还负责响应缓存的接入和管理,来维护缓存一致性。

MDS有两个状态,活动,负责元数据管理,备用,当前MDS无法响应的时候状态,

CephFS在访问数据的时候,会有通过MON的验证,并获取到集群映射信息,然后从MDS请求到相关的元数据,并通过请求到的元数据直接与OSD进行通信

云计算-ceph的配置使用_客户端_25


cephfs配置

#创建资源池
#创建两个资源池,一个是数据池,一个是元数据池
ceph osd pool create metadata_cephfs
ceph osd pool create data_cephfs

#资源池格式化
ceph fs new fs01 metadata_cephfs data_cephfs

云计算-ceph的配置使用_客户端_26

#部署mds
ceph orch apply mds fs01 --placement="2"

#查看mds的状态
ceph orch ls

云计算-ceph的配置使用_元数据_27

#创建用户,对fs01有读写权限
ceph fs authorize fs01 client.user01 /rwps -o ceph.user01.keyring

#确认用户
ceph auth ls | grep -A 4 user

#客户端挂载
#拷贝user01 keying到客户端
scp ceph.client.user01.keyring root@1921.168.1.1:/etc/ceph

#创建认证文件,user.txt,将用户信息保存
echo "*************"> user.txt

#修改客户端/etc/fstab

192.168.0.22:6789,192.168.0.23:6789  \
/mnt/cephfs  ceph   defaults,_netdev,name=user01,seretfile=\
/root/user.txt 0 0

云计算-ceph的配置使用_客户端_28