ceph实战之ceph集群搭建

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.10cephmgrsdasdbsdc
mon节点10.19.14.23cephstore2sdasdbsdc
10.19.14.25cephstore3sdasdbsdc
10.19.14.27cephstore1sdasdbsdc
store节点10.19.14.23cephstore2sdasdbsdc
10.19.14.25cephstore3sdasdbsdc
10.19.14.27cephstore1sdasdbsdc


四: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.10
  ssh-copy-id ceph@10.19.14.27
  ssh-copy-id ceph@10.19.14.25
  ssh-copy-id ceph@10.19.14.23


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

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

   10.19.14.10          cephmgr
   10.19.14.27          cephstore1
   10.19.14.23          cephstore2
   10.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/sdc
 ceph-deploy disk zap cephstore2 /dev/sdb
 ceph-deploy disk zap cephstore2 /dev/sdc
 ceph-deploy disk zap cephstore3 /dev/sdb
 ceph-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

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值