linux运维、架构之路-分布式存储Ceph

一、Ceph介绍

       Ceph是一个Linux PB级分布式文件系统,能够在维护POSIX兼容性的同时加入了复制和容错功能。Ceph号称高可用的分布式存储系统,通过多个MON节点(通常为3个)维护集群的状态及元数据信息,而真正存储数据的OSD节点通过向MON节点汇报状态,并通过CRUSH算法将数据副本布局到相应OSD的所在磁盘上,完成数据的持久化存储。为了保证每个数据副本的高可用,通常采用三副本或EC方式。而提供文件服务的mds组件和提供对象存储的rgw组件都不存储实际数据,只是作为服务态进程存在。Ceph可以提供对象存储RODOSGW、块存储RBD、文件系统存储Ceph FS 三种功能。

二、Ceph特点

        可轻松扩展到PB容量,对多种工作负载的高性能(每秒输入/输出操作[IOPS]和带宽),高可靠性。Ceph开发了一些非常有趣的概念(例如,动态元数据分区,数据分布和复制)。ceph的设计还保护单一点的故障容错功能,它假设大规模(PB级别存储)存储故障是常见现象而不是例外情况。它的设计并没有假设某种特殊工作负载,但是包括适应变化的工作负载,提供最佳性能的能力。

三、Ceph组件介绍

组件概念
Monitor 一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据
OSD OSD负责相应客户端请求返回具体数据的进程,一个Ceph集群一般都有很多个OSD
MSD MSD 全称Cepg Metadata Service,是CephFs服务依赖的元数据服务
Object Ceph最底层的存储单位是Object对象,每个Object包含元数据和原始数据
PG PG全称Placement Groups,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据
RADOS 是Ceph集群的精华,为用户实现数据分配,Failover等集群操作
Libradio Libradio是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFs都是通过librados访问的目前提供PHP、Ruby、Java、Python等支持
CRUSH CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。
RBD RBD全称RADOS block device,是Ceph对外提供的块设备服务
Image RBD image是简单的块设备,可以直接被mount到主机,成为一个device,用户可以直接写入二进制数据。image的数据被保存为若干个RADOS对象存储中的对象;image的数据空间是thin provision的,意味着Ceph不预分配空间,而是等到实际写入数据时按照object分配空间;每个data object被保存为多份。pool将RBD镜像的ID和name等基本信息保存在rbd_directory中,这样rbd ls命令就可以快速返回一个pool中所有的RBD镜像了 
RGW RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容
CephFs CephFs全称Ceph File System,是Ceph对外提供的文件系统服务
Pool pool是Ceph存储时的逻辑分区,它起到namespace的作用

四、Ceph部署

1、服务器规划

系统

IP地址

主机名

部署服务

配置

CentOS  7.5

192.168.56.10

Ceph-deploy

Ceph、Ceph-deploy、Mon

2C/2G

CentOS  7.5

192.168.56.11

ceph01

Ceph

2C/2G

CentOS  7.5

192.168.56.12

ceph02

Ceph

2C/2G

2、环境初始化

  • Ceph-deploy版本: 1.5.39
  • Ceph版本: 10.2.11
  • 系统版本:7.5.1804 (Core)
  • 内核版本:3.10.0-862.el7.x86_64

关闭selinux、iptables

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
setenforce 0

设置时间同步

yum -y install ntp
systemctl enable ntpd
systemctl start ntpd
ntpdate -u cn.pool.ntp.org
hwclock --systohc
timedatectl set-timezone Asia/Shanghai

修改主机名、host

hostnamectl set-hostname Ceph-deploy && bash
hostnamectl set-hostname ceph01 && bash
hostnamectl set-hostname ceph02 && bash

cat >> /etc/hosts <<EOF
192.168.56.10 Ceph-deploy
192.168.56.11 ceph01
192.168.56.12 ceph02
EOF

④设置yum源

wget -O /etc/yum.repos.d/CentOS-Base.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
yum clean all && yum makecache

⑤设置

posted @ 2021-02-20 18:07  闫新江  阅读(526)  评论(0编辑  收藏  举报