Zer0e's Blog

【架构之路2】ceph集群搭建

字数统计: 1.5k阅读时长: 6 min
2024/07/11 Share

前言

上篇讲了k8s集群的搭建,这篇接着来搭建ceph集群。

以下内容来自wiki

Ceph 是一个专注于分布式的、弹性可扩展的、高可靠的、性能优异的存储系统平台,可用于为虚拟机提供块存储方案或通过 FUSE提供常规的文件系统。Ceph 是个高度可配置的系统,管理者可以控制系统的各个方面。它提供了一个命令行界面用于监视和控制其存储集群。Ceph 也包含鉴证和授权功能,可兼容多种存储网关接口,如 OpenStack SwiftAmazon S3

ceph中有几个术语,官网的描述为

  • Monitors: A Ceph Monitor (ceph-mon) maintains maps of the cluster state, including the monitor map, manager map, the OSD map, the MDS map, and the CRUSH map. These maps are critical cluster state required for Ceph daemons to coordinate with each other. Monitors are also responsible for managing authentication between daemons and clients. At least three monitors are normally required for redundancy and high availability.
  • Managers: A Ceph Manager daemon (ceph-mgr) is responsible for keeping track of runtime metrics and the current state of the Ceph cluster, including storage utilization, current performance metrics, and system load. The Ceph Manager daemons also host python-based modules to manage and expose Ceph cluster information, including a web-based Ceph Dashboard and REST API. At least two managers are normally required for high availability.
  • Ceph OSDs: An Object Storage Daemon (Ceph OSD, ceph-osd) stores data, handles data replication, recovery, rebalancing, and provides some monitoring information to Ceph Monitors and Managers by checking other Ceph OSD Daemons for a heartbeat. At least three Ceph OSDs are normally required for redundancy and high availability.
  • MDSs: A Ceph Metadata Server (MDS, ceph-mds) stores metadata for the Ceph File System. Ceph Metadata Servers allow CephFS users to run basic commands (like ls, find, etc.) without placing a burden on the Ceph Storage Cluster.

稍微翻译一下

  • MONs : 即监视器,存放了集群状态及例如服务和数据位置等集群信息。
  • MDSs : 即元数据服务器,为 Ceph 文件系统存储元数据,以减轻存储集群的负载(例如ls 等命令所需的信息)。
  • MGRs: 负责集群监控,维护,并于外部监控系统对接,如普罗米修斯。
  • OSDs : 即 OSD daemons,负责集群的数据存储工作,也同时负责多项其它任务,例如数据复制,恢复及重平衡。

ceph的架构还是挺复杂的,建议去官网看看。

正文

废话少说开始搭建。

准备工作就不重复写了,可以参考上一篇,还是那三台机器138,139,140。

官方目前推荐使用cephadm作为安装工具,那我们后续就用这个。至于ceph-ansible和ceph-deploy,前者我们做demo没必要,后者的话官网已经不再支持了。

安装cephadm

在ubantu下很简单直接使用apt就行

1
apt install -y cephadm

但是我们用的是centOS7!已经快被淘汰了,现在新版的叫CentOS Stream,内置的包管理器竟然叫做dnf。。。

不管了,其实cephadm就是一个python脚本,我们去从源码拉下来就行。

先安装python3

1
yum install -y python3

然后拉去代码,拉不下来记得export代理地址。CEPH_RELEASE版本可以参考这里.

1
2
3
CEPH_RELEASE=18.2.2
curl --silent --remote-name --location https://download.ceph.com/rpm-${CEPH_RELEASE}/el9/noarch/cephadm
chmod +x cephadm

接下来是添加仓库,官网这里是安装的18.2,所以添加的是reef仓库,我这里安装的是15.x所以是octopus仓库

1
2
./cephadm add-repo --release octopus
./cephadm install

初始化集群

在所有节点上完成cephadm安装后,安装ceph-common

1
yum install ceph-common

主节点初始化集群,初始化方式是使用docker方式,所以提前装好docker-ce,ceph-common中应该有docker依赖

1
cephadm bootstrap --mon-ip 192.168.28.138

初始化完成后,终端会打印默认密码,进入https://worker1:8443/记得先更改初始密码

执行ceph -s能查看集群信息说明初始化完成。记得保存下cluster.id,后续对接k8s需要使用。没记也不要紧,后面应该很多地方都可以看到。

添加子节点

将主节点的ceph配置文件和key文件传到子节点上

1
2
3
4
5
scp /etc/ceph/ceph.conf root@worker2:/etc/ceph/
scp /etc/ceph/ceph.client.admin.keyring root@worker2:/etc/ceph/

scp /etc/ceph/ceph.conf root@worker3:/etc/ceph/
scp /etc/ceph/ceph.client.admin.keyring root@worker3:/etc/ceph/

添加host节点

1
2
ceph orch host add worker2
ceph orch host add worker3

在所有节点部署mon服务

1
2
ceph orch daemon add mon worker2:192.168.28.139
ceph orch daemon add mon worker3:192.168.28.140

在另外一个节点部署mgr服务

1
ceph orch daemon add mgr worker2:192.168.28.139

这里我也尝试把节点3也部署mgr,但是发现部署后主节点的mgr服务会被取消,不知道啥原因,先不管了,影响也不大。

添加osd

osd对应的就是硬盘,一个osd服务管理一个硬盘,这里我们在worker2和3上分别额外挂载两个硬盘。在VMware虚拟机设置中添加硬盘即可,在系统中不需要任何分区操作。

添加完成后重启系统。

在2,3节点上执行fdisk -l命令,能看见挂载的硬盘,一般对于虚拟机来说,/dev/sdb和/dev/sdc是新加的两块硬盘。

在主节点执行命令,查看可用设备

1
ceph orch device ls

执行以下命令,让ceph将所有可用设备用作osd

1
ceph orch apply osd --all-available-devices

也可手动部署osd

1
ceph orch daemon add osd worker2:/dev/sdb

至此,ceph集群搭建完成。

常见问题

部署osd时,提示可能已经被使用。

可能之前挂载的时候,没有卸载干净,需要重新清理lv(Logical Volume),ceph正是使用lv技术来管理磁盘的。

1
2
3
4
5
lvdisplay
// 根据display找到对应磁盘
lvremove /dev/ceph-e0242907-2693-4d51-a454-18aa38145020/osd-block-245236cd-4902-4973-b306-baa61bb16d1b
// 记得重启
reboot

yum代理

export的代理对yum不起作用,需要手动配置下

1
2
3
vim /etc/yum.conf
// 在空行添加
proxy=http://192.168.28.1:10801

osd大量离线

当启用了mds后,osd会定时与mds服务进行同步,此时如果时间异常会导致同步失败,一般情况下是mds服务或osd所在节点的时间不正确,用ntp同步一下时间即可。

原文作者:Zer0e

原文链接:https://re0.top/2024/07/11/devops2/

发表日期:July 11th 2024, 4:30:00 pm

更新日期:July 11th 2024, 8:38:54 pm

版权声明:本文采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可

CATALOG
  1. 1. 前言
  2. 2. 正文
    1. 2.1. 安装cephadm
    2. 2.2. 初始化集群
    3. 2.3. 添加子节点
    4. 2.4. 添加osd
  3. 3. 常见问题
    1. 3.0.1. 部署osd时,提示可能已经被使用。
    2. 3.0.2. yum代理
    3. 3.0.3. osd大量离线