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节点数据收集组件