Ceph基础

一、ceph起源

Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。

随着OpenStack的快速发展,越来越多的人使用Ceph作为OpenStack的底层共享存储,Ceph借助于云原生尤其是Kubernetes技术的发展,作为底层存储的基石,Ceph再次发力,为Kubernets有状态化业务提供了存储机制的实现。

二、ceph基础

ceph是一个开源的分布式存储系统,支持对象存储,块存储,文件系统。

ceph把每一个待管理的数据流切分为一个到多个固定大小(默认4M)的对象数据,并以原子单元完成数据的读写

对象数据的底层存储服务是有多个主机组成的存储集群,该集群为RADOS,该集群的librados是存储集群的API,支持c/c++/java/python/ruby/php/go

三、ceph组件

1)cephmon

cephmon用于维护集群状态,如集群有多少个存储池有多少个pg,及存储池和pg的映射关系,这些信息是集群互相协调的关键信息,同时还负责管理客户端到管理守护进程之间身份认证,cephmon通常需要有多个节点实现高可用架构。

2)cephmgr

cephmgr负责监控集群运行指标和集群状态,如存储使用率,系统负载,cephmgr内有多种组件如ceph-dashboard仪表盘组件。

3)cephosd

cephosd是ceph集群提供存储数据,一个磁盘就是一个osd守护进程,ceph集群中的数据存储,平衡,恢复都是有osd实现,cephosd通过向cephmon上报心跳信息告知ceph集群此osd是否可用。cephosd是ceph集群存储数据组件需要多个节点实现高可用性。

4)cephmds

提供ceph集群文件系统,对象存储和块存储不需要cephmds.

5)cephdeploy

通过cephdeploy执行各种命令行工具:rados,ceph,rbd,该节点有admin账户只对管理员开放。

四、ceph数据存储架构
 

Ceph中一切皆对象,不管是RBD块存储接口,RGW对象存储接口还是文件存储CephFS接口,其存储如到Ceph中的数据均可以看作是一个对象,一个文件需要切割为多个对象(object),然后将object存储到OSD中。

这些切割后的对象怎么选择到对应的OSD存储节点呢,这需要依赖于Ceph的智能调度算法CRUSH,通过CRUSH算法将对象调度到合适的OSD节点上,不管是客户端还是OSD,均使用CRUSH算法来计算对象在集群中OSD的位置信息,同时保障object的副本能落到合适的OSD节点上。
 

1)文件切割成4M大小的数据对象

2)数据对象通过hash算法找到存储池中的pg

3)在通过crush算法找到pg映射的osd

4)pg中的主osd将对象写入到磁盘

5)主osd将数据同步给备份osd,并等到备份osd写完后返回确认消息

6)主osd将写完信息告知客户端

ceph集群搭建

一:环境要求

服务器系统:centos7.9_x86_64

ceph版本: octopus

二:搭建架构

三: 各节点服务器资源分配详情

节点类型 主机IP 主机名 系统盘 数据盘1 数据盘2
mgr节点 10.19.14.10 cephmgr sda sdb sdc
mon节点 10.19.14.23 cephstore2 sda sdb sdc
10.19.14.25 cephstore3 sda sdb sdc
10.19.14.27 cephstore1 sda sdb sdc
store节点 10.19.14.23 cephstore2 sda sdb sdc
10.19.14.25 cephstore3 sda sdb sdc
10.19.14.27 cephstore1 sda sdb sdc

四:ceph集群搭建之基础工作

1)各节点创建ceph用户

#创建ceph用户
  useradd ceph
#创建ceph用户密码
  passwd ceph
 2)在mgr节点上切换到ceph用户,生成ssh-pub秘钥

#切换到ceph用户执行下面命令,一直敲回车即可
  su - ceph
  ssh-keygen
3)同步mgr节点的ceph用户公钥到osd节点

#在mgr节点同步ceph用户公钥到个节点

  ssh-copy-id ceph@10.19.14.10ssh-copy-id ceph@10.19.14.27ssh-copy-id ceph@10.19.14.25ssh-copy-id ceph@10.19.14.23

4)在各节点修改/etc/hosts文件添加主机名和IP对应解析

#在hosts文件里写入以下映射信息
vim /etc/hosts

   10.19.14.10          cephmgr10.19.14.27          cephstore110.19.14.23          cephstore210.19.14.25          cephstore3

5)在各节点配置ceph 的yum源

centos7的base源和epel源都改为阿里云镜像源此处不做介绍,详情参考:阿里巴巴开源镜像站-OPSX镜像站-阿里云开发者社区

#配置ceph.repo文件
vim /etc/yum.repos.d/ceph.repo

[ceph]
name=ceph
baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch/
gpgcheck=0

6)在各个节点安装ceph依赖文件

#各个节点安装依赖文件
 
yum install -y python2-subprocess32   python36-werkzeug
 
pip3 install pecan -i https://pypi.douban.com/simple
7)在每个节点上添加ceph用户免密执行root权限

#在每个节点上添加ceph用户免密执行root权限
vim /etc/sudoers

ceph    ALL=(ALL)       NOPASSWD: ALL 

