ceph部署

ceph架构

一、存储类型

  • 集中式存储

    • nas(网络附加存储)

    • san(存储区域网格)

    • das(直连附加存储)

  • 集中式存储的优点:

    • 管理简单,因为所有的数据都存储在一个节点上面

    • 安全性高,集中式存储只有一个数据中心,因此更加容器实现安全控制

    • 数据统一管理

分布式存储,信息被存储在多个独立且互不干扰的设备中,采用可扩展的存储架构

  • glusterfs

  • ceph

  • 存储形式

    • 块设备,一个硬盘

    • 文件系统存储,格式化就相当于是装一个文件系统

    • 对象存储:元数据+数据存储,有一个唯一的对象的id,访问形式是http

二、为什么用到ceph

  1. nfs

我们不妨这样设想一下,NFS如果节点挂掉了,那么我们把这个节点上的硬盘拔出来,换到其他节点上,在其他节点上起一个NFS,那么数据依旧是存在的,但是,如果坏的不是节点而是硬盘呢?可能你想到了给硬盘做RAID,好,保留这个问题,继续往后看。

  1. mooseFS

Moosefs就是一个分布式存储,他的技术架构就是提供一个Mater节点,来管理整个集群,client只需要通过挂载Master节点就可以往集群内存储文件

大家都知道,一个文件是由文件元数据以及文件数据组成的,文件元数据保存的就是一些简单的概要,比如这个文件多大,文件的拥有人,所属组以及访问权限这些东西,元数据一般都不大,所以会直接保存在Master节点上,而文件本身的数据则会保存在存储节点上,并且是有多副本机制的。完全不怕某个节点挂掉而导致数据丢失。

MooseFS瓶颈

虽然文件的元数据占用的空间并不大,但是在现在这个时代,也奈何不了他多啊,当元数据过多时,Master就成了Moosefs的瓶颈,因为所有的请求都是需要经过Master的,并且Moosefs(到写这篇文章的时间)是没办法做Master高可用的,想给他做高可用的方式就是2个Master,使用Keepalive提供一个VIP(虚拟IP),访问这个VIP就可以访问到2个Master节点,但是,在同一时间内,只有一个Master在工作,所以瓶颈依旧存在

img

  1. glusterfs

看到了MooseFS的瓶颈之后,GlusterFS采取了去Master,即不需要Master节点,每个存储节点上都内嵌一个可以代替Master工作的组件,这样操作下来,所有的元数据并不是都放在同一个节点上,每个节点都只需要保存部分元数据,好像这个架构没什么问题了哈,但是我们回想一下MooseFS是如何使用的?是不是客户端挂载Master就可以使用集群了?但是现在没有Master了,或者说每个节点都是Master,那怎么办呢?

GlusterFS就要求使用GlusterFS的客户端安装一个软件,Gluster-client,并且给这个软件写一个配置文件,把所有的存储节点IP地址写进去,这样操作。但是如果后期节点需要更换,改动起来就比较麻烦。我们再来看看Ceph是怎么做的

img

ceph的组件

1、ceph组件详解

  • mon: 集群监视器(master,缺一不可)

  • osd: 集群存储节点(缺一不可)

  • mgr:集群管理器(缺一不可)

  • mds:文件元数据节点

  • rgw:对象存储网关

ceph支持的三种存储方式

1、块存储(RBD)

2、对象存储(RGW)

3、文件存储(cephFS)

ceph部署

  • 安装p版本的ceph

  • 部署的方式

    • Cephadm(官方推荐) 基于容器部署的

    • ceph-ansible

    • ceph-deploy(N版本之前使用)

    • DeepSea

    • 手工部署(极其复杂,不推荐)

  • ceph不支持欧拉的,

  • 三个节点

主机名 ip 系统
ceph01 192.168.50.20 欧拉22.03
ceph02 192.168.50.21 欧拉22.03
ceph03 192.168.50.22 欧拉22.03
  • cephadm 一个节点上面安装即可

1、基础操作

1、修改主机名

[root@localhost ~]# hostnamectl set-hostname ceph01

2、关闭防护墙和selinux

