Ceph的LTS
版本是Nautilus
,它在2019年发布。
Ceph 是一个分布式存储系统,由多个组件构成,主要包括以下几个组件:
Monitor:
OSD
MDS
Object
PG
放置组
。RADOS
Libradio
CRUSH
RBD
RGW
CephFS
需要注意的是,Ceph 的每个组件都可以运行在多台服务器上形成一个分布式集群,以实现高可用性和数据冗余等特性。此外,Ceph 还支持多种存储后端,包括 FileStore
和 Bluestore
两种主要类型,以便为不同的应用场景提供更好的性能和容错能力。
服务名 | 端口号 | 描述 |
---|---|---|
Monitor | 6789/tcp | 与Ceph集群通信 |
Monitor | 3300/tcp | |
MGR | 7000/tcp | Ceph管理面板 |
MGR | 8003/tcp | Ceph Restful API管理 with HTTPS |
MGR | 9283/tcp | Prometheus插件通信接口 |
OSD | 6800-7300/tcp | 每个OSD在这个范围内使用3个端口,一个用来与客户端和监视器进行通信,一个用来与集群中其他的OSD进行通信,最后一个用来在集群中发送心跳包 |
RADOS 网关 | 7480/tcp | 默认RADOS网管端口为7480,你可以修改为80/443(如果使用TLS) |
8443 | Dashboard |
# 放通Monitor节点3300TCP端口、6789TCP端口
firewall-cmd --zone=public --add-port=3300/tcp --permanent
firewall-cmd --zone=public --add-port=6789/tcp --permanent
# 放通OSD节点6800-7300TCP端口
firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent
# 放行Dashboard
firewall-cmd --zone=public --add-port=8443/tcp --permanent
# 放行Prometheus插件通信接口
firewall-cmd --zone=public --add-port=9283/tcp --permanent
# 重载firewall--使以上配置生效
firewall-cmd --reload
# 查看防火墙规则
firewall-cmd --list-all
易于上手、使用简单,并且支持快速安装和配置 Ceph 集群的各个组件。
已被ceph官方弃用
。
https://docs.ceph.com/en/latest/install/
https://docs.ceph.com/en/latest/install/
Cephadm
安装和管理 Ceph 集群,该集群使用容器
和 systemd
,并与 CLI 和仪表板 GUI 紧密集成。
cephadm
仅支持 Octopus
和更新版本。
cephadm
与编排 API 完全集成,并完全支持用于管理集群部署的 CLI 和仪表板功能。
cephadm
需要容器
支持(以 Podman 或 Docker 的形式)和 Python3
。
它将 Ceph 存储作为 Kubernetes
的一部分集成到容器编排中,使得在 Kubernetes
上部署和管理 Ceph 集群变得更加容易。
提供了一系列高级特性和自动化功能,例如负载均衡
、故障转移
、备份
和恢复
等,能够帮助您更好地管理和维护 Ceph 集群。
对于 Ceph 集群的规划,需要考虑以下几个方面:
总之,Ceph 集群的规划需要根据实际需求进行综合考虑和权衡,确保集群的可用性、可扩展性和安全性。
https://access.redhat.com/documentation/zh-cn/red_hat_ceph_storage/4/pdf/installation_guide/red_hat_ceph_storage-4-installation_guide-zh-cn.pdf
参考: https://www.ethanzhang.xyz/ceph%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97%E5%8F%8A%E5%9C%A8openshift%E7%9A%84%E5%BA%94%E7%94%A8/#22-%E5%AE%89%E8%A3%85%E4%BA%8B%E5%AE%9C%E4%BA%8B%E9%A1%B9
角色 | 主机名 | Public IP | 集群IP | 额外磁盘 | 备注 |
---|---|---|---|---|---|
mon,mgr,osd | node1 | ceph-mgr不是必须的 | |||
mon,osd | node2 | OSB至少需要2台 | |||
mon,mgr,osd | node3 | MON至少需要3台 |
在初始化节点(node1)
上执行
# 安装 Ceph 存储库:
dnf install -y https://download.ceph.com/rpm-octopus/el8/noarch/ceph-release-1-1.el8.noarch.rpm
# 更新软件包索引:
dnf update -y
# 安装 Ceph:
dnf install -y ceph
# 安装ceph部署工具
yum install -y python-setuptools ceph-deploy
# 安装ceph组件
dnf install -y ceph-mon ceph-osd
在node1
执行。
# 创建一个新的 Ceph 集群目录,并进入该目录
mkdir cephcluster
cd cephcluster/
在node1
执行。
# 清除远程主机/var/lib/ceph /etc/ceph中的包和数据
ceph-deploy uninstall node1 node2 node3
# 清除/var/lib/ceph及/etc/ceph下ceph目录及以下内容全部
ceph-deploy purge node1 node2 node3
# 清除my-cluster目录中的认证密钥文件
ceph-deploy purgedata node1 node2 node3
# 从本地目录中删除身份验证密钥。
ceph-deploy forgetkeys
在node1
执行。
在当前目录中创建一个新的 Ceph 配置文件,例如 ceph.conf
:
这里的 node1、node2、node3 是集群中的节点名称,根据实际情况进行替换。
# 向Ceph存储集群中添加三个新节点
## new 新建一个 Ceph 集群
## node1 node2 node3 要添加到集群中的新节点名称
ceph-deploy new node1 node2 node3
# 必须参数
## --cluster-network就是私网(存储网)的网络地址,非主机地址
## --public-network是外网的网络地址
## node1是本机的主机名
ceph-deploy new --cluster-network 192.168.1.0/24 --public-network 172.18.2.3/24 node1
执行完该名了会创建ceph.mon.keyring
和ceph.conf
ceph.mon.keyring
是ceph的通信密钥文件。
[global]
# 集群的唯一ID,该值在集群内所有节点上必须保持一致。
fsid =
# 初始监视器节点的逗号分隔列表,监视器节点用于管理集群。
mon_initial_members =
# 一个逗号分隔的主机名或IP地址列表,表示可以找到监视器节点的位置。如果未定义 "mon_initial_members" 参数,则使用此参数来发现初始监视器节点。
mon_host =
# 集群守护程序之间通信所需的身份验证协议,默认为 cephx。
auth_cluster_required = cephx
# 客户端与集群服务之间通信所需的身份验证协议,默认为 cephx。
auth_service_required = cephx
# 客户端连接到集群所需的身份验证协议,默认为 cephx。
auth_client_required = cephx
# Ceph客户端连接的网络,一般三方监控也是监控这个地址
public_network = 172.18.2.0/24
# 私网(存储网)的网络地址,非主机地址
cluster_network = 192.168.1.0/24
在node1
执行。
# 为指定node 安装指定版本的ceph
## --release 参数指定要安装的 Ceph 版本是 nautilus。
## --no-adjust-repos 在不修改源代码库的情况下安装包
## Ceph的LTS版本是Nautilus,它在2019年发布
ceph-deploy install --release nautilus node1 node2 node3 --no-adjust-repos
在node1
执行。
使用 ceph-deploy 工具将 MON 节点添加到 Ceph 集群中。
这个命令只是创建了单个监视器节点
,高可用和高容错集群,建议至少三个
监视器节点,并使用quorum
来确保在其中一个节点故障时仍然能够继续运行。
在部署节点上为新的 MON 节点生成配置文件并推送到集群中,会在所有 MON 节点上安装 ceph-mon 软件包。
# 监控节点初始化
# 创建初始的监视器(Monitor)节点
ceph-deploy mon create-initial
ceph.conf
和密钥环(keyring)文件 ceph.client.admin.keyring
。初始监视器节点
,并将其添加到集群中。OSD
节点加入集群所需的命令。# 查看ceph集群健康状态
ceph health
# 或
ceph -s
# 将节点(node1、node2 和 node3)指定为Ceph管理员
## 会将/etc/ceph/ceph.client.admin.keyring密钥环文件分发给这3台机器
ceph-deploy admin node1 node2 node3
会将集群配置文件 ceph.conf
和密钥环(keyring)文件 ceph.client.admin.keyring
拷贝到各节点
的/etc/ceph/
目录下。
# 部署mgr角色
ceph-deploy mgr create node1
# 查看ceph状态,可以看到mgr在node1上
ceph -s
在node1
执行。
在具有足够硬件资源和磁盘空间的机器上设置 Ceph 存储节点。可以使用以下命令在其中一个节点上初始化 Ceph 存储集群:
在 所有OSD 节点上创建一个用于存储数据的分区,并将其格式化为 XFS 文件系统:
# 创建一个新的 GPT(GUID 分区表)标签的分区表
parted /dev/sdb mklabel gpt
# 为/dev/sdb创建1个新的主分区,XFS,使用所有可用空间
## -1 表示使用整个可用空间作为分区的结束位置
parted /dev/sdb mkpart primary xfs 1 -1
# 格式化为xfs
mkfs.xfs /dev/sdb1
在 OSD 节点上使用 ceph-deploy 工具添加 OSD:
这里的 node1 是 OSD 节点名称,/dev/sdb1 是用于存储数据的分区。
# 创建 OSD(Object Storage Daemon)节点
ceph-deploy osd create <node_name>:<partition_path>
# 如果多台机器上的磁盘路径不一致
ceph-deploy osd create node1:/dev/sdb node2:/dev/sdc node3:/dev/sdd
## 指定多个磁盘来创建多个OSD节点
ceph-deploy osd create node1 --data /dev/sdb,/dev/sdc
ceph-deploy osd create node2 --data /dev/sdb,/dev/sdc
ceph-deploy osd create node3 --data /dev/sdb,/dev/sdc
# 检查Ceph存储群集的状态
ceph -s
# 显示 Ceph 存储集群的 OSD 树形图
## 该命令会列出所有 OSD 的 ID、所在节点、状态以及其它相关信息,并将它们按照拓扑结构组织成一棵树。
ceph osd tree
# 检查OSD的状态
ceph osd status
# 将 node2 和 node3 节点添加到 Ceph 存储集群中作为监视器(MON)
ceph-deploy mon add node2 node3
# 显示当前 Ceph 存储集群中监视器(MON)的状态信息
ceph mon stat
# 显示 Ceph 存储集群中所有监视器(MON)的详细信息
ceph mon dump
非必需执行
从 Ceph Nautilus
版本开始,不再需要手动创建 MGR
,而是默认情况下自动启用。Nautilus
及以上版本可以忽略该命令。
# 将 node2 和 node3 节点添加到 Ceph 存储集群中作为Ceph管理节器(MGR)
ceph-deploy mgr create node2 node3
# 检查Ceph存储群集的状态
ceph -s
如果用 ceph-deploy
工具来部署cpeh。可能需要在ceph集群所有机器上创建一个名为 ceph-deploy
的用户,并将其添加到 sudoers
文件中。
# 创建eph-deploy用户
sudo useradd -m ceph-deploy
# 为eph-deploy用户设置密码
sudo passwd ceph-deploy
# 将eph-deploy用户添加到wheel管理员组
sudo usermod -aG wheel ceph-deploy
# 为eph-deploy用户配置sudo提权
echo "ceph-deploy ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph-deploy
# 权限设置为0440
sudo chmod 0440 /etc/sudoers.d/ceph-deploy