Ceph分布式文件系统集群部署

Ceph简介

Ceph 文件系统( Ceph FS )是个 POSIX 兼容的文件系统,它使用 Ceph 存储集群来存储数据。 Ceph 文件系统与 Ceph 块设备、同时提供 S3 和 Swift API 的 Ceph 对象存储、或者原生库( librados )一样,都使用着相同的 Ceph 存储集群系统。Ceph是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。

Ceph项目最早起源于Sage就读博士期间的工作(最早的成果于2004年发表),并随后贡献给开源社区。在经过了数年的发展之后,目前已得到众多云计算厂商的支持并被广泛应用。RedHat及OpenStack都可与Ceph整合以支持虚拟机镜像的后端存储。

 

Ceph特点

    • 高性能
      a. 摒弃了传统的集中式存储元数据寻址的方案,采用CRUSH算法,数据分布均衡,并行度高。
      b.考虑了容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。
      c. 能够支持上千个存储节点的规模,支持TB到PB级的数据。
    • 高可用性
      a. 副本数可以灵活控制。
      b. 支持故障域分隔,数据强一致性。
      c. 多种故障场景自动进行修复自愈。
      d. 没有单点故障,自动管理。
    • 高可扩展性
      a. 去中心化。
      b. 扩展灵活。
      c. 随着节点增加而线性增长。
    • 特性丰富
      a. 支持三种存储接口:块存储、文件存储、对象存储。
      b. 支持自定义接口,支持多种语言驱动。

Ceph架构

支持三种接口:

    • Object:有原生的API,而且也兼容Swift和S3的API。
    • Block:支持精简配置、快照、克隆。
    • File:Posix接口,支持快照。
      rados.png

Ceph核心组件及概念介绍

  • Monitor
    一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据。
  • OSD
    OSD全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD。
  • MDS
    MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。
  • Object
    Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。
  • PG
    PG全称Placement Grouops,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。
  • RADOS
    RADOS全称Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。
  • Libradio
    Librados是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。
  • CRUSH
    CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。
  • RBD
    RBD全称RADOS block device,是Ceph对外提供的块设备服务。
  • RGW
    RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。
  • CephFS
    CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。

 

Ceph集群安装部署

  • 环境准备

关闭防火墙

systemctl stop firewalld
systemctl disable firewalld

关闭Selinux

setenforce 0
vi /etc/selimux/config
selinux=disabled
  • 添加阿里云Ceph镜像源
cat >/etc/yum.repos.d/ceph.repo<<EOF
[ceph]
name=ceph
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/x86_64/
gpgcheck=0
priority=1

[ceph-noarch]
name=cephnoarch
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch/
gpgcheck=0
priority=1

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=0
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
EOF
yum makecache
  • 所有node节点执行一下操作
useradd ceph-admin
echo 'ceph-admin' | passwd --stdin ceph-admin
echo "ceph-admin ALL = (root) NOPASSWD:ALL" > /etc/sudoers.d/ceph-admin
chmod 0440 /etc/sudoers.d/ceph-admin
#配置sshd可以使用password登录
sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
systemctl reload sshd
#配置sudo不需要tty
sed -i 's/Default requiretty/#Default requiretty/' /etc/sudoers
#在所有节点配置hosts
cat >>/etc/hosts<<EOF
192.168.1.111 ceph1
192.168.1.112 ceph2
192.168.1.113 ceph3
EOF
#格式化需要做osd的磁盘
mkfs.xfs /dev/sdb
  • 在admin节点执行
su - ceph-admin
ssh-keygen
ssh-copy-id ceph-admin@ceph1
ssh-copy-id ceph-admin@ceph2
ssh-copy-id ceph-admin@ceph3
  • admin节点安装ceph-deploy
yum install -y ceph-deploy
mkdir my-cluster
cd my-cluster
  • 进行节点部署
ceph-deploy new ceph1 ceph2 ceph3
#安装完之后my-cluster目录下面会生成三个文件
ceph.conf
ceph-deploy-ceph.log
ceph.mon.keyring
#编辑ceph.conf配置文件,在最后添加一下信息
sudo vim  ~/my-cluster/ceph.conf

public network = 192.168.0.0/23
[osd]
osd_max_object_name_len = 256
osd_max_object_namespace_len = 64
rbd_default_features = 1
osd_pool_default_size = 3
filestore_xattr_use_omap = true
[mon]
mon_pg_warn_max_per_osd = 1000

#在管理节点直接给各节点安装环境包
ceph-deploy install ceph1 ceph2 ceph3
#配置初始的monitor并收集所有密钥:
ceph-deploy mon create-initial
#把配置信息拷贝到各节点
ceph-deploy admin ceph1 ceph2 ceph3
  • 各节点创建osd(需要创建的磁盘均需要执行)
ceph-deploy --overwrite-conf config push ceph{1..3}
ceph-deploy disk zap ceph1 /dev/sdb
ceph-deploy gatherkeys ceph{1..3}
ceph-deploy osd create ceph1 --data /dev/sdb
  • 启动mds、mgr
ceph-deploy mds create ceph1 ceph2 ceph3
ceph-deploy mgr create ceph1 ceph2 ceph3
  • 开启dashboard模块,启用浏览器界面
#在开启dashboard模块之前要注意,因为我们是使用ceph-admin一般用户进行安装,所有无法调用/etc/ceph/下面的文件,将/etc/ceph目录下面的文件属主属组全部更改为ceph-admin
sudo chown -R ceph-admin /etc/ceph
#然后加载dashboard模块
ceph mgr module enable dashboard 
#dashboard管理页面
http://192.168.1.111:7000
  • CephFS需要使用两个Pool来分别存储数据和元数据
ceph osd pool create fs_data 128
ceph osd pool create fs_metadata 128
ceph osd lspools
  • 创建一个CephFS
ceph fs new cephfs fs_metadata fs_data
  • 第三方客户端使用cephfs
mount -t ceph ceph1:6789,ceph2:6789,ceph3:6789:/ /mnt/mycephfs -o name=admin,secret=`ceph auth print-key client.admin`
  • 卸载ceph
ceph-deploy purge ceph01
ceph-deploy purgedata ceph01

rm -rf /var/lib/ceph
rm -rf /etc/ceph
rm -rf /var/run/ceph/

发表评论