Openstack 与 Ceph集群搭建(中): Ceph部署

文章目录

一、部署前说明

本文采用cephadm进行安装Ceph,cephadm是官方推荐的ceph集群部署工具。

1. ceph 版本选择依据

上一篇文章:Openstack 与 Ceph集群搭建(上)中说明了ceph版本选择, 这里提供相关依据:

2. ceph网络要求

根据官方要求,Ceph集群至少需要10Gb/s的网络带宽

官方链接:https://docs.ceph.com/en/latest/start/hardware-recommendations/#networks

3. 硬件要求

二、部署架构

Ceph 集群需要部署4个组件,OSD、MON、MDS ,各接点部署,如下图:

  • OSD:Ceph OSD(Object Storage 对象存储守护进程)存储数据,处理数据复制、恢复、重新平衡;并通过检查其他Ceph OSD守护进程的心跳来向Ceph监视器和管理器提供信息。通常至少要3个Ceph OSD节点来实现冗余和高可用性。本质上OSD就是一个个Host节点上的存储磁盘。
  • Monitors:Ceph Monitor (守护进程 ceph-mon)维护集群的映射,包括监视器映射、管理器映射、OSD映射、MDSS映射和CRUSH映射。这些映射是Ceph守护进程相互协调所需的关键集群状态。 监视器还负责管理守护进程和客户端之间的身份验证。 通常至少需要三个监视器才能实现冗余和高可用性。基于paxos协议实现节点间的信息同步。
  • Managers:Ceph管理器(守护进程ceph-mgr)负责跟踪运行时的指标和Ceph集群的当前状态,包括存储利用率、当前性能指标和系统负载。Ceph管理器守护进程还托管基于Python的模块来管理公开Ceph集群信息,包括基于Web的Ceph仪表盘和REST API。高可用通常至少要2个管理器。基于raft协议实现节点间的同步。
  • MDSs:Ceph元数据服务器(MDS Metadata Server、 ceph-mds)代表Ceph文件系统存储元数据。Ceph元数据服务器允许POSIX(为应用程序提供接口标准)文件系统用户执行基本命令(如ls、find等),而不会给Ceph存储集群带来巨大负担。
类型 节点
部署节点 node-03 172.16.250.248
OSD节点 node-01 172.16.250.250;node-02 172.16.250.249 ;node-03 172.16.250.248
MON节点 node-01 172.16.250.250;node-02 172.16.250.249 ;node-03 172.16.250.248
MDS节点 node-01 172.16.250.250;node-02 172.16.250.249 ;node-03 172.16.250.248
MGR节点 node-01 172.16.250.250;node-03 172.16.250.248

三、部署过程

1. 通用步骤

在全节点安装docker

bash 复制代码
apt install docker.io

2. 部署管理节点

这里的管理节点也是部署节点 node-03

创建账号

在部署节点添加ceph用户

bash 复制代码
useradd -d /home/ceph_user -m ceph_user 
passwd ceph_user

安装Cephadm

在部署节点安装Cephadm。cephadm是官方推荐的ceph集群部署工具。

选项一:

bash 复制代码
apt install -y cephadm

该步骤执行后,直接开始bootstrap安装环节。

选项一:这种安装方式不一定是最新版本ceph,故提供另一种安装方式

选项二(本文档采用):

bash 复制代码
# replace this with the active release
CEPH_RELEASE=18.2.2

# 下载
curl --silent --remote-name --location https://download.ceph.com/rpm-${CEPH_RELEASE}/el9/noarch/cephadm

# 添加可执行权限
chmod +x cephadm  # 对下载的cephadm添加可执行权限。

# 安装cephadmin
./cephadm add-repo --release reef
./cephadm install

#验证
root@ceph-mon-01:~# which cephadm
/usr/sbin/cephadm

最新版本号查询:https://docs.ceph.com/en/latest/releases/#active-releases

运行bootstrap

部署节点node-03上运行:

方式一:

