一、前言
本文主要介绍如何通过cephadm部署ceph集群。
环境说明:
部署方法:cephadm
操作系统:ubuntu22.04
ceph版本:S版本
部署过程中需要拉ceph镜像,可以直接去我个人镜像仓库拉取
二、架构图
ceph的架构图如下,后期博客会按照这个架构图详细更新解释,大家可以先看下。
本次内容主要还是“使用cephadm部署ceph集群”
三、官网
官网链接:
https://ceph.io/en/
官网文档链接:
Welcome to Ceph — Ceph Documentation
中文社区文档链接:
https://docs.ceph.net.cn (正常)
http://docs.ceph.org.cn (已停止维护)
官方软件下载仓库
Index of /
四、版本说明
本文部署的是19.2.2 S版本
1.看ceph的版本
1>大版本
Ceph Releases (index) — Ceph Documentation
2>小版本
https://docs.ceph.com/en/latest/releases/general/
x.0.z 开发版本,一般是用于内部测试。
x.1.z 测试版本,一般是开发人员测试使用。
x.2.z 稳定版本,生产环境中推荐使用。
五、安装ceph的常用工具
Installing Ceph — Ceph Documentation
1.官网推荐安装方法
一、方法一
cephadm(必须有podman或者docker环境)(podman是一种容器管理工具,和docker一样;podman是红帽的,ceph也是红帽的)
二、方法二
rook(前提必须是先有k8s集群)
2.其他方法(其他方法中之前有ceph-ansible和ceph-deploy)
ceph-deploy(ceph的原生部署工具):
(1)ceph-deploy是一种部署ceph的方法,它仅依赖于SSH访问服务器、而后借助sudo和一些Python模块就可以实现部署。
(2)它完全在工作站(管理主机)上运行,不需要任何服务、数据库或类似的东西。
(3)它不是一个通用的部署系统,它只是为Ceph设计的,并且是为那些希望在不需要安装Chef、Puppet或Juju的情况下使用合理的初始设置快速运行Ceph的用户而设计的。
(4)除了推送Ceph配置文件之外,它不会处理客户端配置,想要对安全设置、分区或目录位置进行精确控制的用户应该使用Chef或Puppet之类的工具。
ceph-ansible:
(1)我们可以使用ansible的playbook来部署Ceph;
(2)ceph的GitHub地址为: "https://github.com/ceph/ceph-ansible"
ceph-chef:
对应的GitHub地址: "https://github.com/ceph/ceph-chef"
puppet-ceph:
即使用puppet工具来部署ceph。
Cephadm:
和k8s的kubeadm一样好用,部署服务非常方便,推荐使用。
参考链接:
https://docs.ceph.com/en/latest/install/#other-methods
ceph:
https://github.com/ceph/ceph
3.cephadm部署ceph集群
Using Cephadm to Deploy a New Ceph Cluster — Ceph Documentation
六、使用cephadm部署ceph
官网链接:
Using Cephadm to Deploy a New Ceph Cluster — Ceph Documentation
1.cephadm基础配置环境准备
不会准备的虚拟机的可以参考我之前博客:
https://blog.csdn.net/2402_84026123/article/details/167703896?spm=1011.2415.3001.10575&sharefrom=mp_manage_link
基于cephadm部署前提条件,官方提的要求Ubuntu 22.04 LTS出了容器运行时其他都满足
Python 3
Systemd
Podman or Docker for running containers
Time synchronization (such as Chrony or the legacy ntpd)
LVM2 for provisioning storage devices
Using Cephadm to Deploy a New Ceph Cluster — Ceph Documentation
1.虚拟机环境准备
准备3台ubt22.04LTS的虚拟机
ceph141:
ip:10.0.0.141
CPU: 1c Memory: 2G /dev/sdb:300GB /dev/sdc: 500GB /dev/sdd: 1024GB
ceph142:
ip:10.0.0.142
CPU: 1c Memory: 2G /dev/sdb:300GB /dev/sdc: 500GB /dev/sdd: 1024GB
ceph143:
ip:10.0.0.0.143
CPU: 1c Memory: 2G /dev/sdb:300GB /dev/sdc: 500GB /dev/sdd: 1024GB
[root@ceph141 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 63.9M 1 loop /snap/core20/2318 loop1 7:1 0 87M 1 loop /snap/lxd/29351 loop2 7:2 0 64M 1 loop /snap/core20/2379 loop3 7:3 0 89.4M 1 loop /snap/lxd/31333 loop4 7:4 0 40.4M 1 loop /snap/snapd/20671 loop5 7:5 0 38.8M 1 loop /snap/snapd/21759 sda 8:0 0 100G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 2G 0 part /boot └─sda3 8:3 0 98G 0 part └─ubuntu--vg-ubuntu--lv 253:0 0 49G 0 lvm / sdb 8:16 0 300G 0 disk sdc 8:32 0 500G 0 disk sdd 8:48 0 1T 0 disk sr0 11:0 1 1024M 0 rom [root@ceph141 ~]# [root@ceph142 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop1 7:1 0 87M 1 loop /snap/lxd/29351 loop2 7:2 0 38.8M 1 loop /snap/snapd/21759 loop3 7:3 0 40.4M 1 loop /snap/snapd/20671 loop4 7:4 0 64M 1 loop /snap/core20/2379 loop5 7:5 0 89.4M 1 loop /snap/lxd/31333 loop6 7:6 0 63.7M 1 loop /snap/core20/2496 sda 8:0 0 100G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 2G 0 part /boot └─sda3 8:3 0 98G 0 part └─ubuntu--vg-ubuntu--lv 253:0 0 49G 0 lvm / sdb 8:16 0 300G 0 disk sdc 8:32 0 500G 0 disk sdd 8:48 0 1T 0 disk sr0 11:0 1 1024M 0 rom [root@ceph142 ~]# [root@ceph143 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS loop0 7:0 0 89.4M 1 loop /snap/lxd/31333 loop1 7:1 0 64M 1 loop /snap/core20/2379 loop2 7:2 0 87M 1 loop /snap/lxd/29351 loop3 7:3 0 40.4M 1 loop /snap/snapd/20671 loop5 7:5 0 38.8M 1 loop /snap/snapd/21759 loop6 7:6 0 63.7M 1 loop /snap/core20/2496 sda 8:0 0 100G 0 disk ├─sda1 8:1 0 1M 0 part ├─sda2 8:2 0 2G 0 part /boot └─sda3 8:3 0 98G 0 part └─ubuntu--vg-ubuntu--lv 253:0 0 49G 0 lvm / sdb 8:16 0 300G 0 disk sdc 8:32 0 500G 0 disk sdd 8:48 0 1T 0 disk sr0 11:0 1 1024M 0 rom [root@ceph143 ~]#不会安装操作系统的参考我之前博客:
Ubuntu操作系统安装-CSDN博客
2.三台服务器都设置时区
timedatectl set-timezone Asia/Shanghai ll /etc/localtime3.安装docker环境(三台都安装)
不会安装docker的参考我之前博客(二进制部署docker)
Docker进阶之路(1)-CSDN博客
4.所有节点添加hosts文件解析(三台都执行)
cat >> /etc/hosts <<EOF 10.0.0.141 ceph141 10.0.0.142 ceph142 10.0.0.143 ceph143 EOF2.安装cephadm工具
官网下载链接:
Index of /
1.下载需要安装ceph版本的cephadm
方法一、直接用curl安装
[root@ceph141 ~]# CEPH_RELEASE=19.2.2 curl --silent --remote-name --location https://download.ceph.com/rpm-${CEPH_RELEASE}/el9/noarch/cephadm [root@ceph141 ~]# ll cephadm -rw-r--r-- 1 root root 787576 Oct 8 15:56 cephadm方法二、在浏览器下载下来,然后再传到服务器里面
打开网站,搜索19.2.2版本(这里我们用这个版本,建议统一和我一个版本)
2 将cephadm添加到PATH环境变量
[root@ceph141 ~]# mv cephadm /usr/local/bin/cephadm [root@ceph141 ~]# chmod +x /usr/local/bin/cephadm [root@ceph141 ~]# ll /usr/local/bin/cephadm -rwxr-xr-x 1 root root 787576 Oct 8 15:44 /usr/local/bin/cephadm* [root@ceph141 ~]#3 检查版本是否正确
[root@ceph141 ~]# cephadm version cephadm version 19.2.2 (0eceb0defba60152a8182f7bd87d164b639885b8) squid (stable) [root@ceph141 ~]#3.基于cephadm快速初始化ceph集群(141操作)
1.拉取镜像
方法一、去官网拉取镜像,有下列这些镜像
[root@ceph141 ~]# docker image ls | awk '{print $1":"$2}' REPOSITORY:TAG quay.io/ceph/ceph:v19 quay.io/prometheus/prometheus:v2.51.0 grafana/grafana:10.4.0 quay.io/prometheus/node-exporter:v1.7.0 quay.io/prometheus/alertmanager:v0.25.0 [root@ceph141 ~]#把镜像导入到本地
[root@ceph141 ~]#docker load -i 镜像包方法二、直接去我个人的镜像仓库拉取
镜像连接:
crpi-2qt1qcwq3ji0zfnc.cn-chengdu.personal.cr.aliyuncs.com/wuyuhua666888/ceph:v19
crpi-2qt1qcwq3ji0zfnc.cn-chengdu.personal.cr.aliyuncs.com/wuyuhua666888/prometheus:v2.51.0
crpi-2qt1qcwq3ji0zfnc.cn-chengdu.personal.cr.aliyuncs.com/wuyuhua666888/node-exporter:v1.7.0
crpi-2qt1qcwq3ji0zfnc.cn-chengdu.personal.cr.aliyuncs.com/wuyuhua666888/alertmanager:v0.25.0
crpi-2qt1qcwq3ji0zfnc.cn-chengdu.personal.cr.aliyuncs.com/wuyuhua666888/grafana:10.4.0
拉下来自己打个tag就可以了,示例
[root@ceph141 ~]# docker tag crpi-2qt1qcwq3ji0zfnc.cn-chengdu.personal.cr.aliyuncs.com/wuyuhua666888/node-exporter:v1.7.0 quay.io/prometheus/node-exporter:v1.7.0
2 创建新集群
--skip-pull
直接到本地拉取镜像,不加会走外网拉镜像
[root@ceph141 ~]# cephadm bootstrap --mon-ip 10.0.0.141 --cluster-network 10.0.0.0/24 --allow-fqdn-hostname --skip-pull
3.浏览器访问登录
url和账号密码都在上一步初始化的结果里面
设置一个新密码
成功进入主界面
4.配置ceph集群的管理节点的两种方式
方式一、ceph客户端直接管理,需要下载ceph-common工具
方式二、cephadm shell容器管理
1.在宿主机安装ceph管理命令
1 添加软件源
[root@ceph141 ~]# cephadm add-repo --release squid Installing repo GPG key from https://download.ceph.com/keys/release.gpg... Installing repo file at /etc/apt/sources.list.d/ceph.list... Updating package list... Completed adding repo. [root@ceph141 ~]# [root@ceph141 ~]# ll /etc/apt/sources.list.d/ceph.list -rw-r--r-- 1 root root 55 Mar 31 16:38 /etc/apt/sources.list.d/ceph.list [root@ceph141 ~]# [root@ceph141 ~]# ll /etc/apt/trusted.gpg.d/ceph.release.gpg -rw-r--r-- 1 root root 1143 Mar 31 16:38 /etc/apt/trusted.gpg.d/ceph.release.gpg [root@ceph141 ~]# [root@ceph141 ~]# ll /etc/ceph/ total 20 drwxr-xr-x 2 root root 4096 Mar 31 15:37 ./ drwxr-xr-x 130 root root 4096 Mar 31 15:30 ../ -rw------- 1 root root 151 Mar 31 15:37 ceph.client.admin.keyring -rw-r--r-- 1 root root 171 Mar 31 15:37 ceph.conf -rw-r--r-- 1 root root 595 Mar 31 15:33 ceph.pub [root@ceph141 ~]#替换成国内阿里的加速源
[root@ceph141 ~]# sed -i 's#download.ceph.com#mirrors.aliyun.com/ceph#' /etc/apt/sources.list.d/ceph.list [root@ceph141 ~]# cat /etc/apt/sources.list.d/ceph.list deb https://mirrors.aliyun.com/ceph/debian-squid/ jammy main [root@ceph141 ~]#2 安装ceph通用工具包
[root@ceph141 ~]# apt update [root@ceph141 ~]# apt -y install ceph-common3.测试使用
2.基于容器管理ceph集群
1 启动shell工具
执行cephadm shell,会自动进入一个容器,可以在容器里面直接使用ceph命令,管理ceph
2 本质上是启动了一个容器【当命令执行结束时,容器会自动删除!】
5.ceph集群添加主机、删除主机
1.添加主机
1.镜像导入其他两个节点
将docker和镜像重新从ceph141节点导入到ceph142和ceph143节点。
docker load导入即可。
2.把秘钥放到其他服务器上
[root@ceph141 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub ceph142 [root@ceph141 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub ceph1433.添加主机
[root@ceph141 ~]# ceph orch host add ceph142 10.0.0.142 Added host 'ceph142' with addr '10.0.0.142' [root@ceph141 ~]# [root@ceph141 ~]# ceph orch host add ceph143 10.0.0.143 Added host 'ceph143' with addr '10.0.0.143' [root@ceph141 ~]#温馨提示: 将集群加入成功后,会自动创建"/var/lib/ceph/<Ceph_Cluster_ID>"相关数据目录。
4.查看主机列表
[root@ceph141 ~]# ceph orch host ls HOST ADDR LABELS STATUS ceph141 10.0.0.141 _admin ceph142 10.0.0.142 ceph143 10.0.0.143 3 hosts in cluster [root@ceph141 ~]#5.通过浏览器查看集群列表
发现三台都可用了
2.删除主机
删除ceph143主机,来演示下“如何删除主机”
1.驱逐已经调度到节点的服务
[root@ceph141 ~]# ceph orch host drain ceph143 Scheduled to remove the following daemons from host 'ceph143' type id -------------------- --------------- node-exporter ceph143 mon ceph143 ceph-exporter ceph143 crash ceph143 [root@ceph141 ~]#2.驱逐后主机将被标记为不可调度
[root@ceph141 ~]# ceph orch host ls HOST ADDR LABELS STATUS ceph141 10.0.0.141 _admin ceph142 10.0.0.142 ceph143 10.0.0.143 _no_schedule,_no_conf_keyring 3 hosts in cluster [root@ceph141 ~]#3.观察已经驱逐完毕
[root@ceph141 ~]# ceph orch host drain ceph143 Scheduled to remove the following daemons from host 'ceph143' type id -------------------- --------------- [root@ceph141 ~]#也可以看下daemon运行情况(驱逐后ceph143节点上没有daemon在运行)
[root@ceph141 ~]# ceph orch ps NAME HOST PORTS STATUS REFRESHED AGE MEM USE MEM LIM VERSION IMAGE ID CONTAINER ID alertmanager.ceph141 ceph141 *:9093,9094 running (5h) 12s ago 27h 24.9M - 0.25.0 c8568f914cd2 5bfdbc4589fa ceph-exporter.ceph141 ceph141 *:9926 running (5h) 12s ago 27h 7487k - 19.2.6 829c8a87e883 430386604cc7 ceph-exporter.ceph142 ceph142 *:9926 running (5h) 6m ago 5h 5231k - 19.2.6 829c8a87e883 0d3a5f0031df crash.ceph141 ceph141 running (5h) 12s ago 27h 18.8M - 19.2.6 829c8a87e883 2afb5e7f6b5c crash.ceph142 ceph142 running (5h) 6m ago 5h 4503k - 19.2.6 829c8a87e883 325bf42faec4 grafana.ceph141 ceph141 *:3000 running (5h) 12s ago 27h 179M - 12.3.1 5cdab57891ea 90fbbc9f2188 mgr.ceph141.hdvoti ceph141 *:9283,8765,8443 running (5h) 12s ago 27h 186M - 19.2.6 829c8a87e883 e949c78b86f3 mgr.ceph142.zicwnb ceph142 *:8443,9283,8765 running (5h) 6m ago 5h 111M - 19.2.6 829c8a87e883 46322e43fdca mon.ceph141 ceph141 running (5h) 12s ago 27h 78.1M 2048M 19.2.6 829c8a87e883 261a121614e5 mon.ceph142 ceph142 running (5h) 6m ago 5h 87.9M 2048M 19.2.6 829c8a87e883 c4cfa477d901 node-exporter.ceph141 ceph141 *:9100 running (5h) 12s ago 27h 16.2M - 1.7.0 72c9c2088986 c8a30176f66f node-exporter.ceph142 ceph142 *:9100 running (5h) 6m ago 5h 17.9M - 1.7.0 72c9c2088986 d21699c4fde7 prometheus.ceph141 ceph141 *:9095 running (48s) 12s ago 27h 46.2M - 2.51.0 1d3b7f56885b 572df0ed27a74.移除节点
[root@ceph141 ~]# ceph orch host rm ceph143 Removed host 'ceph143' [root@ceph141 ~]# [root@ceph141 ~]# ceph orch host ls HOST ADDR LABELS STATUS ceph141 10.0.0.141 _admin ceph142 10.0.0.142 2 hosts in cluster [root@ceph141 ~]#5.删除数据,日志等一些列ceph相关的 数据【或者直接重新安装操作系统即可,避免数据泄露。推荐操作!】
[root@ceph143 ~]# ll /var/lib/ceph/ total 12 drwxr-xr-x 3 root root 4096 Mar 31 17:02 ./ drwxr-xr-x 62 root root 4096 Mar 31 17:02 ../ drwx------ 4 167 167 4096 Mar 31 17:08 11e66474-0e02-11f0-82d6-4dcae3d59070/ [root@ceph143 ~]# [root@ceph143 ~]# [root@ceph143 ~]# ll /var/log/ceph/ total 112 drwxr-xr-x 3 root root 4096 Mar 31 17:05 ./ drwxrwxr-x 10 root syslog 4096 Mar 31 17:02 ../ drwxrwx--- 2 167 167 4096 Mar 31 17:06 11e66474-0e02-11f0-82d6-4dcae3d59070/ -rw-r--r-- 1 root root 96321 Mar 31 17:09 cephadm.log [root@ceph143 ~]#因为我们只是演示下如何删除主机!!!,所以删除测试后,再把主机加回来
[root@ceph141 ~]# ceph orch host add ceph143 10.0.0.143 Added host 'ceph143' with addr '10.0.0.143' [root@ceph141 ~]# [root@ceph141 ~]# ceph orch host ls HOST ADDR LABELS STATUS ceph141 10.0.0.141 _admin ceph142 10.0.0.142 ceph143 10.0.0.143 3 hosts in cluster [root@ceph141 ~]#6.添加OSD设备到ceph集群
温馨提示: 如果一个设备想要加入ceph集群,要求满足3个条件:
1.设备未被使用;
2.设备的存储大小必须大于5GB;
3.需要等待一段时间,快则30s,慢则3分钟,线下教学有人笔记本性能不高甚至有等了25min或者40min才等出现设备结果; 如果想要快速显示,则可以在相应节点手动导入"quay.io/ceph/ceph"镜像即可。
1 查看集群可用的设备【每个设备想要加入到集群,则其大小不得小于5GB】
[root@ceph141 ~]# ceph orch device ls HOST PATH TYPE DEVICE ID SIZE AVAILABLE REFRESHED REJECT REASONS ceph141 /dev/sdb hdd 300G Yes 28m ago ceph141 /dev/sdc hdd 500G Yes 28m ago ceph141 /dev/sdd hdd 1024G Yes 28m ago ceph141 /dev/sr0 hdd VMware_Virtual_SATA_CDRW_Drive_01000000000000000001 1023M No 28m ago Failed to determine if device is BlueStore, Insufficient space (<5GB) ceph142 /dev/sdb hdd 300G Yes 3m ago ceph142 /dev/sdc hdd 500G Yes 3m ago ceph142 /dev/sdd hdd 1024G Yes 3m ago ceph142 /dev/sr0 hdd VMware_Virtual_SATA_CDRW_Drive_01000000000000000001 1023M No 3m ago Failed to determine if device is BlueStore, Insufficient space (<5GB) ceph143 /dev/sdb hdd 300G Yes 20m ago ceph143 /dev/sdc hdd 500G Yes 20m ago ceph143 /dev/sdd hdd 1024G Yes 20m ago ceph143 /dev/sr0 hdd VMware_Virtual_SATA_CDRW_Drive_01000000000000000001 1023M No 20m ago Failed to determine if device is BlueStore, Insufficient space (<5GB) [root@ceph141 ~]#2.添加osd设备到集群
[root@ceph141 ~]# ceph orch daemon add osd ceph141:/dev/sdb Created osd(s) 0 on host 'ceph141' [root@ceph141 ~]# [root@ceph141 ~]# ceph orch daemon add osd ceph141:/dev/sdc Created osd(s) 1 on host 'ceph141' [root@ceph141 ~]# [root@ceph141 ~]# ceph orch daemon add osd ceph141:/dev/sdd Created osd(s) 2 on host 'ceph141' [root@ceph141 ~]# [root@ceph141 ~]# [root@ceph141 ~]# ceph orch daemon add osd ceph142:/dev/sdb Created osd(s) 3 on host 'ceph142' [root@ceph141 ~]# [root@ceph141 ~]# ceph orch daemon add osd ceph142:/dev/sdc Created osd(s) 4 on host 'ceph142' [root@ceph141 ~]# [root@ceph141 ~]# ceph orch daemon add osd ceph142:/dev/sdd Created osd(s) 5 on host 'ceph142' [root@ceph141 ~]# [root@ceph141 ~]# ceph orch daemon add osd ceph143:/dev/sdb Created osd(s) 6 on host 'ceph143' [root@ceph141 ~]# [root@ceph141 ~]# ceph orch daemon add osd ceph143:/dev/sdc Created osd(s) 7 on host 'ceph143' [root@ceph141 ~]# [root@ceph141 ~]# ceph orch daemon add osd ceph143:/dev/sdd Created osd(s) 8 on host 'ceph143' [root@ceph141 ~]#3.添加后验证
查看osd
查看磁盘总量
查看集群健康度
到这里,“使用cephadm部署ceph集群”就全部完成了,后续会更新ceph的进阶使用!!!
本文来自csdn,作者:Yuhua 吴玉桦。
当你的能力还驾驭不了你的生活的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。