Ceph分布式存储系统
官方中文文档:http://docs.ceph.org.cn/
核心组件
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。
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,主要保存的文件系统服务的元数据,但对象存储和块存储设备是不需要使用该服务的。
环境描述
基于CentOS7
主机名 | IP地址 | 角色 |
---|---|---|
ceph-1 | 192.168.1.50 | mon 管理节点 |
ceph-1 | 192.168.1.51 | 集群成员 |
ceph-3 | 192.168.1.52 | 集群成员 |
安装
关闭Selinux (三台都执行)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
关闭防火墙(三台都执行)
systemctl stop firewalld && systemctl disable firewalld
配置hosts文件(管理节点ceph-1执行)
cat /etc/hosts
192.168.1.50 ceph-1
192.168.1.51 ceph-2
192.168.1.52 ceph-3
# 确保每台服务器hosts文件内容一致
for i in {0..2} ; do scp /etc/hosts 192.168.1.5$i:/etc/hosts ; done
配置免密登录(管理节点ceph-1执行)
ssh-keygen #三次回车
ssh-copy-id ceph-1
ssh-copy-id ceph-2
ssh-copy-id ceph-3
安装 yum-plugin-priorities
(管理节点ceph-1执行)
sudo yum install yum-plugin-priorities
# 确认 /etc/yum/pluginconf.d/priorities.conf 文件存在。
# 确认 priorities.conf 里面打开了插件支持。
cat /etc/yum/pluginconf.d/priorities.conf
[main]
enabled = 1
配置yum源(三台都执行)
建议参考ceph官方中文文档:http://docs.ceph.org.cn/install/install-storage-cluster/
yum -y install epel-release
vim /etc/yum.repos.d/ceph.repo
[ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/$basearch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch
enabled=1
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=0
priority=2
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
安装依赖的的软件包(管理节点ceph-1执行)
sudo yum install snappy leveldb gdisk python-argparse gperftools-libs
# 把 ceph.repo 文件放入 /etc/yum.repos.d 之后,你就可以安装 Ceph 软件包了。
安装ceph-deploy(管理节点ceph-1执行)
yum -y install ceph-deploy
# 若执行ceph-deploy命令报错,如:
Traceback (most recent call last):
File "/usr/bin/ceph-deploy", line 18, in <module>
from ceph_deploy.cli import main
File "/usr/lib/python2.7/site-packages/ceph_deploy/cli.py", line 1, in <module>
import pkg_resources
ImportError: No module named pkg_resources
#请安装python2-pip
yum -y install python2-pip
创建ceph集群(管理节点ceph-1执行)
ceph-deploy new $HOSTNAME
手动安装ceph的软件包(三台都执行)
yum -y install ceph ceph-radosgw
# 相当于执行ceph-deploy install ...命令。若执行此命令,yum源可能会被修改,导致安装失败。
# 建议使用yum -y install ceph ceph-radosgw安装。
初始化ceph集群(管理节点ceph-1执行)
ceph-deploy mon create-initial
ceph-deploy mgr create ceph-1
查看ceph状态(管理节点ceph-1执行)
ceph -s
cluster:
id: 746cd5aa-feb3-4676-9203-783792f72da3
health: HEALTH_WARN
no active mgr
services:
mon: 1 daemons, quorum ceph-1
mgr: no daemons active
osd: 0 osds: 0 up, 0 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0B
usage: 0B used, 0B / 0B avail
pgs:
添加硬盘设备(三台都添加一块5G的硬盘)
# 查看硬盘,sdb为新加的硬盘
[root@localhost ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 20G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 19G 0 part
├─centos-root 253:0 0 17G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
sdb 8:16 0 5G 0 disk
sr0 11:0 1 4.2G 0 rom
格式化硬盘(管理节点ceph-1执行)
ceph-deploy disk zap ceph-1 /dev/sdb
ceph-deploy disk zap ceph-2 /dev/sdb
ceph-deploy disk zap ceph-3 /dev/sdb
创建osd对象存储(管理节点ceph-1执行)
ceph-deploy osd create --data /dev/sdb ceph-1
ceph-deploy osd create --data /dev/sdb ceph-2
ceph-deploy osd create --data /dev/sdb ceph-3
查看集群状态(管理节点ceph-1执行)
ceph -s
cluster:
id: 746cd5aa-feb3-4676-9203-783792f72da3
health: HEALTH_OK
services:
mon: 1 daemons, quorum ceph-1
mgr: ceph-1(active)
osd: 3 osds: 3 up, 3 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0B
usage: 3.01GiB used, 12.0GiB / 15.0GiB avail
pgs: