Linux云计算 |【第二阶段】CLUSTER-DAY3

主要内容:

Ceph概述、部署Ceph集群、Ceph块存储

一、分布式存储基础

分布式系统(Distributed File System)是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连组成的系统;分布式系统的出现是为了用廉价的、普通的机器完成单个计算机无法完成的计算、存储任务。其目的是利用更多的机器,处理更多的数据;

常用分布式文件系统:Lustre、Hadoop、FastDFS、Ceph、GlusterFS

1)Ceph架构简介及使用场景介绍

2) Ceph特点介绍

① 高性能

  • 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高。
  • 考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。
  • 能够支持上千个存储节点的规模,支持TB到PB级的数据。

② 高可用性

  • 副本数可以灵活控制。
  • 支持故障域分隔,数据强一致性。
  • 多种故障场景自动进行修复自愈。
  • 没有单点故障,自动管理。

③ 高可扩展性

  • 去中心化。
  • 扩展灵活。
  • 随着节点增加而线性增长。

④ 特性丰富

  • 支持三种存储接口:块存储、文件存储、对象存储。
  • 支持自定义接口,支持多种语言驱动。

3)Ceph组件

- OSDs(ceph-osd)真实的提供存储空间的硬件设备

作用:共享硬盘,OSD三备份(三副本)

- Monitors(ceph-mon)集群监控组件

作用:带健康检测功能及绘制map地图,MON过半原则(要求超过一半的服务器是正常的,所以服务器数量一般为奇数)

补充:地图内容包括几台主机组成OSD存储、主机IP、共享的存储磁盘等,且实时更新;

- RadosGateway(RGW,ceph-radosgw)对象存储网关

- MDSs(ceph-mds)存放文件系统的元数据(对象存储和块存储不需要该组件)

- Client-ceph(ceph-common)ceph客户端

注意:一个服务器至少需要3个OSD(做OSD的3副本备份);MON至少需要奇数位个服务器(MON过半原则)

扩展:Ceph核心组件及概念介绍(作为参考)

  1. Monitor:一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据。
  2. OSD:OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD。一般配置成和磁盘一一对应,一块磁盘启动一个OSD进程。
  3. MDS:MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。
  4. pool:是存储对象的逻辑分区,它规定了数据冗余的类型和对应的副本分布策略;支持两种类型:副本(replicated)和 纠删码( Erasure Code)
  5. PG:PG全称Placement Grouops归置组,是一个逻辑的概念,一个PG包含多个对象,是对象的集合,该集合里的所有对象都具有相同的放置策略(相同PG内的对象都会放到相同的硬盘上);PG是 ceph的核心概念,服务端数据均衡和恢复的最小粒度就是PG,引入PG这一层其实是为了更好的分配数据和定位数据。
  6. Object:Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。
  7. RADOS:RADOS全称Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。
  8. Libradio:Librados是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。
  9. CRUSH:CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。
  10. RBD:RBD全称RADOS block device,是Ceph对外提供的块设备服务。
  11. RGW:RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。
  12. CephFS:CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。

OSD存储代表共享的硬盘,MON用来健康检查健康和绘制地图;客户端可访问MON获取MAP地图(元数据),地图内容:主机组成OSD存储、主机IP、共享的存储磁盘信息;

用户端在存储数据时,通过数据切片(默认4M)进行上传;(高性能—>数据切割)

Ceph集群会自动将数据拷贝3份存放,且有寄生作用,当某个存放的服务器宕机通过寄生可以再复制,一般标准3副本(安全性—>3副本拷贝)

CRUSH数据分布算法(Controlled, Scalable, Decentralized Placement of Replicated Data),可控的、可扩展的、分布式的副本数据放置算法,主要目的是为了定位所存储数据的位置

补充:在Ceph存储中,数据都是以object为基本单位进行存储的,每个object默认为4MB大小;若干个object属于一个PG(Placement Group,归置组);而若干个PG又属于一个OSD;一般来说,一个OSD对应于一块磁盘。PG到OSD的映射的过程算法叫做CRUSH 算法。(一个Object需要保存三个副本,也就是需要保存在三个osd上);

CRUSH算法是一个伪随机的过程,他可以从所有的OSD中,随机性选择一个OSD集合,但是同一个PG每次随机选择的结果是不变的,也就是映射的OSD集合是固定的。

 


案例1:部署实验环境