bash 复制代码
# 指定第一台 监控主机IP为 172.16.249.248
cephadm bootstrap --mon-ip 172.16.250.248
# 或者使用下面的命令: 指定存储网络
cephadm bootstrap --mon-ip 172.16.250.248 --cluster-network 172.16.249.0/24

方式二(本文档采用):

可以新建/etc/ceph/initial-ceph.conf文件并 写入以下配置(刷配置时需要删除注释):

bash 复制代码
[global]
public_network = 172.16.250.0/24         # 指定ceph公共网络,用于用户访问
cluster_network = 172.16.249.0/24        # 指定集群内部网络,用于同步
# public_network = {IPv4 public-network/netmask}, {IPv6 public-network/netmask}
mon_host = 172.16.250.250
osd_journal_size = 10000
osd_pool_default_size = 2                # 副本数默认为3,这里修改为2; 即保留2份数据
osd_pool_default_pg_num = 512
osd_pool_default_pgp_num = 512
rbd_default_features = 3
mon_max_pg_per_osd =2000
mon_allow_pool_delete=true   

通过以上脚本进行bootstrap:

bash 复制代码
cephadm bootstrap --config /etc/ceph/initial-ceph.conf --mon-ip 172.16.250.248

输出如下:

bash 复制代码
Setting public_network to 172.16.250.0/24 in mon config section
Setting cluster_network to 172.16.249.0/24
Wrote config to /etc/ceph/ceph.conf
Wrote keyring to /etc/ceph/ceph.client.admin.keyring
Creating mgr...
Verifying port 0.0.0.0:9283 ...
Verifying port 0.0.0.0:8765 ...
Verifying port 0.0.0.0:8443 ...
Waiting for mgr to start...
Waiting for mgr...
mgr not available, waiting (1/15)...
mgr not available, waiting (2/15)...
mgr not available, waiting (3/15)...
mgr is available
Enabling cephadm module...
Waiting for the mgr to restart...
Waiting for mgr epoch 5...
mgr epoch 5 is available
Setting orchestrator backend to cephadm...
Generating ssh key...
Wrote public SSH key to /etc/ceph/ceph.pub
Adding key to root@localhost authorized_keys...
Adding host itlab...
Deploying mon service with default placement...
Deploying mgr service with default placement...
Deploying crash service with default placement...
Deploying ceph-exporter service with default placement...
Deploying prometheus service with default placement...
Deploying grafana service with default placement...
Deploying node-exporter service with default placement...
Deploying alertmanager service with default placement...
Enabling the dashboard module...
Waiting for the mgr to restart...
Waiting for mgr epoch 9...
mgr epoch 9 is available
Generating a dashboard self-signed certificate...
Creating initial admin user...
Fetching dashboard port number...
Ceph Dashboard is now available at:

             URL: https://itlab:8443/
            User: admin
        Password: Dashabi#2024

Bootstrap 命令功能如下:

  • 为本地主机上的新群集创建monitor和manager守护程序。
  • 为 Ceph 群集生成新的 SSH 密钥,并将其添加到root用户的文件/root/.ssh/authorized_keys
  • 将与新群集通信所需的最小配置文件保存到 /etc/ceph/ceph.conf
  • client.admin管理(特权!)密钥的副本写入/etc/ceph/ceph.client.admin.keyring
  • 将公钥的副本写入/etc/ceph/ceph.pub

此外:该命令会有如下输出,主要涉及用户名和密码:

bash 复制代码
URL: https://ceph_mon_01:8443/
User: admin
Password: kjephbnn09

3. 登录Ceph web

首次登录会要求修改密码。

4. 将其他节点加入集群

同步ceph key

在部署节点逐一对复制到集群所有节点,举例复制到osd01,如下:

bash 复制代码
ssh-copy-id -f -i /etc/ceph/ceph.pub node-01
ssh-copy-id -f -i /etc/ceph/ceph.pub node-02

