第一课 Ceph基础学习-Ceph集群部署和基本使用

本文详细介绍了Ceph的基础知识,包括存储类型(DAS、NAS、SAN、对象存储)以及Ceph的存储架构。重点讲解了Ceph集群的部署,包括环境准备、部署monitor、OSD和manager的高可用性。此外,还阐述了Ceph的块存储、对象存储(RGW)和文件存储(CephFS)的使用方法,包括创建资源池、RBD的扩容和CephFS的部署与挂载。
摘要由CSDN通过智能技术生成

第一课 Ceph基础学习-Ceph集群部署和基本使用

第一节 存储类型介绍

1.1 DAS介绍

  1. DAS:Direct Attached Storage直接附加存储。
  2. 方式:服务器使用SCS或FC协议连接到存储阵列。
  3. 协议类型
    • SCS总线
    • FC光纤
  4. 表现形式:一块有空间大小裸磁盘如/dev/sdb
  5. 优点: 组网简单。成本低廉,第一代
  6. 缺点: 可扩展性有限,不灵活。无法多机共享
  7. 产品举例: 目前很少使用了

1.2 NAS介绍

  1. NAS: Network Attachod Storage网络附加存储
  2. 方式: 服务器使用TCP网络协议连接至文件共享存储
  3. 协议关型 NFS CIFS
  4. 表现形式 映射到存储中一个目录。如/data
  5. 优点:使用简单,通过IP协议实现互访,多机同时共享网个存储
  6. 缺点:性能有限,可靠性不高
  7. 产品举例
    • NFS、samba、GlusterFS存储厂商提供的NAS存储
    • 公有云: AWS EFS、腾讯云CFS、阿里云NAS

1.3 SAN介绍

  1. SAN概念: Storage Area Notwork 储存区域网络
  2. 方式:服务器使用一个存储区域网络IP或FC连接到存储阵列
  3. 协议类型
    • IP-SAN
    • FC-SAN
  4. 表现形式: 一块有空间大小裸磁盘如/dev/sdb
  5. 优点: 性能好,可扩展性强
  6. 缺点: 成本高,尤其是FC存储,需要HBA卡,FC交换机,FC存储
  7. 产品举例
    • isCSI,EMC,NetApp,HP等存储
    • 公有云: AWS EBS,腾讯云CBS,阿里云块存储

1.4 对象存储

  1. 概念:Objoct Storage对象存储 视屏、音频、文本不常修改的
  2. 方式:通过网络使用API访问一个无限扩展的分布式存储系统
  3. 协议类型
    • 兼容于S3风格
    • 原生PUT/GET类型
  4. 表现形式:无限使用的存储空间,通过PUT/GET无限上传和下载
  5. 优点:可扩展性强,使用简单,通过PUT和GET实现上传下载
  6. 缺点:只使用与静态不可编辑文件、无法提供为服务器提供块级别存储
  7. 产品举例
    • HDFS,FastDFS,swift
    • 公有云:Aws S3,腾讯云COS,阿里云OSS

第二节 Ceph的储存架构

2.1 Ceph的简介

  1. 官方文档:https://docs.ceph.com/
    在这里插入图片描述
  2. Ceph支持对象存储(视频图片等)、块存储(磁盘挂载)、文件存储(共享目录)。

2.2 Ceph的架构

在这里插入图片描述

  1. 对象存储通过RADOSGW进行存储 S3和Swift风格
  2. 块存储通过RBD 和云主机的QEMU和KVM driver对接
  3. 文件存储 CEPH FS通过内核级别的访问方式和SUSE级别的访问方式 进行存储
  4. 除了上面方式我们还可以通过原生的LIBRADOS库去访问我们的RADOS存储。RADOS是Ceph中最核心的东西。

2.3 Ceph的组件介绍

  1. 构成Ceph集群的基础组件,其中包含OSD、Manager、MSD、Monitor
  2. OSD(ceph-osd):object storage daemon,对象存储进程。ceph 管理物理硬盘时,引入了OSD概念,每一块盘都会针对的运行一个OSD进程。换句话说,ceph 集群通过管理 OSD 来管理物理硬盘。OSD 一般功能为:存储数据、维护数据副本、数据恢复、数据再平衡以及对ceph monitor组件提供相关监控信息.
  3. Manager(ceph-mgr):用于收集ceph集群状态、运行指标,比如存储利用率、当前性能指标和系统负载。对外提供 ceph dashboard(ceph ui)和 resetful api。Manager组件开启高可用时,至少2个。
  4. MDS(ceph-mds):Metadata server,元数据服务。为ceph文件系统提供元数据服务(ceph 对象存储和块存储不需要MDS)。为 posix 文件系统用户提供性能良好的基础命令(ls,find等)。
  5. Monitor(ceph-mon):维护集群的状态,包含monitor组件信息,manger 组件信息,osd组件信息,mds组件信息,crush 算法信息。还负责ceph集群的身份验证功能,client在连接ceph集群时通过此组件进行验证。Monitor组件开启高可用时,至少3个。

2.4 Ceph的数据写入流程

  1. 在对象存储中,一切都是扁平化的,并且存储的最小单元为对象(OBJ)。
  2. ceph 在对象存储的基础上提供了更加高级的思想。当对象数量达到了百万级以上,原生的对象存储在索引对象时消耗的性能非常大。ceph因此引入了 placement group (pg)的概念。一个PG就是一组对象的集合。
    在这里插入图片描述
  3. obj和pg之间的映射由ceph client计算得出。
  4. 讨论 pg 时,不得不提的另外一个名词:pgp。pgp决定了pg和osd 之间的映射关系。一般将 pgp_num 设置成和 pg_num 一样大小。这里还有一个名词需要提一下,在ceph中会经常见到crush算法。简单来说,crush 算法就是指 ceph 中数据如何存储、读取的过程。由于ceph集群面对许多的独立项目,因此ceph还引入了ceph pool的概念用于划分不同的项目。
  5. ceph pool 是对 ceph 对象的逻辑划分,并不是物理划分。
  6. pg和ceph pool的区别:
    • pg对于用户来说是透明的,只是底层的一种优化方案。
    • ceph pool对于用户来说,就像mysql中的database。

