学习笔记0712

https实现过程

客户端浏览器向服务端发起请求,客户端收到请求后在前端nginx等类似的七层负载均衡上会判断是否是https协议,如果不是会返回给客户端https域名。如果是https,服务端会把公钥(crt文件)发给客户端,客户端会检查证书的有效性(过期时间,有效性,签发机构是否合法等),客户端生成随机key用公钥加密发给服务端,服务端收到用私钥进行解密并对数据(用户名密码等)进行加密在返回给客户端,客户端拿着加密后的信息就能通过https进行正常数据传输。

Ceph X认证机制 

Ceph使用cephx协议对客户端进行身份认证
cephx用于对ceph 保存的数据进行认证访问和授权,用于对访问ceph的请求进行认证和授权检测,与mon通信的请求都要经过ceph 认证通过,但是也可以在mon节点关闭cephx认证,但是关闭认证之后任何访问都将被允许,因此无法保证数据的安全性。

授权流程

每个mon节点都可以对客户端进行身份认证并分发秘钥,因此多个mon节点就不存在单点故障和认证性能瓶颈
mon节点会返回用于身份认证的数据结构,其中包含获取ceph服务时用到的session key,session key通过客户端秘钥进行加密传输,而秘钥是在客户端提前配置好的,保存在/etc/ceph/ce ph.client.admin.keyring文件中.
客户端使用session key向mon请求所需要的服务,mon向客户端提供一个tiket,用于向实际处理数据的OSD等服务验证客户端身份,MON和OSD共享同一个secret,因此OSD会信任所有MON发放的 tiket
tiket存在有效期

CephX身份验证功能仅限制在 Ceph 的各组件之间,不能扩展到其他非ceph组件

Ceph只负责认证授权,不能解决数据传输的加密问题

客户端向mon发起认证请求,mon生成session key,用key加密后发给客户端。 客户端解密后得到session key向mon申请tiket,mon验证tiket并用session key加密tiket,客户端解密后用tiket请求pool。

 注意:在请求cephFS才会存在MDS验证请求是否合法。

无论ceph客户端是哪种类型,例如块设备、对象存储、文件系统, ceph都会在存储池中将所有数据存储为对象(4M)。
ceph 用户需要拥有存储池访问权限,才能读取和写入数据ceph用户必须拥有执行权限才能使用ceph 的管理命令

 


Ceph用户

用户是指个人(ceph管理者)或系统参与者(MON/OSD/MDS).
通过创建用户,可以控制用户或哪个参与者能够访问ceph存储集群、以及可访问的存储池及存储池中的数据.
ceph支持多种类型的用户,但可管理的用户都属于client类型
区分用户类型的原因在于,MON/OSD/MDS等系统组件特使用cephx协议,但是它们为非客户端.
通过点号来分割用户类型和用户名,格式为TYPE.ID,例如client.admin.

root@ceph-deploy:~# cat /etc/ceph/ceph.client.admin.keyring 
[client.admin]
	key = AQBhL8liv4LjExAAkqJMg/rnjLe9zF54SJ0E/w==
	caps mds = "allow *"
	caps mgr = "allow *"
	caps mon = "allow *"
	caps osd = "allow *"
root@ceph-deploy:~# ceph  auth get  osd.4    #列出指定用户信息
[osd.4]
	key = AQCCPslihyBcOxAAYP4eqkTWvf8RaneZJkz0vA==
	caps mgr = "allow profile osd"
	caps mon = "allow profile osd"
	caps osd = "allow *"
exported keyring for osd.4

ceph auth list    #列出所有用户信息
ceph auth list -o 123.key    #输出到某个文件

ceph授权和使能

ceph基于使能/能力(Capabilities,简称caps )来描述用户可针对MON/OSD或MDS使用的授权范围或级别.
通用的语法格式: daemon-type 'allow caps'[...]
r:向用户授予读取权限.访问监视器(mon)以检索CRUSH运行图时需具有此能力.
w:向用户授予针对对象的写人权限.
x:授予用户调用类方法(包括读取和写入)的能力,以及在监视器中执行 auth 操作的能力.
*:授予用户对特定守护进程/存储池的读取、写入和执行权限,以及执行管理命令的能力
class-read:授予用户调用类读取方法的能力,属于是x能力的子集.
class-write:授予用户调用类写入方法的能力,属于是x能力的子集.
profile osd:授予用户以某个OSD身份连接到其他OSD或监视器的权限.授予OSD权限,使OSD能够处理复制检测信号流量和状态报告(获取OSD的状态信息).
profile mds:授予用户以某个MDS身份连接到其他MDS或监视器的权限.
profile bootstrap-osd:授予用户引导OSD 的权限(初始化OSD并将OSD加入ceph集群),授权给部署工具,使其在引导OSD时有权添加密钥.
profile bootstrap-mds:授予用户引导元数据服务器的权限,授权部署工具权限,使其在引导元数据服务器时有权添加密钥.

