ceph集群安装配置有多种方式,下方cephadm方式是借助容器部署


配置安排:

ceph版本:quincy
主机系统:ubuntu 22.04
docker版本:20.10




1、环境准备(3个节点都要做)

hostnamectl set-hostname xxx

cat >> /etc/hosts <<EOF
192.168.209.100 ceph1
192.168.209.101 ceph2
192.168.209.102 ceph3
EOF

apt install docker.io lvm2 -y
注:python3 ubuntu 22.04系统自带




2、安装cephadm并初始化单节点集群(主机ceph1上执行)

wget https://mirrors.aliyun.com/ceph/debian-17.2.4/pool/main/c/ceph/cephadm_17.2.4-1focal_amd64.deb
dpkg -i cephadm_17.2.4-1focal_amd64.deb
cephadm bootstrap --mon-ip 192.168.209.100 --cluster-network 192.168.209.0/24 --allow-fqdn-hostname

注:上方配置初始化完成后,节点上会运行mon、mgr进程,但不包含osd。同时会在主机ceph1上新建/etc/ceph目录,目录会有如下文件。

root@ceph1:~# ls -al /etc/ceph/
-rw-------   1 root root   151 11月  9 10:14 ceph.client.admin.keyring
-rw-r--r--   1 root root   289 11月  9 10:47 ceph.conf
-rw-r--r--   1 root root   595 11月  9 10:07 ceph.pub


配置初始化完成后,可以使用浏览器访问https://192.168.209.100:8443访问dashboard。对应登录用户名密码会在初始化完成后打印到屏幕,如果忘记了可以使用下方命令重置。

# 密码预先放在test.txt文件中
ceph dashboard set-login-credentials admin -i ./test.txt




3、添加节点,实现高可用(主机ceph1上执行)

ssh-copy-id -f -i /etc/ceph/ceph.pub ceph2
ssh-copy-id -f -i /etc/ceph/ceph.pub ceph3
# 安装ceph工具包,包括ceph、rbd、mount
apt install ceph-common
ceph orch host add ceph101 192.168.209.101
ceph orch host add ceph102 192.168.209.102

注:以实验环境为例,添加节点完成后会在3台主机都安装mon、crash和node-exporter,按添加节点操作顺序的前2台安装mgr,初始化第1台节点安装1个altermanager、grafana、prometheus。cephadm预设是5个mon服务、2个mgr服务、3个crash和node-exporter、1个altermanager、prometheus和grafana。

root@ceph1:~# ceph orch ls
NAME           PORTS        RUNNING  REFRESHED  AGE  PLACEMENT
alertmanager   ?:9093,9094      1/1  6m ago     3h   count:1
crash                           3/3  6m ago     3h   *
grafana        ?:3000           1/1  6m ago     3h   count:1
mgr                             2/2  6m ago     3h   count:2
mon                             3/5  6m ago     2s   count:3
node-exporter  ?:9100           3/3  6m ago     3h   *
prometheus     ?:9095           1/1  6m ago     3h   count:1
 
# 调整mon预设数量,同理其它组件也可以
root@ceph1:~# ceph orch apply mon 3
 
# 关闭mon自动部署,同理其它组件也可以
# 配合下方指定节点上部署mon可实现指定节点安装mon组件
root@ceph1:~# ceph orch apply mon --unmanaged
 
# 指定节点上部署mon,同理其它组件也可以
# 可用于添加新节点
root@ceph1:~# ceph orch apply mon "ceph1,ceph2,ceph3"
 
# 指定节点上删除mon,同理其它组件也可以
# --force参数会强制删除指定节点上的mon服务
# 可用于剔除节点
root@ceph1:~# ceph orch daemon rm mon.ceph3 --force




4、添加osd,这里添加的节点的硬盘不能做过分区和文件系统。 容量要大于5GB。(仍在ceph1主机上配置)

ceph orch apply osd --all-available-devices
ceph orch device ls
没有添加成功可以手动添加
ceph orch daemon add osd ceph1:/dev/sdb
ceph orch daemon add osd ceph2:/dev/sdb
ceph orch daemon add osd ceph3:/dev/sdb
ceph orch device ls

如果添加失败,可以使用如下方式重新添加:

# 删除指定osd磁盘
# 先获取要删除的osd磁盘id,也就是第一列ID对应的数字
ceph osd tree
# 其次下线对应id磁盘,并停止对应id磁盘的osd进程
ceph osd stop 12 
ceph osd out 12
# 然后将其从crush映射、auth认证密钥中删除
ceph osd crush rm osd.12
ceph auth del osd.12
# 最后从osd中删除
ceph osd rm 12

