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
相关推荐
終不似少年遊*3 天前
云计算HCIP-OpenStack01
云原生·云计算·学习笔记·openstack·hcip·虚拟化
終不似少年遊*7 天前
云计算HCIP-OpenStack03
linux·网络·云原生·云计算·学习笔记·openstack·hcip
終不似少年遊*7 天前
云计算HCIP-OpenStack02
云原生·云计算·学习笔记·openstack·hcip
終不似少年遊*7 天前
云计算HCIP-OpenStack04
云原生·云计算·学习笔记·openstack·hcip·虚拟化
終不似少年遊*8 天前
华为云(openstack)常用命令行
linux·服务器·网络·华为云·云计算·操作系统·openstack
学Linux的语莫10 天前
负载均衡,高可用,监控服务搭建总结
linux·服务器·分布式·ceph·lvs
运维小文10 天前
cephFS的使用以及K8S对接cephFS
ceph·云原生·容器·kubernetes·对象存储·cephfs
学Linux的语莫13 天前
ceph集群搭建,ceph块存储,文件存储,对象存储
linux·服务器·分布式·ceph
Rverdoser13 天前
K8S对接ceph的RBD块存储
ceph·容器·kubernetes
ZVAyIVqt0UFji15 天前
openstack内部rpc消息通信源码分析
网络·网络协议·rpc·openstack