第三节 Ceph集群部署

3.1 Ceph环境准备

  1. 三台机器centos7.9
    | IP | 作用 |
    | :------------: | :----------------: |
    | 192.168.44.137 | ceph01、NTP Server |
    | 192.168.44.138 | ceph02 |
    | 192.168.44.139 | ceph03 |

  2. NTP服务器设置,同步时钟

# NTP SERVER (ntp server 与阿里与ntp时间服务器进行同步)
yum install -y ntp
systemctl start ntpd
systemctl enable ntpd
timedatectl set-timezone Asia/Shanghai
# 将当前的 UTC 时间写入硬件时钟
timedatectl set-local-rtc 0
# 重启依赖于系统时间的服务
systemctl restart rsyslog 
systemctl restart crond
# 这样我们的ntp server自动连接到外网,进行同步 (时间同步完成在IP前面会有一个*号)
ntpq -pn
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+193.182.111.143 194.58.204.20    2 u   43   64    1  245.826   -7.418  15.035
+119.28.183.184  100.122.36.196   2 u   40   64    1   46.883   -3.472   0.249
-178.215.228.24  36.224.68.195    2 u   39   64    1  231.376   23.300  14.977
*84.16.67.12     .GPS.            1 u   38   64    1  183.543   -0.667   0.299

# NTP Agent (ntp agent同步ntp server时间) 
yum install -y ntp
vim /etc/ntp.conf 
server  192.168.44.137  iburst

systemctl restart ntpd
systemctl enable ntpd
# 等待几分钟出现*号代表同步完成
ntpq -pn

# 各个节点上定时同步 节点添加定时同步任务
crontab -e
*/5 * * * *  /usr/sbin/ntpdate 192.168.44.137

# ntp时间服务器设置完成后在所有节点修改时区以及写入硬件
timedatectl set-timezone Asia/Shanghai
# 将当前的 UTC 时间写入硬件时钟
timedatectl set-local-rtc 0
# 重启依赖于系统时间的服务
systemctl restart rsyslog 
systemctl restart crond

# 查看时间是否一致
date
  1. 设置节点间的免密登录
# 添加host (所有节点)
cat >>/etc/hosts <<EOF
192.168.44.137 ceph-01
192.168.44.138 ceph-02
192.168.44.139 ceph-03
EOF

# ceph01 设置免密 123456为密码
ssh-keygen -t rsa -P "" -f /root/.ssh/id_rsa
for i in ceph-01 ceph-02 ceph-03 ;do
expect -c "
spawn ssh-copy-id -i /root/.ssh/id_rsa.pub root@$i
        expect {
                "*yes/no*" {send "yesr"; exp_continue}
                "*password*" {send "123456r"; exp_continue}
                "*Password*" {send "123456r";}
        } "
d
  1. 所有节点关闭防火墙selinux
systemctl stop firewalld
systemctl disable firewalld
iptables -F && iptables -X && iptables -F -t nat && iptables -X -t nat
iptables -P FORWARD ACCEPT
setenforce 0
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
  1. ceph yum源配置
#配置centos、epeo、ceph源
wget -O /etc/yum.repos.d/CentOS-Base-epel.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
wget -O /etc/yum.repos.d/ceph.repo http://down.i4t.com/ceph/ceph.repo
yum clean all
yum makecache
  1. 安装部署工具ceph-deploy
# ceph-01部署节点安装依赖包以及ceph部署工具ceph-deploy
yum install -y python-setuptools
yum install -y ceph-deploy
# 执行ceph-deploy可以看到ceph的版本
ceph-deploy

3.2 部署monitor

  1. 先运行单节点的monitor
# ceph创建一个配置目录,后面操作需要在这个目录下进行
mkdir -p /root/ceph-deploy
cd /root/ceph-deploy
# 创建monitor ceph-01代表部署monitor节点
ceph-deploy new ceph-01 --public-network 192.168.44.0/24
#参数设置
# --cluster-network 集群对外的网络
# --public-network 集群内通信的网络
#--public-network建议添加,否则后面添加monitor节点会提示错误
# 执行完毕后我们可以看到在/root/ceph-deploy目录会有为我们生成的一些文件
ls /root/ceph-deploy
# ceph.conf       ceph-deploy-ceph.log  ceph.mon.keyring
# ceph配置文件      ceph日志文件       keyring主要做身份验证
# 我们可以根据自身需要修改ceph.conf文件,比如上面创建集群中添加的网络,在这里也可以添加
# 添加ceph时间配置
# 添加允许ceph时间偏移
echo "mon clock drift allowed = 2" >>/root/ceph-deploy/ceph.conf
echo "mon clock drift warn backoff = 30" >>/root/ceph-deploy/ceph.conf

# 在 所有节点 安装ceph相关软件包
yum install -y ceph ceph-mon ceph-mgr ceph-radosgw ceph-mds
#	当然如果你不在乎网络问题,也可以使用官方推荐的安装方式,下面的方式会重新给我们配置yum源,这里不太推荐
# ceph-deploy install ceph-01 ceph-02 ceph-03

# 接下来我们需要初始化monitor
cd /root/ceph-deploy
ceph-deploy mon create-initial
# 需要进入到我们之前创建的ceph目录中, 接下来我们在/root/ceph-deploy下面可以看到刚刚生成的一些文件
[root@ceph01 ceph-deploy]
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值