找对应的磁盘去除LVM和格式
grep  osd_id=12, /var/log/ceph/c89a816c-7af3-11ee-8caa-b5b2d38de0de/ceph-volume.log | tail -1  ###这个命令主要是用来找OSD对应的磁盘是谁。
dmsetup remove ceph--83cb1974--7a0b--4d55--b1dc--cfcdffcf6c62-osd--block--028eefd9--44e0--4802--9121--abcc36290d22
wipefs -af /dev/nvme1n1

清除对应节点当中osd目录里面的数据
rm /var/lib/ceph/c89a816c-7af3-11ee-8caa-b5b2d38de0de/osd.12/*

将osd设备完全擦除
ceph orch device zap node11 /dev/nvme1n1 --force
ceph orch device ls

删除对应osd的daemon
ceph orch daemon rm osd.12 --force

添加对应osd的daemon
ceph orch daemon add osd node11:/dev/nvme1n1

检查osd是否运行,如果没有运行到节点把服务拉起来
ceph osd tree
systemctl start c89a816c-7af3-11ee-8caa-b5b2d38de0de@osd.12.service

添加结果:

root@ceph1:~# ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME         STATUS  REWEIGHT  PRI-AFF
-1         0.02939  root default
-7         0.00980      host ceph1
 2    hdd  0.00980          osd.2         up   1.00000  1.00000
-3         0.00980      host ceph2
 0    hdd  0.00980          osd.0         up   1.00000  1.00000
-5         0.00980      host ceph3
 1    hdd  0.00980          osd.1         up   1.00000  1.00000




5、部署完成集群情况

root@ceph1:~# ceph status
  cluster:
    id:     2895daf4-5fd3-11ed-998e-63fba36fadaf
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum ceph1,ceph2,ceph3 (age 48s)
    mgr: ceph100.xzhyib(active, since 38s), standbys: ceph2.xwosnc
    osd: 3 osds: 3 up (since 5s), 3 in (since 21s)
 
  data:
    pools:   1 pools, 1 pgs
    objects: 2 objects, 257 KiB
    usage:   71 MiB used, 30 GiB / 30 GiB avail
    pgs:     1 active+clean




补充:

1、cephadm方式安装的ceph集群,ceph1节点初始化集群后运行的容器介绍

root@ceph1:~# docker ps
CONTAINER ID   IMAGE                                     COMMAND                  CREATED       STATUS       PORTS     NAMES
71c967fbe46c   quay.io/prometheus/alertmanager:v0.23.0   "/bin/alertmanager -…"   3 hours ago   Up 3 hours             ceph-2895daf4-5fd3-11ed-998e-63fba36fadaf-alertmanager-ceph1
8a93e47c2191   quay.io/prometheus/prometheus:v2.33.4     "/bin/prometheus --c…"   3 hours ago   Up 3 hours             ceph-2895daf4-5fd3-11ed-998e-63fba36fadaf-prometheus-ceph1
47e928f19a94   quay.io/ceph/ceph                         "/usr/bin/ceph-crash…"   4 hours ago   Up 4 hours             ceph-2895daf4-5fd3-11ed-998e-63fba36fadaf-crash-ceph1
ee4eebe03d53   quay.io/ceph/ceph:v17                     "/usr/bin/ceph-mgr -…"   4 hours ago   Up 4 hours             ceph-2895daf4-5fd3-11ed-998e-63fba36fadaf-mgr-ceph1-xzhyib
5d71bcad0918   quay.io/ceph/ceph:v17                     "/usr/bin/ceph-mon -…"   4 hours ago   Up 4 hours             ceph-2895daf4-5fd3-11ed-998e-63fba36fadaf-mon-ceph1
ccd727420250   quay.io/ceph/ceph-grafana:8.3.5           "/bin/sh -c 'grafana…"   4 hours ago   Up 4 hours             ceph-2895daf4-5fd3-11ed-998e-63fba36fadaf-grafana-ceph1
e5ece9d56cfd   quay.io/prometheus/node-exporter:v1.3.1   "/bin/node_exporter …"   4 hours ago   Up 4 hours             ceph-2895daf4-5fd3-11ed-998e-63fba36fadaf-node-exporter-ceph1

ceph-mgr,ceph管理器
ceph-monitor,ceph监视器
ceph-crash,ceph崩溃数据收集模块
prometheus,prometheus监控组件
grafana,监控数据展示dashboard
alertmanager,prometheus监控告警组件
node_exporter,prometheus节点数据收集组件