Ceph介绍
Ceph基础
Ceph是一个可靠地、自动重均衡、自动恢复的分布式存储系统,根据场景划分可以将Ceph分为三大块,分别是对象存储(rgw)、块设备存储( rbd)和文件系统服务(cephfs)。Ceph相比其它存储的优势点在于它不单单是存储,同时还充分利用了存储节点上的计算能力,在存储每一个数据时,都会通过计算得出该数据存储的位置,尽量将数据分布均衡,同时由于Ceph的良好设计,采用了CRUSH算法、HASH环等方法,使得它不存在传统的单点故障的问题,且随着规模的扩大性能并不会受到影响。
Ceph核心组件
Ceph的核心组件包括Ceph OSD、Ceph Monitor和Ceph MDS。
Ceph OSD:OSD的英文全称是Object Storage Device,它的主要功能是存储数据、复制数据、平衡数据、恢复数据等,与其它OSD间进行心跳检查等,并将一些变化情况上报给Ceph Monitor。一般情况下一块硬盘对应一个OSD,由OSD来对硬盘存储进行管理,当然一个分区也可以成为一个OSD。
Ceph OSD的架构实现由物理磁盘驱动器、Linux文件系统和Ceph OSD服务组成,对于Ceph OSD Deamon而言,Linux文件系统显性的支持了其拓展性,一般Linux文件系统有好几种,比如有BTRFS、XFS、Ext4等,BTRFS虽然有很多优点特性,但现在还没达到生产环境所需的稳定性,一般比较推荐使用XFS。
伴随OSD的还有一个概念叫做Journal盘,一般写数据到Ceph集群时,都是先将数据写入到Journal盘中,然后每隔一段时间比如5秒再将Journal盘中的数据刷新到文件系统中。一般为了使读写时延更小,Journal盘都是采用SSD,一般分配10G以上,当然分配多点那是更好,Ceph中引入Journal盘的概念是因为Journal允许Ceph OSD功能很快做小的写操作;一个随机写入首先写入在上一个连续类型的journal,然后刷新到文件系统,这给了文件系统足够的时间来合并写入磁盘,一般情况下使用SSD作为OSD的journal可以有效缓冲突发负载。
Ceph Monitor:由该英文名字我们可以知道它是一个监视器,负责监视Ceph集群,维护Ceph集群的健康状态,同时维护着Ceph集群中的各种Map图,比如OSD Map、Monitor Map、PG Map和CRUSH Map,这些Map统称为Cluster Map,Cluster Map是RADOS的关键数据结构,管理集群中的所有成员、关系、属性等信息以及数据的分发,比如当用户需要存储数据到Ceph集群时,OSD需要先通过Monitor获取最新的Map图,然后根据Map图和object id等计算出数据最终存储的位置。
Ceph MDS:全称是Ceph MetaData Server,主要保存的文件系统服务的元数据,但对象存储和块存储设备是不需要使用该服务的。
查看各种Map的信息可以通过如下命令:ceph osd(mon、pg) dump
规划
主机名 | IP地址 | 角色 | 配置 |
---|---|---|---|
ceph_node1 | 192.168.111.11/24 | 控制节点、mon,mgr,osd | 3块10GB硬盘 |
ceph_node2 | 192.168.111.12/24 | mon, mgr, osd | 3块10GB硬盘 |
ceph_node3 | 192.168.111.13/24 | mon, mgr, osd | 3块10GB硬盘 |
系统初始化
关闭防火墙
systemctl stop firewalld && systemctl disable firewalld
关闭SELinux
在三台主机上分别执行以下命令,管理SELinux
|
|
配置网络
|
|
配置主机名
|
|
配置hosts
配置hosts,并复制到其他两台主机
|
|
scp /etc/hosts ceph_node2:/etc/
scp /etc/hosts ceph_node3:/etc/
配置互信
在ceph_node1上生成秘钥,不设置密码
|
|
将秘钥分别复制到ceph_node1, ceph_node2, ceph_node3上
ssh-copy-id -i /root/.ssh/id_rsa.pub ceph_node1
ssh-copy-id -i /root/.ssh/id_rsa.pub ceph_node2
ssh-copy-id -i /root/.ssh/id_rsa.pub ceph_node3
验证一下免密效果
ssh ceph_node1
ssh ceph_node2
ssh ceph_node3
配置时间服务器
在ceph_node1上配置时间服务器
安装chrony时间服务器软件
yum -y install chrony
|
|
systemctl start chronyd && systemctl enable chronyd
在ceph_node2 & ceph_node3上配置
|
|
查看时间同步源
chronyc sources -v
手动同步系统时钟
chronyc -a makestep
配置yum源
cd /etc/yum.repos.d/
mkdir bak
mv *.repo bak
基础yum源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
epel源
curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
ceph源
|
|
生成yum源缓存
yum clean all
yum makecache fast
yum list |grep ceph
部署Ceph
部署控制节点
在ceph_node1节点上安装ceph-deploy
|
|
在ceph_node1上创建一个cluster目录,所有命令再此目录下进行操作
|
|
将ceph_node1,ceph_node2,ceph_node3加入集群
|
|
输出没有报错,表示部署成功。
查看ceph版本
|
|
生成mon角色
|
|
生成ceph admin秘钥
|
|
部署MGR,提供web界面管理ceph(可选安装)
|
|
部署rgw
yum -y install ceph-radosgw
|
|
部署cephfs(可选)
|
|
初始化OSD
在ceph_node1上一次初始化所有磁盘
|
|
查看OSD状态
|
|
查看ceph状态
|
|
至此,整个ceph的部署就完成了,健康状态也是ok的。
Ceph操作使用
创建存储池
|
|
查看存储池详细参数
|
|
查看存储池单个参数配置
|
|
修改存储池参数
|
|
创建EC池,创建EC策略
|
|
rgw使用
设置mypool2为rgw,使用rados客户端工具测试上传下载
|
|
|
|
rbd使用
设置mypool3为rbd,并创建卷,挂载到/mnt, 映射给业务服务器使用。
|
|
避坑指南
Q1:
|
|
解决方法:yum install python2-pip
Q2:
|
|
解决方法:ceph config set mon auth_allow_insecure_global_id_reclaim false