安装ceph CLI命令行

在部署节点安装ceph-common

bash 复制代码
cephadm install ceph-common

添加主机节点到集群

在部署节点node-03 执行以下命令用于添加其他节点到集群:

bash 复制代码
ceph orch host add node-01
ceph orch host add node-02

添加OSD节点

作为OSD存储的磁盘必须满足以下条件:

  • 该设备不能有分区。
  • 该设备不能有任何 LVM 状态。
  • 不得挂载该设备。
  • 该设备不得包含文件系统。
  • 该设备不得包含 Ceph BlueStore OSD。
  • 该设备必须大于 5 GB。

在部署节点执行以下命令用于自动发现并上线OSD:

bash 复制代码
# 自动发现OSD
ceph orch apply osd --all-available-devices

# 关闭自动发现
ceph orch apply osd --all-available-devices --unmanaged=true

在特定主机特定设备上创建osd(二选一)

根据你的环境进行替换node-02:/dev/sdb (/dev/sdb 为硬盘)

ceph orch daemon add osd node-02:/dev/sdb

若发现OSD未成功加入,可对目标磁盘做以下操作:

bash 复制代码
# 重置磁盘
parted /dev/sda mklabel gpt

# 新建分区(若要将分区作为OSD)
sudo mkfs.ext4 /dev/sdc1

# 初始化分区(硬盘)
wipefs -af /dev/sda

若磁盘被其他ceph占用,解决方案如下:

bash 复制代码
dmsetup ls
dmsetup remove ceph

将监控节点添加到集群

bash 复制代码
ceph orch daemon add mon node-01
ceph orch daemon add mgr node-01

添加管理节点lable,指定Managers进程节点:

bash 复制代码
ceph orch host label add node-01 _admin
ceph orch host label add node-03 _admin

添加额外监控主机:

https://docs.ceph.com/en/latest/cephadm/services/mon/#deploy-additional-monitors

bash 复制代码
# 限制监控主机仅在mon01,mon02,mon03
ceph orch apply mon "node-01,node-02,node-03"

监控配置

ceph mgr module enable prometheus

Enable ceph prometheus module on every cluster: ceph mgr module enable prometheus

Allow traffic through the port 9283 of the machines containing the ceph mgr

To ensure that you don't lose the metrics between mgr fail-overs, add all the mgr to the target section in Prometheus (depending of the prometheus scrape interval some of the metrics could be lost during the failover)

访问:https://172.16.250.248:3000

四、查看集群状态

MON 节点:使用 ceph mon stat 和 ceph quorum_status 查看。

OSD 节点:使用 ceph osd stat 和 ceph osd tree 查看。

MDS 节点:使用 ceph fs status 查看。

Manager 节点:使用 ceph mgr stat 查看。

集群整体状态:使用 ceph -s 或 ceph status 查看。

bash 复制代码
ceph mgr stat
ceph fs status
ceph osd tree
ceph osd stat
ceph mon stat
ceph orch host ls
ceph orch device ls
ceph -s
相关推荐
一名路过的小码农17 小时前
ceph 18.2.4二次开发,docker镜像制作
ceph·docker·容器
墨水\\4 天前
分布式----Ceph应用(下)
分布式·ceph
大G哥5 天前
基于K8S1.28.2实验rook部署ceph
java·ceph·云原生·容器·kubernetes
石兴稳6 天前
Ceph PG(归置组)的状态说明
ceph
石兴稳6 天前
Ceph层次架构分析
ceph
活老鬼6 天前
Ceph分布式存储
linux·运维·服务器·分布式·ceph
石兴稳8 天前
Ceph client 写入osd 数据的两种方式librbd 和kernel rbd
linux·ceph
石兴稳8 天前
Ceph的pool有两种类型
ceph
运维小文8 天前
ceph的集群管理
ceph·对象存储·存储·ceph集群管理·ceph节点管理
石兴稳9 天前
iSCSI 和SCSI的概述
ceph