• ceph分布式存储


    目录

    前言

    一、概述

    (一)、特点

    (二)、组件

    (三)、架构图

    二、搭建

    (一)、基础环境

    (二)、准备工作

    (三)、ceph安装

    (四)、集群构建

    (五)、dashboard安装

    (六)、ceph文件系统创建

    (七)、客户端挂载

    总结


    前言

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


    一、概述

    是一个统一的分布式存储系统,设计初衷是提供较好的性能、可靠性和可扩展性。

    (一)、特点

    1. 统一存储

    虽然 ceph 底层是一个分布式文件系统,但由于在上层开发了支持对象和块的接口。所以在开源存储软件中,能够一统江湖。

    2. 高扩展性

    扩容方便、容量大。能够管理上千台服务器、EB 级的容量。

    3. 可靠性强

    支持多份强一致性副本,EC。副本能够垮主机、机架、机房、数据中心存放。所以安全可靠。存储节点可以自动管理、自动修复。无单点故障,容错性强。

    4. 高性能

    因为是多个副本,因此在读写操作时候能够做到高度并行化。理论上,节点越多,整个集群的 IOPS和吞吐量越高。另外一点 ceph 客户端读写数据直接与存储设备(osd) 交互。

    (二)、组件

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

    (三)、架构图

    1:文件上传,先将文件切片成N个object(如果开启了cephFS,可以使用MDS缓存)
    2:切片后的文件object会存入到Ceph中
    3:文件存储前,会经过CRUSH算法,计算当前文件存储归结于哪个PG
    4:PG是逻辑概念上对文件存储范围划分的索引
    5:根据PG索引将文件存储到指定服务器的OSD中

    二、搭建

    (一)、基础环境

    192.168.238.11 sentos1(osd)网关192.168.238.2

    192.168.238.12 sentos2(osd)网关192.168.238.2

    192.168.238.13 sentos3(osd)网关192.168.238.2

    192.168.238.14 sentos4(client)网关192.168.238.2

    (二)、准备工作

    全部关闭防火墙、关闭图形网络管理器、关闭Selinux

    分别修改至上面IP和主机名、添加hosts文件

    进行免密登录然后测试

    添加一块磁盘(分别重启或热扫描)

    1. cd /sys/class/scsi_host/
    2. for i in `ls`;do echo "- - -" > $i/scan;done

    对添加的磁盘进行格式化        mkfs.xfs /dev/sdb

    修改ssh配置

    1. sed -i "s/#UseDNS yes/UseDNS no/" /etc/ssh/sshd_config
    2. systemctl restart sshd

    时间同步

    在sentos1上开启时间同步服务器

    1. yum install -y ntp
    2. vim /etc/ntp.conf

    1. systemctl start ntpd
    2. systemctl enable ntpd
    3. for i in 11 12 13 14;do ssh 192.168.238.$i ntpdate 192.168.238.11;done

    (三)、ceph安装

    只在sentos1执行

    1. yum install epel-release -y
    2. yum install lttng-ust -y

    添加ceph安装源

    vim /etc/yum.repo.d/ceph.repo

    1. [Ceph]
    2. name=Ceph packages for $basearch
    3. baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/x86_64/
    4. enabled=1
    5. gpgcheck=1
    6. type=rpm-md
    7. gpgkey=https://download.ceph.com/keys/release.asc
    8. [Ceph-noarch]
    9. name=Ceph noarch packages
    10. # 清华源
    11. baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/noarch/
    12. enabled=1
    13. gpgcheck=1
    14. type=rpm-md
    15. gpgkey=https://download.ceph.com/keys/release.asc
    16. [ceph-source]
    17. name=Ceph source packages
    18. baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/SRPMS/
    19. enabled=1
    20. gpgcheck=1
    21. type=rpm-md
    22. gpgkey=https://download.ceph.com/keys/release.asc
     yum -y install ceph ceph-deploy 

    (四)、集群构建

    只在sentos1执行,集群操作都在/usr/local/soft/cephcluster目录下操作

    创建集群目录

    1. mkdir -p /usr/local/soft/cephcluster
    2. cd /usr/local/soft/cephcluster

    创建集群

    ceph-deploy new sentos1 sentos2 sentos3

    修改配置文件

    vim ceph.conf

    1. #对外开放网段
    2. public network = 192.168.238.0/24
    3. # 设置pool池默认分配数量
    4. osd pool default size = 2
    5. # 容忍更多的时钟误差
    6. mon clock drift allowed = 2
    7. mon clock drift warn backoff = 30
    8. # 允许删除pool
    9. mon_allow_pool_delete = true
    10. [mgr]
    11. # 开启WEB仪表盘
    12. mgr modules = dashboard

    安装(确保网络流畅,否则会报错)

    ceph-deploy install sentos1 sentos2 sentos3

      确保网络流畅,否则会报错

    初始化monitor

    ceph-deploy mon create-initial

    同步管理信息

    ceph-deploy admin sentos1 sentos2 sentos3

    安装mgr(管理守护进程)

    ceph-deploy mgr create  sentos1 sentos2 sentos3

    安装rgw

    ceph-deploy rgw create sentos1 sentos2 sentos3

    创建mds服务

    ceph-deploy mds create sentos1 sentos2 sentos3

    OSD安装

    OSD服务是对象存储守护进程, 负责把对象存储到本地文件系统, 必须要有一块独立的磁盘作为存储。如果没有独立磁盘,怎么办? 可以在Linux下面创建一个虚拟磁盘进行挂载。

    创建OSD

    1. ceph-deploy osd create --data /dev/sdb sentos1
    2. ceph-deploy osd create --data /dev/sdb sentos2
    3. ceph-deploy osd create --data /dev/sdb sentos3

    查看集群状态        ceph -s

    (五)、dashboard安装

    开启dashboard模块

    ceph mgr module enable dashboard

    生成签名

    ceph dashboard create-self-signed-cert

    创建目录

    1. mkdir -p /usr/local/jx/cephcluster/mgr-dashboard
    2. cd /usr/local/jx/cephcluster/mgr-dashboard
    3. openssl req -new -nodes -x509 -subj "/O=IT/CN=ceph-mgr-dashboard" -days 3650 -keyout dashboard.key -out dashboard.crt -extensions v3_ca

    启动服务(先关再起)

    1. ceph mgr module disable dashboard
    2. ceph mgr module enable dashboard

    设置访问地址与端口

    1. ceph config set mgr mgr/dashboard/server_addr 192.168.238.11
    2. ceph config set mgr mgr/dashboard/server_port 9001

    关闭https

    1. ceph config set mgr mgr/dashboard/ssl false
    2. ceph mgr services

    生成账户密码(自定义)

    ceph dashboard set-login-credentials jx123 123.com

    访问

    https://192.168.238.11:8443

    (六)、ceph文件系统创建

    创建存储池

    1. ceph osd pool create cephfs_data 128
    2. ceph osd pool create cephfs_metadata 64

    查看存储池

    ceph osd lspools

    创建文件系统、查看文件系统、查看mds状态

    1. ceph fs new fs_test cephfs_metadata cephfs_data
    2. ceph fs ls
    3. ceph mds stat

    (七)、客户端挂载

    在centos1中安装        ceph-deploy install centos4

    同步管理信息

    1. cd /usr/local//soft/cephcluster
    2. ceph-deploy admin sentos4

    在centos4中安装        yum install -y ceph-fuse

    查看信息

    ls /etc/ceph

    创建挂载目录

    mkdir /ceph

    挂载ceph文件系统

    ceph-fuse -k /etc/ceph/ceph.client.admin.keyring -m 192.168.238.11:6789 /ceph

    再访问查看


    总结

    搭建中最大的问题莫过于网络的流畅度,不然安装失败,安装过程失败导致后续所有操作都无法进行,需要注意的是ceph安装到客户端挂载之前都是在1台主机上操作的(sentos1)。

  • 相关阅读:
    PostgreSQL插件开发
    DMPE-PEG-Mal 二肉豆蔻酰磷脂酰乙醇胺-聚乙二醇-马来酰亚胺供应
    xxl-job安装部署
    【环境搭建】linux docker-compose安装rocketmq
    「未来已来」三大办公领域巨头(Google、Microsoft、金山),开启AI办公新纪元
    SpringCloud 完整版--(Spring Cloud Netflix 体系)
    C6657 GPIO16~31中断配置
    虹科方案 | 释放总线潜力:汽车总线离线模拟解决方案
    ——二叉树
    解决node_modules\node-sassnpm ERR! command failed
  • 原文地址:https://blog.csdn.net/2301_78534660/article/details/133144295