Ceph介绍
Ceph是一个开源的分布式存储系统,具有高扩展性、高性能、高可靠性等特点,提供良好的性能、可靠性和可扩展性。支持对象存储、块存储和文件系统。
是目前为云平台提供存储的理想方案。
Ceph架构
- RBD(RADOS Block Device):块存储接口,可以被挂载到客户端系统作为本地块设备使用,支持动态调整大小、快照、克隆等功能
- RGW(RADOS Gateway)):对象存储网关,接口与S3和Swift兼容
- CephFS(Ceph File System):文件级存储接口
- RADOS(Reliable Autonomic Distributed Object Store):Ceph核心,负责提供分布式对象存储服务,抽象的对象存储集群,实现用户数据分配、故障转移等集群操作
- MON:Monitor 是 Ceph 集群的监控节点,负责监视集群状态,集群状态维护,例如OSD是否健康、PG状态等。通常以奇数个部署,保证集群的高可用性
- MDS(Metadata Server):CephFS服务依赖的元数据服务
- OSD(Object Storage Daemon):存储节点,负责存储实际的数据对象
Ceph核心概念
- Pool:存储池,是存储对象的逻辑分区,它规定了数据冗余的类型和对应的副本分布策略;支持两种类型:副本(replicated)和纠删码(Erasure Code)
- PG(placement group):放置策略组,对象的集合,该集合里的所有对象都具有相同的放置策略;简单点说就是相同PG内的对象都会放到相同的硬盘上;PG是ceph的核心概念,服务端数据均衡和恢复的最小粒度;引入PG这一层其实是为了更好的分配数据和定位数据。
它们之间的关系:
- Pool 里面包含了 objects
- PG 里面包含了所有在 Pool 里面的一群 objects (一个 PG有多个 object)
- 一个 object 只会属于一个 PG
- 一个 PG 可以对应到多个 OSD
部署Ceph集群
Ceph版本选择
Ceph目前最新版本16(P版),市面上应用最广泛的是12(L版)
参考:https://docs.ceph.com/en/latest/releases/
版本名称 | 版本号 | 发布时间 |
Pacific | 16.2.4 | 2021-03-31 |
Octopus | 15.2.12 | 2020-03-23 |
Nautilus | 14.2.21 | 2019-03-19 |
Mimic | 13.2.10 | 2018-06-01 |
Luminous | 12.2.13 | 2017-08-01 |
Kraken | 11.2.1 | 2017-01-01 |
Jewel | 10.2.11 | 2016-04-01 |
Infernalis | 9.2.1 | 2015-11-01 |
Hammer | 0.94.10 | 2015-04-01 |
Giant | 0.87.2 | 2014-10-01 |
Firefly | 0.80.11 | 2014-05-01 |
Emperor | 0.72.2 | 2013-11-01 |
Dumpling | 0.67.11 | 2013-08-01 |
服务器配置建议
网卡建议千兆网卡
ethtool ens33
测试环境 | 3台 | 2核CPU/2G内存 | 1块独立50G数据盘 |
生产环境 | 3台 | 8核CPU/16G内存 | 2块独立1T数据盘 |
Ceph集群部署规划
- ceph-deploy:ceph集群部署节点,负责集群整体部署,这里复用node1节点,也可以单独找一台服务器作为部署节点。
- monitor:Ceph监视管理节点,承担Ceph集群重要的管理任务,负责集群状态维护,例如存储池副本数、PG状态、OSD数量等,至少部署1个,一般需要3或5个节点组建高可用。
- osd:Ceph存储节点,实际负责数据存储的节点,集群中至少有3个OSD,不少于默认副本数,每个OSD对应一块硬盘。
操作系统初始化配置
主机名 | 操作系统 | 内网IP | 硬盘 | 角色 |
ceph-node01 | centos7.5 | 192.168.1.13 | 系统盘:sda osd盘:sdb | ceph-deploy mon*1、osd*1 |
ceph-node02 | centos7.5 | 192.168.1.14 | 系统盘:sda osd盘:sdb | mon*1、osd*1 |
ceph-node03 | centos7.5 | 192.168.1.15 | 系统盘:sda osd盘:sdb | mon*1、osd*1 |
Ceph集群部署
操作系统初始化
所有节点部署:
========================================================================
# 关闭防火墙(如果有安全策略需求需要开放monitor:6789端口 OSD:6800-7300端口)
systemctl stop firewalld
systemctl disable firewalld
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久,重启生效
setenforce 0 # 临时
# 关闭swap
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久,重启生效
# 根据规划设置主机名
hostnamectl set-hostname <hostname>
# 在node添加hosts
cat >> /etc/hosts << EOF
192.168.1.13 ceph-node01
192.168.1.14 ceph-node02
192.168.1.15 ceph-node03
EOF
# 设置文件描述符
ulimit -SHn 102400
cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 65535
EOF
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com
ceph-deploy节点部署:
========================================================================
# 配置SSH免交互认证
ssh-keygen -t rsa
ssh-copy-id root@ceph-node01
ssh-copy-id root@ceph-node02
ssh-copy-id root@ceph-node03
Ceph集群部署方式:
官网参考:https://docs.ceph.com/en/pacific/install/
yum:常规的部署方式(为了更好的理解ceph集群的部署过程,先尝试Nautilus版本之前)
ceph-ansible:官方基于ansible写的自动化部署工具:https://docs.ceph.com/projects/ceph-ansible/en/latest/
ceph-deploy:ceph提供的简易部署工具,可以非常方便部署ceph集群。(推荐):https://docs.ceph.com/projects/ceph-deploy/en/latest/
Ceph集群部署步骤:
建议先把镜像源修改为国内阿里镜像源:
https://mirrors.aliyun.com/repo/
1、配置阿里云yum仓库
cat > /etc/yum.repos.d/ceph.repo << EOF
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-octopus/el7/\$basearch
gpgcheck=0
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch
gpgcheck=0
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-octopus/el7/SRPMS
gpgcheck=0
EOF
# 注:如果部署别的版本,将octopus替换为对应版本号即可。
2、安装ceph-deploy工具
yum update -y
# 安装Python pkg_resources模块
yum -y install python2-pip.noarch
pip install ceph-deploy==2.0.1
3、创建集群
# 创建一个Ceph集群:
ceph-deploy new ceph-node01 ceph-node02 ceph-node03
4、安装Ceph
# 安装Ceph包到指定节点:
ceph-deploy install --no-adjust-repos ceph-node01 ceph-node02 ceph-node03
# 注:–no-adjust-repos参数是直接使用本地源,不使用官方默认源。
5、部署Monitor服务
# 初始化并部署monitor,收集所有密钥:
ceph-deploy mon create-initial
# 使用ceph-deploy命令将配置文件和admin key复制到管理节点和Ceph节点,以便每次执行ceph CLI命令无需指定monitor地址和ceph.client.admin.keyring。
ceph-deploy admin ceph-node01 ceph-node02 ceph-node03
上述步骤结果如下:
6、部署OSD服务并添加硬盘
# 创建3个OSD,分别对应每个节点未使用的硬盘:
ceph-deploy osd create --data /dev/sdb ceph-node01
ceph-deploy osd create --data /dev/sdb ceph-node02
ceph-deploy osd create --data /dev/sdb ceph-node03
7、部署MGR服务
ceph-deploy mgr create ceph-node01 ceph-node02 ceph-node03
# 注:MGR是Ceph L版本新增加的组件,主要作用是分担和扩展monitor的部分功能,减轻monitor的负担。建议每台monitor节点都部署一个mgr,以实现相同级别的高可用。
查看Ceph集群状态:
ceph -s
查看状态:
解决一些warn安全漏洞:
# mons are allowing insecure global_id reclaim
# 解决方案:禁用不安全模式(处理后有延迟,需等待):
ceph config set mon auth_allow_insecure_global_id_reclaim false
# Module 'restful' has failed dependency: No module named 'pecan'
# 解决方案:在所有节点执行命令之后重启monitor服务
pip3 install pecan werkzeug
systemctl restart ceph.target
解决相应问题后health为OK:
查看Ceph版本:
ceph -v
Ceph集群的服务管理
# 1、启动所有守护进程
# systemctl restart ceph.target
# 2、按类型启动守护进程
# systemctl restart ceph-osd@id
# systemctl restart ceph-mon.target
# systemctl restart ceph-mds.target
# systemctl restart ceph-mgr.target
# systemctl restart ceph-radosgw.target
Ceph集群常用管理命令
主机名 | 命令 |
PG状态 | ceph pg stat |
Pool状态 | ceph osd pool ls # 查看存储池 ceph osd pool ls detail |
OSD状态 | ceph osd stat ceph osd dump # OSD详情 ceph osd tree # OSD分布 ceph osd df #OSD使用 |
Monitor状态 | ceph mon stat ceph quorum_status #仲裁状态 |
集群空间用量 | ceph df |
发布者:LJH,转发请注明出处:https://www.ljh.cool/40548.html