MON能力:

包括r/w/x和 allow profile cap(ceph的运行图)例如:
mon 'allow rwx'
mon 'allow profile osd'

OSD能力:

包括r、w、x、class-read. class-write(类读取))和 profile osd(类写入),另外OSD能力还允许进行存储池和名称空间设置.
osd 'allow capability' [pool=pooIname] [namespace=namespace-name]

MDS能力:

只需要allow或空都表示允许.mds 'allow' 


ceph用户管理 

用户管理功能可让Ceph 集群管理员能够直接在Ceph 集群中创建、更新和删除用户.在Ceph 集群中创建或删除用户时,可能需要将密钥分发到客户端,以便将密钥添加到密钥环文件中/etc/ceph/ceph.client.admin.keyring,此文件中可以包含一个或者多个用户认证信息,凡是拥有此文件的节点,将具备访问ceph的权限,而且可以使用其中任何一个账户的权限,此文件类似于linux系统的中的/etc/passwd文件。


用户管理

添加一个用户会创建用户名(TYPE.ID)、机密密钥,以及包含在命令中用于创建该用户的所有能力,用户可使用其密钥向Ceph 存储集群进行身份验证.用户的能力授予该用户在Ceph monitor (mon)、Ceph OSD(osd)或 Ceph元数据服务器(mds)上进行读取、写入或执行的能力,可以使用以下几个命令来添加用户。

用户添加

root@ceph-deploy:~# ceph auth add client.tom mon 'allow r' osd 'allow rwx pool=mypool'

root@ceph-deploy:~# ceph  auth get  client.tom

root@ceph-deploy:~# ceph auth get-or-create-key client.user1 mon 'allow r' osd 'allow rwx pool=mypool'
用户不存在就创建

ceph auth get-or-create client.user1 mon 'allow r' osd 'allow rwx pool=mypool'

此命令是创建用户并仅返回用户密钥,对于只需要密钥的客户端(例如libvirt) ,此命令非常有用.如果该用户已存在,此命令只返回密钥.您可以使用-o文件名选项将输出保存到某个文件.
创建客户端用户时,可以创建不具有能力的用户.不具有能力的用户可以进行身份验证,但不能执行其他操作,此类客户端无法从监视器检索集群地图,但是,如果希望稍后再添加能力,可以使用ceph auth caps命令创建一个不具有能力的用户.
典型的用户至少对Ceph monitor具有读取功能,并对Ceph OSD具有读取和写入功能.此外,用户的OSD权限通常限制为只能访问特定的存储池.

 

 

 修改用户

root@ceph-deploy:~# ceph auth caps client.use1 mon 'allow rwx' osd 'allow r pool=mypool'

 删除用户

root@ceph-deploy:~# ceph  auth del  client.use1


密钥环管理 

ceph 的秘钥环是一个保存了secrets ,keys.certificates并且能够让客户端通认证访问ceph的 keyring file(集合文件),一个keyring file 可以保存一个或者多个认证信息,每一个key都有一个实体名称加权限,类型为:
{client、mon、mds、osd}.name

当客户端访问ceph集群时, ceph 会使用以下四个密钥环文件预设置密钥环设置:
/etc/ceph/<$cluster name>.<user $type>.<user $id>.keyring #保存单个用户的 keyring/etc/ceph/cluster.keyring #保存多个用户的 keyring
/etc/ceph/keyring #未定义集群名称的多个用户的 keyring
/etc/ceph/keyring.bin #编译后的二进制文件

 密钥环备份和恢复


ceph auth get-or-create client.use1 mon 'allow r' osd 'allow rwx pool=mypool'
ceph  auth get  client.use1
ceph-authtool --create-keyring ceph.client.use1.keyring
ceph  auth get  client.use1 -o ceph.client.use1.keyring 
cat ceph.client.use1.keyring 
ceph  auth del client.use1
ceph  auth get  client.use1
ceph  auth import -i ceph.client.use1.keyring 
ceph  auth get  client.use1


 ceph rbd使用

RBD架构

Ceph可以同时提供对象存储RADOSGW、块存储RBD、文件系统存储Ceph FS,RBD 即RADOS Block Device的简称,RBD块存储是常用的存储类型之一,RBD块设备类似磁盘可以被挂载,RBD块设备具有快照、多副本、克隆和一致性等特性,数据以条带化的方式存储在Ceph集群的多个OSD中.
条带化技术就是一种自动的将IO的负载均衡到多个物理磁盘上的技术,条带化技术就是将一块连续的数据分成很多小部分并把他们分别存储到不同磁盘上去.这就能使多个进程同时访问数据的多个不同部分而不会造成磁盘冲突,而且在需要对这种数据进行顺序访问的时候可以获得最大程度上的IO 并行能力,从而获得非常好的性能.

 创建存储池

root@ceph-deploy:~# ceph osd pool create rbd-data1 32 32
pool 'rbd-data1' created
root@ceph-deploy:~# ceph osd pool application enable rbd-data1 rbd    #开启
enabled application 'rbd' on pool 'rbd-data1'
root@ceph-deploy:~# rbd pool init -p rbd-data1    #初始化

创建img镜像

root@ceph-deploy:~# rbd create dataimg2 --size 1G --pool rbd-data1 --image-format 2 --image-feature layering
root@ceph-deploy:~# rbd create dataimg1 --size 1G --pool rbd-data1 --image-format 2 --image-feature layering

root@ceph-deploy:~# rbd ls --pool rbd-data1 -l    #列出镜像信息

root@ceph-deploy:~# rbd --image dataimg2  --pool rbd-data1 info    #列出详细信息


root@ceph-deploy:~# rbd ls --pool rbd-data1 --format json --pretty-format    #json格式列出

 

#特性简介

layering:支持镜像分层快照特性,用于快照及写时复制,可以对image创建快照并保护,然后从快照克隆出新的image出来,父子image之间采用COW技术,共享对象数据.

striping:支持条带化v2,类似raid 0,只不过在ceph环境中的数据被分散到不同的对象中,可改善顺序读写场景较多情况下的性能.

exclusive-lock:支持独占锁,限制一个镜像只能被一个客户端使用.

object-map:支持对象映射(依赖exclusive-lock),加速数据导入导出及已用空间统计等,此特性开启的时候,会记录image 所有对象的一个位图,用以标记对象是否真的存在,在一些场景下可以加速io.

fast-diff:快速计算镜像与快照数据差异对比(依赖object-map).

deep-flatten:支持快照扁平化操作,用于快照管理时解决快照依赖关系等.

journaling:修改数据是否记录日志,该特性可以通过记录日志并通过日志恢复数据(依赖独占锁),开启此特性会增加系统磁盘IO使用.

默认开启的特性包括: layering/exlcusive lock/object map/fast diff/deep flatten

禁用或者开启指定特性

root@ceph-deploy:~# rbd feature disable/enable object-map --image dataimg3  --pool rbd-data1
#特性之间有依赖

使用普通用户挂载rbd

同步认证文件

scp ceph.client.use1.keyring root@ceph-node1:/etc/ceph

必须安装ceph-common

验证普通用户并映射镜像

root@ceph-node1:~# ceph --user use1 -s


root@ceph-node1:~# rbd --user use1 -p rbd-data1 map data-img1
/dev/rbd0
root@ceph-node1:~# rbd --user use1 -p rbd-data1 map data-img2
/dev/rbd1

lsblk    #验证镜像

 格式化磁盘并挂载

root@ceph-node1:~# mkfs.xfs /dev/rbd0

root@ceph-node1:~# mkfs.ext4  /dev/rbd1

root@ceph-node1:~# mount /dev/rbd0 /data1
root@ceph-node1:~# mount /dev/rbd1 /data2
root@ceph-node1:~# df -h


root@ceph-node1:~# modinfo libceph
验证内核

 

 镜像空间拉伸

root@ceph-node1:~# rbd ls -p rbd-data1 -l

root@ceph-node1:~# rbd resize --pool rbd-data1 --image data-img1 --size 2G

root@ceph-node1:~# resize2fs /dev/rbd0    #在node节点对磁盘重新识别
或者
xfs_growfsl /data/    #在node挂载点对挂载点识别

 卸载删除镜像

镜像删除后数据也会被删除而且是无法恢复,因此在执行删除操作的时候要慎重.

umount /data1
root@ceph-node1:~# rbd --user use1 -p rbd-data1 unmap data-img1
root@ceph-node1:~# rbd rm --pool rbd-data1 --image data-img1

镜像回收站机制 

删除的镜像数据无法恢复,但是还有另外一种方法可以先把镜像移动到回收站,后期确认删除的时候再从回收站删除即可. 