8)在mgr节点创建ceph集群配置文件

#安装ceph-deploy
yum install -y ceph-deploy
 
#切换到ceph用户
    
 su - ceph 
 
#--cluster-network 为集群内部地址,  --public-network 为外部可以调用地址

 ceph-deploy new --cluster-network 10.19.14.10/24 --public-network 10.19.14.10/24 cephmgr

9)在mgr节点上修改ceph.conf配置

#在ceph用户家目录下修改ceph.conf配置文件
vim ceph.conf

[global]
fsid = 3ef172a8-147b-442d-a24a-1cd17ae2357e
public_network = 10.19.14.10/24
cluster_network = 10.19.14.10/24
mon_initial_members = cephstore1  #修改此处mon的主机名称
mon_host = 10.19.14.27            #修改此处mon的IP地址
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx

五:ceph集群搭建之ceph-mon节点安装

1)在所有mon节点上安装ceph-mon服务

yum install -y ceph-mon
2)在mgr节点ceph用户下初始化ceph-mon主节点

#在mgr节点ceph用户下初始化mon节点
ceph-deploy mon create-initial
 
#在cephstore1节点验证是否安装mon成功
 ps aux | grep mon
六:ceph集群搭建之ceph-mgr节点安装

1)在mgr节点上执行安装ceph-mgr服务

yum install -y ceph-mgr
2)在mgr节点ceph用户下执行创建mgr

ceph-deploy mgr create cephmgr
 
#验证mgr是否安装成功
ps aux | grep mgr
七:ceph集群搭建之ceph-osd节点安装(即cephstore节点)

1)在mgr节点ceph用户下初始化每个storge节点

#在mgr节点ceph用户下执行初始化每个storge节点命令

ceph-deploy install --no-adjust-repos --nogpgcheck cephstore1
ceph-deploy install --no-adjust-repos --nogpgcheck cephstore2
ceph-deploy install --no-adjust-repos --nogpgcheck cephstore3

2)在mgr节点ceph用户下依次执行擦除磁盘数据

 ceph-deploy disk zap cephstore1 /dev/sdb      # 节点名称   #磁盘名称ceph-deploy disk zap cephstore1 /dev/sdcceph-deploy disk zap cephstore2 /dev/sdbceph-deploy disk zap cephstore2 /dev/sdcceph-deploy disk zap cephstore3 /dev/sdbceph-deploy disk zap cephstore3 /dev/sdc

3)在mgr节点ceph用户下添加磁盘为OSD

ceph-deploy osd create cephstore1 --data /dev/sdb
ceph-deploy osd create cephstore1 --data /dev/sdc
ceph-deploy osd create cephstore2 --data /dev/sdb
ceph-deploy osd create cephstore2 --data /dev/sdc
ceph-deploy osd create cephstore3 --data /dev/sdb
ceph-deploy osd create cephstore3 --data /dev/sdc

八:查看集群信息

把ceph家用户下的  ceph.conf 和  ceph.client.admin.keyring 文件移动到/etc/ceph/ 目录下

切换到root用户下,执行ceph -s

处理 mon is allowing insecure global_id reclaim 警告

执行以下命令即可

ceph config set mon auth_allow_insecure_global_id_reclaim false

但是没有对ceph-mon节点和ceph-mgr节点进行高可用扩展,那如何实现ceph-mon 和ceph-mgr的高可用呢?

上篇规划的集群架构

本篇规划新添加14.23为新增ceph-mon, 14.27为新增的ceph-mgr

一:添加ceph-mon节点到ceph集群

1)上一篇已经介绍了在节点上如何安装ceph-mon, 在需要添加到ceph集群的mon节点上安装cepn-mon服务

yum install -y ceph-mon
2)在mgr节点ceph用户下把新增加的ceph-mon节点添加到ceph集群

#在mgr节点ceph用户下执行
 
ceph-deploy mon add cephstore2
3)在mgr节点上切换到root用户下查看集群状态

#切换到root用户下查看集群状态
 
ceph -s
可以看到services下mon下有2daemons, 分别为cephstore1,cephstore2

二:添加ceph-mgr节点到ceph集群

1)上一篇已经介绍了在节点上如何安装ceph-mgr, 在需要添加到ceph集群的mgr节点上安装cepn-mon服务

#在cephstore1上安装ceph-mgr服务
 
yum install -y ceph-mgr 
2)在mgr节点ceph用户下把新增加的ceph-mgr节点添加到ceph集群

#在mgr节点ceph用户下执行
 
ceph-deploy mgr create cephstore1
 
3)在mgr节点上切换到root用户下查看集群状态

# 在mgr节点切换到root用户下执行
 
 
ceph -s
可以看到services下 mgr节点信息,cephmgr为active状态,cephstore1为standbys状态

4)验证测试:把cephmgr节点上的mgr服务停掉查看集群状态

systemctl stop ceph-mgr.target
可以看到mgr节点状态之前的cephstore1有standbys变为acive

以上内容为扩展ceph集群的ceph-mon 和 ceph-mgr 为高可用架构,接下来准备写写ceph集群的维护和管理。
————————————————
版权声明:本文为CSDN博主「Mr.Lilh」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_64417032/article/details/123610051