案例要求:设置防火墙/SELinux、配置主机名、IP、YUM源、无密码SSH连接、/etc/hosts域名解析、NTP时间同步、添加磁盘

  • 1)创建1台客户端虚拟机192.168.4.10,3台存储集群虚拟机192.168.4.11、4.12、4.13
  • 3)配置主机名、IP地址、YUM源
  • 4)配置无密码SSH连接
  • 5)配置NTP时间同步
  • 6)添加虚拟机磁盘(为ceph集群作为存储使用)

步骤1:安装前准备

1)为所有节点配置yum源服务器

真机第二阶段素材中ceph10.iso挂载到/var/ftp/ceph目录,为所有虚拟机提供YUM源

[root@localhost 桌面]# mkdir /var/ftp/ceph
[root@localhost 桌面]# mount -t iso9660 /linux-soft/2/ceph10.iso /var/ftp/ceph/
[root@localhost 桌面]# df -h
文件系统        容量  已用  可用 已用% 挂载点
/dev/loop2     284M  284M   0  100% /var/ftp/ceph
[root@localhost 桌面]# vim /etc/fstab
/dev/loop2 /var/ftp/ceph iso9660 defaults 0 0
[root@localhost 桌面]# mount -a

补充:[-t] 选项为指定驱动设备,否则在配置永久挂载时无驱动设备,mount -a会报错;

2)为虚拟机添加磁盘(node1、node2、node3主机操作)

除client客户端,所有3台ceph服务器都添加2块 20G磁盘

[root@node1 ~]# lsblk      //查看新增的2块磁盘(以node1为例)
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda    253:0    0  30G  0 disk
└─vda1 253:1    0  30G  0 part /
vdb    253:16   0  20G  0 disk
vdc    253:32   0  20G  0 disk

3)所有主机设置防火墙和SELinux(所有主机操作)

[root@client ~]# firewall-cmd --set-default-zone=trusted
[root@client ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
[root@client ~]# setenforce 0

[root@node1 ~]# firewall-cmd --set-default-zone=trusted
[root@node1 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
[root@node1 ~]# setenforce 0

[root@node2 ~]# firewall-cmd --set-default-zone=trusted
[root@node2 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
[root@node2 ~]# setenforce 0

[root@node3 ~]# firewall-cmd --set-default-zone=trusted
[root@node3 ~]# sed -i '/SELINUX/s/enforcing/permissive/' /etc/selinux/config
[root@node3 ~]# setenforce 0

4)配置SSH无密码连接(node1操作)

配置SSH无密码连接为了同时给其它所有主机远程拷贝文件、安装软件包、启动服务等;

注意:拷贝公钥时,包括node1主机也需要拷贝,实现远程自己不需要密码

[root@node1 ~]# ssh-keygen -f /root/.ssh/id_rsa -N ''
[root@node1 ~]# for i in {10..13}
> do
> ssh-copy-id 192.168.4.$i   //将密钥传递给192.168.4.10、4.11、4.12、4.13
> done

5)修改/etc/hosts并同步到所有主机(node1操作)

注意:/etc/hosts解析的域名要与本机主机名一致

[root@node1 ~]# vim /etc/hosts    //修改文件(不要删除文件原有内容)
...
192.168.4.10  client
192.168.4.11  node1
192.168.4.12  node2
192.168.4.13  node3

将/etc/hosts文件拷贝给所有其他主机(client、node1、node2、node3)

[root@node1 ~]# for i in client node{1..3}
> do
> scp /etc/hosts/ $i:/etc/
> done

6)修改所有节点都需要配置YUM源,并同步到所有主机

注意:由于真机以将ceph10.iso挂载到/var/ftp/ceph目录,且有3个YUM源

[root@node1 ~]# vim /etc/yum.repos.d/ceph.repo    //新建YUM源配置文件
[mon]
name=mon
baseurl=ftp://192.168.4.254/ceph/MON
enabled=1
gpgcheck=0
[osd]
name=osd
baseurl=ftp://192.168.4.254/ceph/OSD
enabled=1
gpgcheck=0
[tools]
name=tools
baseurl=ftp://192.168.4.254/ceph/Tools
enabled=1
gpgcheck=0
[root@node1 ~]# yum clean all     //清空缓存
[root@node1 ~]# yum repolist     //列出yum清单
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
源标识                             源名称                            状态
local_repo                         CentOS-7 - Base  &nbs
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小安运维日记

Hey~ 感谢您的充电支持!!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值