[root@ceph01 ~]# systemctl disable --now firewalld
[root@ceph01 ~]# setenforce 0
[root@ceph01 ~]# cat /etc/selinux/config 
 
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=disabled

3、配置hosts

[root@ceph01 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4 ceph01
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.50.20 ceph01
192.168.50.21 ceph02
192.168.50.22 ceph03

4、配置时间同步

[root@ceph01 ~]# yum install chrony -y
[root@ceph01 ~]# systemctl enable --now chronyd

2、安装cephadm

1、安装git

安装git是因为需要拉取cephadm,因为欧拉操作系统暂时用不了官方的cephadm,需要下载另一个版本

[root@ceph01 ~]# yum install git -y
[root@ceph01 ~]# git clone https://gitee.com/yftyxa/openeuler-cephadm.git
[root@ceph01 ~]# cd openeuler-cephadm/
[root@ceph01 openeuler-cephadm]# ls
cephadm
[root@ceph01 openeuler-cephadm]# mv cephadm /usr/sbin/
 

2、安装podman3.3

[root@ceph01 ~]#  wget -O /etc/yum.repos.d/huawei.repo https://repo.huaweicloud.com/repository/conf/CentOS-8-reg.repo
# 一定要指定版本安装
[root@ceph01 ~]# yum install podman-3.3.1*

3、配置ceph源

  • 不能使用红帽之前cephadm add-repo ,欧拉不支持
[root@ceph01 ~]# cephadm version
ceph version 16.2.13 (5378749ba6be3a0868b51803968ee9cde4833a3e) pacific (stable)
[root@ceph01 ~]# vim /etc/yum.repos.d/ceph.repo
[ceph]
name=ceph
baseurl=https://mirrors.huaweicloud.com/ceph/rpm-pacific/el8/x86_64/
gpgcheck=0
enabled=1

4、将repo文件传到各个节点

[root@ceph01 ~]# scp /etc/yum.repos.d/ceph.repo ceph02:/etc/yum.repos.d/
 
Authorized users only. All activities may be monitored and reported.
ceph.repo                                              100%  107   209.4KB/s   00:00    
[root@ceph01 ~]# scp /etc/yum.repos.d/ceph.repo ceph03:/etc/yum.repos.d/
 
Authorized users only. All activities may be monitored and reported.
ceph.repo                                              100%  107   203.1KB/s   00:00

3、安装ceph

[root@ceph01 ~]# cephadm bootstrap --mon-ip 192.168.50.20 --initial-dashboard-user admin --initial-dashboard-password 123 --dashboard-password-noupdate
  • --mon-ip 指定monitor 指定一个即可

  • --initial-dashboard-user admin 指定dashboard的用户名是admin,不指定也行

  • --initial-dashboard-password 123 指定dashboard的用户名是123

  • --dashboard-password-noupdate 第一次登录dashboard无需修改密码

# 执行完上面的命令后

Ceph Dashboard is now available at:
 
	     URL: https://localhost.localdomain:8443/  # 输入ip+端口可以访问dashboard
	    User: admin
	Password: 123
 
Enabling client.admin keyring and conf on hosts with "admin" label
You can access the Ceph CLI with:
 
	sudo /usr/sbin/cephadm shell --fsid dc6d1544-17ef-11ef-9393-000c297dea16 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring
 
Please consider enabling telemetry to help improve Ceph:
 
	ceph telemetry on
 
For more information see:
 
	https://docs.ceph.com/docs/pacific/mgr/telemetry/
 
Bootstrap complete.

1、登录dashboard

img

2、安装ceph-commmon

# ceph.repo文件里面下载

[root@ceph01 ~]# yum install ceph-common  --nobest
如果不加上nobest的话,他会报错,因为我们的版本是16.2.13,而仓库里的是common是16.2.15,不是最佳匹配
加上nobest的话他就不会报错了
# 查看集群状态
[root@ceph01 yum.repos.d]# ceph -s 
  cluster:
    id:     055471d0-1f84-11f1-bcb5-000c29fecb8e
    health: HEALTH_WARN  # 警告的状态
            OSD count 0 < osd_pool_default_size 3  # osd的数量小于默认的数量
 
  services:
    mon: 1 daemons, quorum ceph01 (age 15m)
    mgr: ceph01.adgyya(active, since 14m)
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:     
 
  progress:
    Updating grafana deployment (+1 -> 1) (0s)
      [............................] 

1、集群的三种状态

1. health: HEALTH_OK       这个代表集群是OK的
2. health: HEALTH_WARN  这个代表的是有警告
3. health: HEALTH_ERR     这个代表集群出现错误,无法提供服务

2、services

mon: 1 daemons, quorum ceph01 (age 30m)
mgr: ceph01.luyssm(active, since 27m)
osd: 0 osds: 0 up, 0 in

3、健康的详细情况

[root@ceph01 ~]# ceph health detail
HEALTH_WARN OSD count 0 < osd_pool_default_size 3
[WRN] TOO_FEW_OSDS: OSD count 0 < osd_pool_default_size 3

4、添加节点

  • 先查看节点信息
[root@ceph01 ~]# ceph orch ls 
NAME           PORTS        RUNNING  REFRESHED  AGE  PLACEMENT  
alertmanager   ?:9093,9094      1/1  8m ago     26m  count:1    
crash                           1/1  8m ago     26m  *          
grafana        ?:3000           0/1  -          26m  count:1    
mgr                             1/2  8m ago     26m  count:2    
mon                             1/5  8m ago     26m  count:5    
node-exporter  ?:9100           1/1  8m ago     26m  *          
prometheus     ?:9095           0/1  -          26m  count:1   

# 没有运行的,就是容器没有拉取下来,容器拉取下来后,就会自动的运行了,网络的问题,拉取很慢
# 可以问一下ai,需要拉取哪些镜像

[root@ceph01 containers]# ceph config get mgr mgr/cephadm/container_image_grafana
quay.io/ceph/ceph-grafana:8.3.5

# 没有启动的话,重新部署这个服务即可,然后reboot重启就能恢复了

# 主要就是镜像没有的问题


# 容器都在运行中
[root@ceph01 ~]# ceph orch ls
NAME           PORTS        RUNNING  REFRESHED  AGE  PLACEMENT  
alertmanager   ?:9093,9094      1/1  2m ago     2h   count:1    
crash                           1/1  2m ago     2h   *          
grafana        ?:3000           1/1  2m ago     92m  count:1    
mgr                             1/2  2m ago     2h   count:2    
mon                             1/5  2m ago     2h   count:5    
node-exporter  ?:9100           1/1  2m ago     2h   *          
prometheus     ?:9095           1/1  2m ago     2h   count:1   


[root@ceph01 ~]# ceph orch ps 
NAME                  HOST    PORTS        STATUS        REFRESHED   AGE  MEM USE  MEM LIM  VERSION  IMAGE ID      CONTAINER ID  
alertmanager.ceph01   ceph01  *:9093,9094  running (3m)     2m ago    2h    41.9M        -  0.23.0   ba2b418f427c  b950d4cc2472  
crash.ceph01          ceph01               running (3m)     2m ago    2h    21.2M        -  16.2.13  e08a45948779  2304fe34dca0  
grafana.ceph01        ceph01  *:3000       running (3m)     2m ago   92m     137M        -  8.3.5    dad864ee21e9  aa27f1b9205e  
mgr.ceph01.adgyya     ceph01  *:9283       running (3m)     2m ago    2h     507M        -  16.2.13  e08a45948779  3e85dcd5b0bd  
mon.ceph01            ceph01               running (3m)     2m ago    2h    57.9M    2048M  16.2.13  e08a45948779  2e4b434598be  
node-exporter.ceph01  ceph01  *:9100       running (3m)     2m ago    2h    26.1M        -  1.3.1    1dbe0e931976  046e69510023  
prometheus.ceph01     ceph01  *:9095       running (3m)     2m ago  101m     121M        -  2.33.4   514e6a882f6e  e6f36cc96424  

1、开始添加节点

  • 就是需要管理节点,建立免密,ceph的免密操作
ssh-copy-id -f -i ./ceph.pub root@ceph02
ssh-copy-id -f -i ./ceph.pub root@ceph03

2、被添加节点安装容器引擎

  • 需要拉取镜像,启动容器,所以需要
# 安装podman3
[root@ceph02 ~]# yum install podman-3* -y
[root@ceph03 ~]# yum install podman-3* -y

3、添加节点

ceph orch host add ceph02 192.168.50.21
ceph orch host add ceph02 192.168.50.22

# 查看节点信息
[root@ceph01 ~]# ceph orch host ls 
HOST    ADDR           LABELS  STATUS   
ceph01  192.168.50.20  _admin  # 标签是_admin,集群会将ceph的集群文件放到该节点上
ceph02  192.168.50.21                  
ceph03  192.168.50.22                  
3 hosts in cluster

1、标签修改

# 将ceph03添加_admin标签

[root@ceph01 ceph]# ceph orch host label add ceph03 _admin
Added label _admin to host ceph03
[root@ceph01 ceph]# ceph orch host ls
HOST    ADDR           LABELS  STATUS  
ceph01  192.168.50.20  _admin          
ceph02  192.168.50.21                  
ceph03  192.168.50.22  _admin          
3 hosts in cluster

# 存放了配置文件这些
[root@ceph03 ~]# ls /etc/ceph/
ceph.client.admin.keyring  ceph.conf


2、删除标签

[root@ceph01 ceph]# ceph orch host label rm ceph03 _admin
Removed label _admin from host ceph03
[root@ceph01 ceph]# ceph orch host ls
HOST    ADDR           LABELS  STATUS  
ceph01  192.168.50.20  _admin          
ceph02  192.168.50.21                  
ceph03  192.168.50.22                  
3 hosts in cluster

4、关闭mon自动扩展

  • mon默认是在5个节点上面运行的,我们只有三个节点
[root@ceph01 ceph]# ceph orch apply mon --unmanaged
Scheduled mon update...
[root@ceph01 ceph]# ceph orch apply mon 3
Scheduled mon update...
[root@ceph01 ceph]# ceph orch ls
NAME           PORTS        RUNNING  REFRESHED  AGE  PLACEMENT  
alertmanager   ?:9093,9094      1/1  98s ago    3h   count:1    
crash                           3/3  100s ago   3h   *          
grafana        ?:3000           1/1  98s ago    2h   count:1    
mgr                             2/2  99s ago    3h   count:2    
mon                             3/3  100s ago   2s   count:3    
node-exporter  ?:9100           3/3  100s ago   3h   *          
prometheus     ?:9095           1/1  98s ago    3h   count:1    

5、将mon固定在某几个节点上面

如果有一个mon节点挂掉的话,添加了一个新的节点,ceph的集群的控制的话,会在新的节点上面启动一个mon,不想更换mon节点,可以打上标签,只在标签的节点上面运行

[root@ceph01 ceph]# ceph orch host label  add ceph01 mon
Added label mon to host ceph01
[root@ceph01 ceph]# ceph orch host label add ceph02 mon
Added label mon to host ceph02
[root@ceph01 ceph]# ceph orch host label add ceph03 mon
Added label mon to host ceph03
[root@ceph01 ceph]# ceph orch apply mon label:mon
Scheduled mon update...
[root@ceph01 ceph]# ceph orch ls
NAME           PORTS        RUNNING  REFRESHED  AGE  PLACEMENT  
alertmanager   ?:9093,9094      1/1  4m ago     3h   count:1    
crash                           3/3  4m ago     3h   *          
grafana        ?:3000           1/1  4m ago     2h   count:1    
mgr                             2/2  4m ago     3h   count:2    
mon                             3/3  4m ago     4s   label:mon  # 这样的话,mon就只在这个标签的节点上面运行了
node-exporter  ?:9100           3/3  4m ago     3h   *          
prometheus     ?:9095           1/1  4m ago     3h   count:1   
  • 添加节点就是需要管理节点,需要做免密登录,ceph的密钥

  • 添加节点后,这些节点会自动的拉取镜像,启动容器

ceph常见的命令

posted @ 2026-03-13 22:19  乔的港口  阅读(1)  评论(0)    收藏  举报