Ceph是一个分布式存储系统,能够在统一架构下提供对象、块和文件存储服务。其主要组件包括:
- Ceph监视器(ceph-mon)
负责维护集群状态映射,如监视器映射、管理器映射、OSD映射、MDS映射和CRUSH 映射,这些映射是 Ceph 守护程序协同工作的关键。同时,它还承担客户端到Ceph存储的身份验证职责。为实现高可用性,通常需部署3个或更多的ceph-mon服务。 - Ceph 管理器(ceph – mgr)
ceph – mgr 守护进程用于跟踪运行时指标和集群当前状态,如存储利用率、性能指标及系统负载等。此外,它还托管一些 Python 模块,以实现基于 Web 的 Ceph 仪表盘和 REST API。实现高可用至少需要2个ceph-mgr进程,且通常与ceph-mon数量相同,每个ceph-mon所在节点会伴随一个ceph-mgr守护进程。 - Ceph 对象存储(ceph-osd)
ceph-osd作为对象存储守护程序,是数据存储的核心组件,负责数据的存储、复制、恢复及重新平衡,并通过检查其他ceph-osd守护程序的心跳,向ceph-mon和ceph-mgr提供监控信息。为实现冗余和高可用性,通常至少需要3个 ceph-osd,且部署时应与ceph-mon分开节点。 - Ceph元数据服务(ceph-mds)
ceph-mds为Ceph文件系统存储元数据,Ceph块设备和对象存储无需使用mds存储元数据。它允许POSIX文件系统用户执行基本命令,避免将压力集中在Ceph OSD集群上。通常建议部署至少2个mds节点,可与其他组件共置或分开部署。
解决方案
(一)环境准备
1.配置 yum源(使用阿里源)
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
2.配置时间同步
# 下载chrony服务 yum install chrony vim -y # 编辑配置文件 [root@master ~]# vim /etc/chrony.conf server ntp.aliyun.com iburst # 重启服务 [root@master ~]# systemctl restart chronyd # 将时间写入磁盘 [root@master ~]# hwclock -s
3.配置主机名
hostnamectl set-hostname master hostnamectl set-hostname node1 hostnamectl set-hostname node2
4.配置免密码登录
[root@master data]# ssh-keygen -t rsa [root@master data]# ssh-copy - id master [root@master data]# ssh-copy - id node1 [root@master data]# ssh-copy - id node2
5.关闭防火墙和selinux
systemctl stop firewalld systemctl disable firewalld [root@master ~]# setenforce 0
6.配置Ceph源
# 安装ceph软件包相关依赖 yum install yum-plugin-priorities # 确认优先级插件安装成功 cat /etc/yum/pluginconf.d/priorities.conf # 安装Ceph密钥 rpm --import 'https://download.ceph.com/keys/release.asc' # 安装elep-release仓库及其他包 yum install epel-release yum install snappy leveldb gdisk gperftools-libs # 配置Ceph源 vim /etc/yum.repos.d/ceph-yum.repo [ceph] name = ceph baseurl = https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/ gpgcheck = 0 priority = 1 enable = 1 [ceph - noarch] name = cephnoarch baseurl = https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/ gpgcheck = 0 priority = 1 enable = 1 [ceph - source] name = Ceph source packages baseurl = https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS/ gpgcheck = 0 priority = 1 enable = 1
(二)管理节点master安装
1.安装cepth-deploy及相关软件包
[root@master yum.repos.d]# yum install python-setuptools ceph-deploy -y # 安装成功后检查ceph - deploy命令可用性 [root@master yum.repos.d]# ceph-deploy --version 1.5.25
2.在存储节点安装ceph
# 安装所需工具集 sudo yum install epel-release -y sudo yum install liboath lttng-ust leveldb python2-bcrypt python2-pecan yum install ceph ceph-radosgw -y
3.创建集群
[root@master data]# mkdir /data [root@master data]# cd /data [root@master data]# ceph-deploy new master node1 node2 # 查看Ceph版本号 [root@master data]# ceph --version ceph version 14.2.22 (ca74598065096e6fcbd8433c8779a2be0c889351) nautilus (stable) # 备注:ceph - deploy new后接要初始化为monitor的节点
(三)安装monitor服务
1.修改ceph配置文件
将 ceph.conf 配置文件中默认副本数从 3 改为 2,在 [global] 段加入 “osd_pool_default_size = 2”,使仅有 2 个 osd 时也能达到 active + clean 状态。
[root@master data]# vim ceph.conf [global] fsid = c3fce3e9-8710-4537-8329-5e60ca4d31ac # Ceph集群唯一标识符 mon_initial_members = master, node1, node2 # 初始监视器节点列表 mon_host = 192.168.1.11,192.168.1.12,192.168.1.13 # 监视器节点IP地址或主机名列表 auth_cluster_required = cephx # 集群组件间身份验证机制 auth_service_required = cephx # 服务间身份验证机制 auth_client_required = cephx # 客户端与集群身份验证机制 filestore_xattr_use_omap = true # 配置OSD使用OMAP存储扩展属性 osd_pool_default_size = 2 # 创建新存储池时的默认副本数 mon_clock_drift_allowed = 0.500 # 监视器节点间允许的最大时钟偏差量
2.安装monitor并收集秘钥
[root@master data]# ceph-deploy mon create - initial [root@master data]# ll *.keyring ceph.bootstrap-mds.keyring # 引导MDS的密钥 ceph.bootstrap-mgr.keyring # 引导Mgr的密钥 ceph.bootstrap-osd.keyring # 引导OSD的密钥 ceph.bootstrap-rgw.keyring # 引导RGW的密钥 ceph.client.admin.keyring # Ceph管理员客户端密钥 ceph.mon.keyring # 引导和管理监视器通信的密钥
这些密钥文件在 ceph 集群启动和管理中至关重要,用于组件引导和授权,确保集群通信和访问控制安全,需严格保护。
3.部署osd服务
使用ceph-deploy工具在每个节点创建OSD,以/dev/sdb设备为例。
# master节点 [root@master data]# ceph-deploy osd create --data /dev/sdb master # node1节点 [root@master data]# ceph-deploy osd create --data /dev/sdb node1 # node2节点 [root@master data]# ceph-deploy osd create --data /dev/sdb node2 # 查看OSD状态 [root@master data]# ceph-deploy osd list master node1 node2
4.创建ceph文件系统
[root@master data]# ceph-deploy mds create master node1 node2 # 查看ceph当前文件系统 [root@master data]# ceph fs ls
若输出提示无文件系统或因配置文件位置问题报错,可通过以下方式解决:
export CEPH_CONF=/data/ceph.conf export CEPH_CLIENT_ADMIN_KEYRING=/data/ceph.client.admin.keyring # 或直接指定配置文件 [root@master data]# ceph --conf=/data/ceph.conf --keyring=/data/ceph.client.admin.keyring fs ls # 或复制配置文件到默认位置 [root@master data]# cp -rp./* /etc/ceph/
5.创建存储池
[root@master data]# ceph osd pool create cephfs_data 8 pool 'cephfs_data' created [root@master data]# ceph osd pool create cephfs_metadata 8 pool 'cephfs_metadata' created
此命令创建名为cephfs_data和cephfs_metadata的存储池,每个存储池设置8个pg。pg_num取值需根据OSD数量确定,常用规则如下:
- 少于 5 个 OSD 时,pg_num 设置为 128。
- OSD 数量在 5 到 10 个时,pg_num 设置为 512。
- OSD 数量在 10 到 50 个时,pg_num 设置为 4096。
- OSD 数量大于 50 时,需理解权衡方法并自行计算 pg_num 取值,可借助 pgcalc 工具。pg_num 取值对集群行为和数据持久性影响显著。
6.创建文件系统
[root@master data]# ceph fs new liangxi cephfs_metadata cephfs_data new fs with metadata pool 2 and data pool 1 [root@master data]# ceph fs ls name: liangxi, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
7.部署mgr
[root@master data]# ceph-deploy mgr create master node1 node2 # 查看集群状态 [root@master data]# ceph -s
若集群状态出现警告,如 “mons are allowing insecure global_id reclaim”,可通过以下命令解决:
ceph config set mon auth_allow_insecure_global_id_reclaim false
若出现 “too many PGs per OSD (320> max 300)” 警告,可在配置文件中加入:
mon_pg_warn_max_per_osd = 1000
然后重启守护进程:
systemctl restart ceph - mon.target
再次查看状态,确保集群健康:
[root@master data]# ceph - s
8.查看ceph守护进程状态
[root@master data]# systemctl status ceph - osd.target
原创文章,作者:运维侠,如若转载,请注明出处:https://www.yunweixia.com/knowledgebase/ceph-distributed-storage-deployment-guide-environment-to-install.html