文章目录
- 一、部署前说明
- 1. ceph 版本选择依据
- 2. ceph网络要求
- 3. 硬件要求
- 二、部署架构
- 三、部署过程
- 1. 通用步骤
- 2. 部署管理节点
- 创建账号
- 安装Cephadm
- 运行bootstrap
- 3. 登录Ceph web
- 4. 将其他节点加入集群
- 同步ceph key
- 安装ceph CLI命令行
- 添加主机节点到集群
- 添加OSD节点
- 将监控节点添加到集群
- 监控配置
- 四、查看集群状态
一、部署前说明
本文采用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
apt install docker.io
2. 部署管理节点
这里的管理节点也是部署节点 node-03
创建账号
在部署节点添加ceph用户
useradd -d /home/ceph_user -m ceph_user
passwd ceph_user
安装Cephadm
在部署节点安装Cephadm。cephadm是官方推荐的ceph集群部署工具。
选项一:
apt install -y cephadm
该步骤执行后,直接开始bootstrap安装环节。
选项一:这种安装方式不一定是最新版本ceph,故提供另一种安装方式
选项二(本文档采用):
# 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上运行:
方式一:
# 指定第一台 监控主机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
文件并 写入以下配置(刷配置时需要删除注释):
[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:
cephadm bootstrap --config /etc/ceph/initial-ceph.conf --mon-ip 172.16.250.248
输出如下:
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
此外:该命令会有如下输出,主要涉及用户名和密码:
URL: https://ceph_mon_01:8443/
User: admin
Password: kjephbnn09
3. 登录Ceph web
首次登录会要求修改密码。
4. 将其他节点加入集群
同步ceph key
在部署节点逐一对复制到集群所有节点,举例复制到osd01,如下:
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
cephadm install ceph-common
添加主机节点到集群
在部署节点node-03 执行以下命令用于添加其他节点到集群:
ceph orch host add node-01
ceph orch host add node-02
添加OSD节点
作为OSD存储的磁盘必须满足以下条件:
- 该设备不能有分区。
- 该设备不能有任何 LVM 状态。
- 不得挂载该设备。
- 该设备不得包含文件系统。
- 该设备不得包含 Ceph BlueStore OSD。
- 该设备必须大于 5 GB。
在部署节点执行以下命令用于自动发现并上线OSD:
# 自动发现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未成功加入,可对目标磁盘做以下操作:
# 重置磁盘
parted /dev/sda mklabel gpt
# 新建分区(若要将分区作为OSD)
sudo mkfs.ext4 /dev/sdc1
# 初始化分区(硬盘)
wipefs -af /dev/sda
若磁盘被其他ceph占用,解决方案如下:
dmsetup ls
dmsetup remove ceph
将监控节点添加到集群
ceph orch daemon add mon node-01
ceph orch daemon add mgr node-01
添加管理节点lable,指定Managers进程节点:
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
# 限制监控主机仅在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 mgrTo 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 查看。
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