ceph部署
ceph架构
一、存储类型
-
集中式存储
-
nas(网络附加存储)
-
san(存储区域网格)
-
das(直连附加存储)
-
-
集中式存储的优点:
-
管理简单,因为所有的数据都存储在一个节点上面
-
安全性高,集中式存储只有一个数据中心,因此更加容器实现安全控制
-
数据统一管理
-
分布式存储,信息被存储在多个独立且互不干扰的设备中,采用可扩展的存储架构
-
glusterfs
-
ceph
-
存储形式
-
块设备,一个硬盘
-
文件系统存储,格式化就相当于是装一个文件系统
-
对象存储:元数据+数据存储,有一个唯一的对象的id,访问形式是http
-
二、为什么用到ceph
- nfs
我们不妨这样设想一下,NFS如果节点挂掉了,那么我们把这个节点上的硬盘拔出来,换到其他节点上,在其他节点上起一个NFS,那么数据依旧是存在的,但是,如果坏的不是节点而是硬盘呢?可能你想到了给硬盘做RAID,好,保留这个问题,继续往后看。
- mooseFS
Moosefs就是一个分布式存储,他的技术架构就是提供一个Mater节点,来管理整个集群,client只需要通过挂载Master节点就可以往集群内存储文件
大家都知道,一个文件是由文件元数据以及文件数据组成的,文件元数据保存的就是一些简单的概要,比如这个文件多大,文件的拥有人,所属组以及访问权限这些东西,元数据一般都不大,所以会直接保存在Master节点上,而文件本身的数据则会保存在存储节点上,并且是有多副本机制的。完全不怕某个节点挂掉而导致数据丢失。
MooseFS瓶颈
虽然文件的元数据占用的空间并不大,但是在现在这个时代,也奈何不了他多啊,当元数据过多时,Master就成了Moosefs的瓶颈,因为所有的请求都是需要经过Master的,并且Moosefs(到写这篇文章的时间)是没办法做Master高可用的,想给他做高可用的方式就是2个Master,使用Keepalive提供一个VIP(虚拟IP),访问这个VIP就可以访问到2个Master节点,但是,在同一时间内,只有一个Master在工作,所以瓶颈依旧存在

- glusterfs
看到了MooseFS的瓶颈之后,GlusterFS采取了去Master,即不需要Master节点,每个存储节点上都内嵌一个可以代替Master工作的组件,这样操作下来,所有的元数据并不是都放在同一个节点上,每个节点都只需要保存部分元数据,好像这个架构没什么问题了哈,但是我们回想一下MooseFS是如何使用的?是不是客户端挂载Master就可以使用集群了?但是现在没有Master了,或者说每个节点都是Master,那怎么办呢?
GlusterFS就要求使用GlusterFS的客户端安装一个软件,Gluster-client,并且给这个软件写一个配置文件,把所有的存储节点IP地址写进去,这样操作。但是如果后期节点需要更换,改动起来就比较麻烦。我们再来看看Ceph是怎么做的

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

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的密钥
-
添加节点后,这些节点会自动的拉取镜像,启动容器

浙公网安备 33010602011771号