Ceph架构 1、Ceph Cluster介绍 2、Ceph Cluster结构 3、伸缩性和可扩展性 4、Cluster Map 5、Ceph Monitor高可用 6、Ceph集群认证 7、ceph集群的优势 8、存储池 Pool =================================================================================================================== 1、Ceph Cluster介绍 Ceph是一个可以提供对象存储、块存储、文件系统存储的功能全面的软件定义存储的系统。ceph集群可以做到非常便捷的扩展, 可以轻松做到大量客户端访问PB级的数据存储。可以利用普通X86服务器构建一个ceph集群存储系统。ceph集群利用智能守护进 程互相通信用以动态的复制数据以及重新分配数据。 2、Ceph Cluster结构 Ceph提供基于RADOS,可提供无限扩展,高可用,适用于PB级的存储集群。Ceph Monitor集群负责维护集群映射的主副本。Ceph OSD守护进程会检查自己的健康状态以及其他OSD守护进程的状态并将状态信息报告给Ceph Montior。 客户端和OSD进程使用CRUSH算法高效的计算数据存储的位置,而不依赖于一个单独的元数据服务器。Ceph通过Librados向上提供 本地存储接口,以及构建在Librados之上的各类服务接口。 数据存储 当Ceph集群接收到客户端发出无论是块存储、对象存储、文件系统亦或基于 librados 的自定义实现的数据存储请求后, Ceph集群都将数据存储为对象。每个对象都对应于文件系统中的文件,该文件又存储在对象存储的设备上。OSD守护进程 负责处理存储磁盘上的读写操作。 对象 Object Ceph集群将所有数据存储为对象,也就是说Ceph集群数据的存储没有传统的目录结构。一个对象包括:唯一ID、二进制数据 (Binary Data)、元数据(Metadata)(名称和值组成)。 注:一个兑现的ID在整个集群内都是唯一的。 3、伸缩性和可扩展性 在传统的分布式存储架构中,集群通过API、网关、中间件等向客户端提供统一的唯一的一个入口服务,此种方式引入了一个 单点故障,同时此入口节点也可能成为一个性能瓶颈。在Ceph集群中客户端直接和OSD进程进行通信,同时Ceph OSD进程负责 将数据复制到其他节点保存为副本以保证数据的安全性。 4、Cluster Map Montior Map # 包含集群的fsid、位置、名称、地址、端口、版本、创建时间、至今修改时间,可使用ceph mon dump查看map [ root@node1 ~ ]# ceph mon dump dumped monmap epoch 3 epoch 3 fsid 059860c5-6bdf-4169-bb89-1cc60768782c last_changed 2018-05-15 11:23:39.412316 created 2018-05-14 18:22:23.759085 0: 10.53.50.200:6789/0 mon.node1 1: 10.53.50.201:6789/0 mon.node2 2: 10.53.50.202:6789/0 mon.node3 OSD Map # 包含集群fsid、创建时间、位置、名称、最近修改时间、pool列表、副本数量、归置组数量、OSD列表及状态 [ root@node1 ~ ]# ceph osd dump PG Map # 包括归置组版本、时间戳、最新的OSDmap版本、占用率、归置组详情(ID、up set、acting set、PG状态)、pool数据使用情况 CRUSH Map 查看方式: ceph osd getcrushmap -o crush.map crushtool -d crush.map -o crush.map.ok cat crush.map.ok # 包含存储设备列表、故障域树状结构(设备、主机、机架等) MDS Map # 包含当前MDS Map版本、创建时间、最近修改时间、元数据存储池、元数据服务器列表、 ceph mds dump 5、Ceph Monitor高可用 客户端连接ceph集群时,首先要和Ceph Monitor节点建立连接以获取Ceph集群最新的Cluster Map。为了保证Monitor的高可用 性,ceph支持对Monitor集群。在集群内使用Paxos算法保证集群状态达成一致。 6、Ceph集群认证 认证解释 为防止ceph集群被中间人攻击,ceph使用cephx来认证用户和守护进程。客户端或者守护进程以及集群都有密钥的副本,在建立 连接时通过验证密钥来验证对方的身份。客户端直接于OSD进程进行通信,因此更加需要验证ceph客户端的身份,cephx协议的 原理类似于kerberos。 Kerberos是一种网络授权协议,客户端和服务器端都能对对方的身份进行验证。当有N个人使用该系统时,为确保在任意两个人 之间进行秘密对话,系统至少保存有它与每个人的共享密钥,所需的最少会话密钥数为N个。 在Ceph集群中,cephx不会有单点故障的缺点,当客户端发起操作请求后,Monitor返回给用户一个认证的数据结构,它包含了 可获取ceph服务的会话密钥,此会话密钥是用户使用私钥加密的,因此只有该用户可以请求到有效的密钥。随后,客户端使用 得到的会话密钥向Monitor请求所需要的服务,然后Monitor给客户端一个凭证用于向实际持有数据的OSD认证。Monitor和OSD共 享密钥,因此集群内任何OSD以及元数据服务器都可以验证客户端的身份。为了避免黑客使用过期凭证,客户端得到的会话凭证 也会过期。 在监视节点,使用client.admin的身份生成一个用户及其密钥,ceph的认证系统将用户和密钥保存在Monitor节点,然后管理员 将密钥发送给使用ceph集群的用户使用。 客户端和Monitor认证过程 前提:一个得到合法授权的用户持有和ceph集群内得到认证此用户的用户名和密钥。 1、客户端将用户名发送给Monitor,发出认证请求 2、Monitor生成一个临时会话密钥,之后Monitor用此用户的密钥加密此临时会话密钥,然后回传给客户端 3、客户端使用之前Monitor发送给客户端的共享密钥解密得到临时会话密钥 4、客户端使用得到的临时会话密钥加密用户名向Monitor请求一个凭证 5、客户端使用共享密钥解密此凭证,然后使用此凭证连接ceph集群的OSD或元数据服务器 7、ceph集群的优势 1、Ceph客户端可直接于OSD进程通信交互,这既避免了传统集群中中心节点单点故障的问题,又避免了中心节点成为性能瓶颈。 2、OSD成员状态。OSD进程加入集群后会主动报告自己的状态是down或者up,同时Monitor也会周期性的ping OSD进程,确保OSD 在正常运行,Monitor也会授权与之领近的OSD节点监控它是否在正常运行。使用这种多重的保障,以确保集群的正常运行。 3、数据清洗。OSD能够清洗归置组内的对象。Ceph OSD能够比较对和元数据以及其它OSD上的副本数据,并及时发现文件系统错 误,清洗周期为每天。每周OSD都会做深度清洗,即按为比较对象中的数据,能够发现硬盘的坏扇区。 4、副本。Ceph客户端使用CRUSH算法计算数据存储位置,同样OSD也使用CRUSH算法算出副本存放位置或者用于数据的重新平衡。 写数据过程: 客户端使用CRUSH算法计算出应该将数据存放的位置,并把对象映射到存储池和归置组,然后查找归置组的主OSD并数据写入 主OSD,然后OSD使用CRUSH算法计算出存放副本的OSD,之后将数据复制。数据存储完成后,反馈给客户端一个ACK,告知存储 成功。 8、存储池 Pool pool是存储对象的逻辑分区。ceph客户端从Monitor获取Cluster Map,之后Ceph将对象写入存储池。 9、 ===================================================================================================================