01-Ceph概述和部署

Ceph介绍

01-Ceph概述和部署

Ceph是一个开源的分布式存储系统,具有高扩展性、高性能、高可靠性等特点,提供良好的性能、可靠性和可扩展性。支持对象存储、块存储和文件系统。

是目前为云平台提供存储的理想方案。

Ceph架构

01-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这一层其实是为了更好的分配数据和定位数据。
01-Ceph概述和部署
01-Ceph概述和部署
01-Ceph概述和部署

它们之间的关系:

  • 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/

版本名称版本号发布时间
Pacific16.2.42021-03-31
Octopus15.2.122020-03-23
Nautilus14.2.212019-03-19
Mimic13.2.102018-06-01
Luminous12.2.132017-08-01
Kraken11.2.12017-01-01
Jewel10.2.112016-04-01
Infernalis9.2.12015-11-01
Hammer0.94.102015-04-01
Giant0.87.22014-10-01
Firefly0.80.112014-05-01
Emperor0.72.22013-11-01
Dumpling0.67.112013-08-01

服务器配置建议

网卡建议千兆网卡

ethtool ens33

01-Ceph概述和部署
测试环境3台2核CPU/2G内存1块独立50G数据盘
生产环境3台8核CPU/16G内存2块独立1T数据盘

Ceph集群部署规划

01-Ceph概述和部署
  • ceph-deploy:ceph集群部署节点,负责集群整体部署,这里复用node1节点,也可以单独找一台服务器作为部署节点。
  • monitor:Ceph监视管理节点,承担Ceph集群重要的管理任务,负责集群状态维护,例如存储池副本数、PG状态、OSD数量等,至少部署1个,一般需要3或5个节点组建高可用。
  • osd:Ceph存储节点,实际负责数据存储的节点,集群中至少有3个OSD,不少于默认副本数,每个OSD对应一块硬盘。

操作系统初始化配置

主机名操作系统内网IP硬盘角色
ceph-node01centos7.5192.168.1.13系统盘:sda osd盘:sdbceph-deploy mon*1、osd*1
ceph-node02centos7.5192.168.1.14系统盘:sda osd盘:sdbmon*1、osd*1
ceph-node03centos7.5192.168.1.15系统盘:sda osd盘:sdbmon*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/

01-Ceph概述和部署

yum常规的部署方式(为了更好的理解ceph集群的部署过程,先尝试Nautilus版本之前)

ceph-ansible官方基于ansible写的自动化部署工具:https://docs.ceph.com/projects/ceph-ansible/en/latest/

ceph-deployceph提供的简易部署工具,可以非常方便部署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
01-Ceph概述和部署

4、安装Ceph

# 安装Ceph包到指定节点:
ceph-deploy install --no-adjust-repos ceph-node01 ceph-node02 ceph-node03
# 注:–no-adjust-repos参数是直接使用本地源,不使用官方默认源。
01-Ceph概述和部署

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

上述步骤结果如下:

01-Ceph概述和部署
01-Ceph概述和部署

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
01-Ceph概述和部署

7、部署MGR服务

ceph-deploy mgr create ceph-node01 ceph-node02 ceph-node03
# 注:MGR是Ceph L版本新增加的组件,主要作用是分担和扩展monitor的部分功能,减轻monitor的负担。建议每台monitor节点都部署一个mgr,以实现相同级别的高可用。
01-Ceph概述和部署

查看Ceph集群状态:

ceph -s

查看状态:

01-Ceph概述和部署

解决一些warn安全漏洞:

01-Ceph概述和部署
# 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:

01-Ceph概述和部署

查看Ceph版本:

ceph -v
01-Ceph概述和部署

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

(0)
上一篇 2024年2月2日 下午4:49
下一篇 2024年2月3日 下午11:50

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注