rbd status --pool rbd-data1 --image data-img1
rbd trash move --pool rbd-data1 --image data-img1
rbd trash list --pool rbd-data1
rbd trash restore --pool rbd-data1 --image data-img1 --image-id 5e88aefc2631
rbd trash move --pool rbd-data1 --image data-img2
rbd trash list --pool rbd-data1
rbd trash remove  --image-id 5e8bc8bc205e --pool rbd-data1


镜像快照

[ceph@ceph-deploy ceph-cluster]$ rbd help snap
snap create (snap add)#创建快照
snap limit clear#清除镜像的快照数量限制
snap limit set#设置一个镜像的快照上限
snap list (snap ls)#列出快照
snap protect#保护快照被删除
snap purge#州险民n故删除.院snap remove (snap rm)
snap rename#重命名快照
snap rollback (snap revert)#还原快照
snap unprotect#允许一个快照被删除(取消快照保护)
root@ceph-node1:~# rbd snap create --pool rbd-data1  --image dataimg2 --snap img2-snap-20220713    #创建快照
root@ceph-node1:~# rbd snap list --pool rbd-data1 --image dataimg2
SNAPID  NAME                SIZE   PROTECTED  TIMESTAMP               
     4  img2-snap-0713      1 GiB             Wed Jul 13 22:09:13 2022
     5  img2-snap-20220713  1 GiB             Wed Jul 13 22:10:08 2022

rm -rf /data2/test    #删掉数据验证
umount /data2
rbd snap rollback --pool rbd-data1 --image dataimg2 --snap img2-snap-20220713

rbd --user use1 -p rbd-data1 map dataimg2
mount /dev/rbd0 /data1/

root@ceph-node1:~# rbd snap remove  --pool rbd-data1 --image dataimg2 --snap img2-snap-0713
删除快照


rbd snap limit set --pool rbd-data1 --image data-img2 --limit 30    #快照数量限制

rbd snap limit clear --pool rbd-data1 --image data-img2    #清除数量限制

Ceph FS 

ceph FS 即 ceph filesystem,可以实现文件系统共享功能,客户端通过ceph协议挂载并使用ceph集群作为数据存储服务器.
Ceph FS需要运行Meta Data Services(MDS)服务,其守护进程为ceph-mds,ceph-mds进程管理与cephFS上存储的文件相关的元数据,并协调对ceph存储集群的访问. 

在linux系统使用ls等操作查看某个目录下的文件的时候,会有保存在磁盘上的分区表录文件的名称、创建日期、大小、inode 及存储位置等元数据信息,在 cephfs 由于数据‘被打散为若干个离散的object进行分布式存储,因此并没有统一保存文件的元数据,而L将文件的元数据保存到一个单独的存储出 matedata pool,但是客户端并不能直接访问hatedata pool中的元数据信息,而是在读写数的时候有MDS(matadata server)进行处理,晏数据的时候有MDS 从 matedata pool加载元数据然后缓存在内存(用于后期快速响应其它户端的请求)并返回给客户端,写数据的时候有MDS缓存在内存并同步到matedata pool.

创建普通用户 

ceph auth get-or-create-key client.fstest1 mon 'allow rwx' mds 'allow rw' osd 'allow rwx pool=cephfs-data1'

ceph-authtool --create-keyring ceph.client.fstest1.keyring
ceph  auth get  client.fstest1 -o ceph.client.fstest1.keyring 
root@ceph-deploy:/etc/ceph# scp ceph.client.fstest1.keyring ceph-node2:/etc/ceph
同步认证文件

root@ceph-node2:~# ceph --user fstest1 -s
验证

客户端挂载fs 

客户端挂载有两种方式,一是内核空间一是用户空间,内核空间挂载需要内核支持ceph模块,用户空间挂载需要安装ceph-fuse

内核空间挂载

root@ceph-node2:/etc/ceph# mount -t ceph 192.168.226.172:6789:/ /mnt    -o name=fstest,secretfile=/etc/ceph/fstest1.key 

root@ceph-node2:/etc/ceph# mount -t ceph 192.168.226.172:6789:/ /mnt  -o name=fstest1,secret=AQD7MNJiSPGIGhAAKkmmusW0vylUk+nNlh3j7Q==

 

用户空间挂载

如果内核本较低而没有ceph模块,那么可以安装ceph-fuse挂载,但是推荐使用内核模块挂载.

yum install ceph-fuse ceph-common -y

ceph-fuse --name client.yanyan -m 172.31.6.104:6789,172.31.6.105:6789,172.31.6.106:6789 /data

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值