————————————————
版权声明:本文为CSDN博主「Mr.Lilh」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_64417032/article/details/123603291

ceph实战之ceph集群搭建相关推荐

  1. Ceph集群搭建系列(六):RBD块设备的使用场景、原理分析及其创建

    一.前言 下图数据出自2018年ceph社区用户调查报告,Ceph RBD接口的使用场景主要是VM和DB数据库. 而使用Ceph RBD的接口方式的用户数据如下,主要是librbd 和 kernel ...

  2. Ceph集群搭建及其运用(块存储、ceph文件系统)

    一.ceph简介 ceph被称作面向未来的存储, 可以实现的存储方式: 块存储:提供像普通硬盘一样的存储,为使用者提供"硬盘" 文件系统存储:类似于NFS的共享方式,为使用者提供共 ...

  3. Ceph分布式文件系统集群搭建详解

    1.Ceph分布式文件系统简介 Ceph是一种为优秀的性能.可靠性和可扩展性而设计的统一的.分布式文件系统. Ceph 独一无二地在一个统一的系统中同时提供了对象.块.和文件存储功能. 基开发目标是: ...

  4. 初试 Centos7 上 Ceph 存储集群搭建

    https://blog.csdn.net/aixiaoyang168/article/details/78788703 目录 Ceph 介绍     环境.软件准备     Ceph 预检     ...

  5. 三 Ceph集群搭建

    Ceph集群 集群组件 Ceph集群包括Ceph OSD,Ceph Monitor两种守护进程. Ceph OSD(Object Storage Device): 功能是存储数据,处理数据的复制.恢复 ...

  6. 实战04_redis-cluster集群搭建

    接上一篇:实战_03_Redis基础命令https://blog.csdn.net/weixin_40816738/article/details/99213524 #安装gcc yum instal ...

  7. 部署Ceph分布式高可用集群中篇

    前言 如何快速部署Ceph分布式高可用集群 Ceph分布式存储底层实现原理 上文介绍了ceph的原理以及ceph的部署(部署了一个mon角色)本文继续介绍下ceph的部署 部署OSD 查看磁盘使用情况 ...

  8. 二进制安装mysql集群_实战mysql集群搭建(一)--centos7下二进制安装mysql-5.6

    在超哥的帮助下,完成了基于InnoDb数据引擎的mysql数据库集群搭建,实现了主从复制的功能,本篇博文介绍如何使用二进制安装mysql的方法,具体实现步骤如下: 软件使用说明: Liunx系统:ce ...

  9. 【Docker之Swarm详细讲解Swarm集群搭建管理节点工作节点Raft一致性协议overlay网络Docker结合Swarm部署WordPress个人博客实战】

    一.知识回顾 之前的内容都帮你整理好了,在这里哟! [0.Docker相关目录文章整理,可自行查看,包含多节内容] [1.Docker详细安装部署&阿里镜像地址配置] [2.Docker架构& ...

最新文章

  1. 计算概论c和文科计算机,计算概论与计算机程序设计基础/C语言【理工学社】
  2. 移动端geolocation插件+百度地图js获取地址
  3. 字符串常量前面的L的作用
  4. css实现一级下拉菜单
  5. SpringBoot - 静态资源映射处理
  6. 为什么8位有符号数的范围为“-128 — +127”?(转载加补充)
  7. jQuery.fn.extend 与 jQuery.extend 用法
  8. 插入保存?展现show的顺序
  9. Linux系统攻略关于vi替换命令的使用说明
  10. Multipy String | leetcode
  11. 移动端app开发,原生开发与混合开发的区别
  12. Linux SPI驱动(Linux驱动开发篇)
  13. java.lang.ClassCastException: com.sun.proxy.$Proxy7 cannot be cast to comms.service.message
  14. Sci-Hub桌面版 告别网站被封的尴尬
  15. python xlrd读取excel慢_与xlrd相比,使用openpyxl读取Excel文件要慢很多
  16. scala either_使用Either和Option处理功能错误
  17. 国家何时整治程序员的高薪现象???
  18. 长沙医学院计算机科学与技术专业怎么样,长沙医学院有哪些专业及什么专业好...
  19. 许永鑫 南京理工大学计算机学院,南京理工大学计算机科学与技术学院研究生导师简介-付安民...
  20. JVM GC(垃圾回收机制)Minro GC,Major GC/Full GC

热门文章

  1. jQuery是什么?和它的优缺点
  2. 杰里之AI(692X系列)篇
  3. Object Detection经典代码与文章
  4. 432.4 FPS 快STDC 2.84倍 | LPS-Net 结合内存、FLOPs、CUDA实现超快语义分割模型
  5. MATLAB分析各类建筑能耗与环境温度关系
  6. 批量修改文件后缀名(扩展名格式),操作简单1行命令搞定!
  7. java8 两个时间比较
  8. Dota2冠军OG如何被AI碾压?OpenAI累积三年的完整论文终于放出
  9. 【1044】判断是否为两位数
  10. [2023-01 持续更新] 谷歌学术google镜像/Sci-Hub可用网址/Github镜像可用网址总结