• ceph部署


    基本概念

    Ceph是一种为优秀的性能、可靠性和可扩展性而设计的统一的、分布式的存储系统。Ceph 独一无二地用统一的系统提供了对象、块、和文件存储功能,它可靠性高、管理简便、并且是开源软件。 Ceph 的强大足以改变贵公司的 IT 基础架构、和管理海量数据的能力。Ceph 可提供极大的伸缩性——供成千用户访问 PB 乃至 EB 级的数据。 Ceph 节点以普通硬件和智能守护进程作为支撑点, Ceph 存储集群组织起了大量节点,它们之间靠相互通讯来复制数据、并动态地重分布数据。

    1.ceph的组件和功能

    1)Ceph的核心组件

    Ceph的核心组件包括Ceph OSD、Ceph Monitor和Ceph MDS三大组件。

    Ceph OSD:OSD的英文全称是Object Storage Device,它的主要功能是存储数据、复制数据、平衡数据、恢复数据等,与其它OSD间进行心跳检查等,并将一些变化情况上报给Ceph Monitor。一般情况下一块硬盘对应一个OSD,由OSD来对硬盘存储进行管理,当然一个分区也可以成为一个OSD。

    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,主要保存的文件系统服务的元数据,但对象存储和块存储设备是不需要使用该服务的。

    (2)Ceph功能特性

    Ceph可以同时提供对象存储RADOSGW(Reliable、Autonomic、Distributed、Object Storage Gateway)、块存储RBD(Rados Block Device)、文件系统存储Ceph FS(Ceph File System)3种功能,由此产生了对应的实际场景,本节简单介绍如下。

    RADOSGW功能特性基于LIBRADOS之上,提供当前流行的RESTful协议的网关,并且兼容S3和Swift接口,作为对象存储,可以对接网盘类应用以及HLS流媒体应用等。

    RBD(Rados Block Device)功能特性也是基于LIBRADOS之上,通过LIBRBD创建一个块设备,通过QEMU/KVM附加到VM上,作为传统的块设备来用。目前OpenStack、CloudStack等都是采用这种方式来为VM提供块设备,同时也支持快照、COW(Copy On Write)等功能。

    Ceph FS(Ceph File System)功能特性是基于RADOS来实现分布式的文件系统,引入了MDS(Metadata Server),主要为兼容POSIX文件系统提供元数据。一般都是当做文件系统来挂载。

    2.ceph的数据读写流程

    Ceph的读/写操作采用Primary-Replica模型,客户端只向Object所对应OSD set的Primary OSD发起读/写请求,这保证了数据的强一致性。当Primary OSD收到Object的写请求时,它负责把数据发送给其他副本,只有这个数据被保存在所有的OSD上时,Primary OSD才应答Object的写请求,这保证了副本的一致性。

    3.使用ceph-deploy安装一个最少三个节点的ceph集群 推荐3个或以上的磁盘作为专用osd

    首先准备基础环境,我的三台虚拟机全部使用最小安装

    ceph1:192.168.121.147   每台主机准备四块磁盘,sda作为系统盘,其它三块作为ceph的OSD服务磁盘使用
    ceph2:192.168.121.148
    ceph3:192.168.121.149
    
    systemctl stop firewalld           
    systemctl disable firewalld     //关闭防火墙并设置开机不启动
    vim /etc/selimux/config
    selinux=disabled                //更改selinux的模式  
    hostnamectl set-hostname ceph1   //三台主机名分别设置为ceph1-3,注意这里使用短主机名
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    然后准备安装ceph集群的环境变量
    以下配置三台机器都需要设置

    vim /openrc                  //编辑一个文本
    export username="ceph-admin"     //安装时使用ceph-admin一般用户安装,这里设置一个变量方便后面调用    
    export passwd="ceph-admin"         
    export node1="ceph1"                   //设置主机名的环境变量
    export node2="ceph2"
    export node3="ceph3"
    export node1_ip="192.168.121.147"   //设置主机ip地址的环境变量
    export node2_ip="192.168.121.168"
    export node3_ip="192.168.121.149"
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    下载ceph的rpm源

    wget -O /etc/yum.repos.d/ceph.repo https://raw.githubusercontent.com/aishangwei/ceph-
    
    • 1

    demo/master/ceph-deploy/ceph.repo
    配置ntp

    yum install -y ntp ntpdate
    ntpdate cn.ntp.org.cn
    systemctl restart ntpd
    systemctl enable ntpd
    systemctl enable ntpdate
    
    • 1
    • 2
    • 3
    • 4
    • 5

    创建部署用户

    useradd  ${username}       //创建ceph-admin用户,用于集群部署
    echo "${passwd}"  | passwd --stdin ${username}
    echo "${username} ALL = (root) NOPASSWD:ALL"  | sudo tee /etc/sudoers.d/ceph-admin  //设置ceph-admin执	行特殊命令时的sudo权限
    chmod 0440  /etc/sudoers.d/ceph-admin   更该文件权限
    
    • 1
    • 2
    • 3
    • 4

    配置三台主机的主机名解析

    vim /etc/hosts
    192.168.121.147    ceph1                 
    192.168.121.148    ceph2
    192.168.121.149    ceph3
    
    • 1
    • 2
    • 3
    • 4

    配置三台主机的ssh免密钥登录

    su - ceph-admin
    ssh-keygen
    ssh-copy-id ceph-admin@ceph1
    ssh-copy-id ceph-admin@ceph2
    ssh-copy-id ceph-admin@ceph3
    
    • 1
    • 2
    • 3
    • 4
    • 5

    使用ceph-deploy部署集群
    安装ceph-deploy

    sudo yum install -y ceph-deploy python-pip //注意python-pip需要使用epel源,提前将epel源配置好
    mkdir  my-cluster      //创建安装目录
    cd my-cluster
    
    • 1
    • 2
    • 3

    进行节点部署

    ceph-deploy new ceph1 ceph2 ceph3    //这里务必要保证三台主机的网络是互通的
    
    • 1

    安装完之后my-cluster目录下面会生成三个文件
    ceph.conf
    ceph-deploy-ceph.log
    ceph.mon.keyring

    编辑ceph.conf配置文件,在最后添加一下信息

    sudo vim  ~/my-cluster/ceph.conf
    public network = 192.168.6.0/24
    cluster network = 192.168.6.0/24
    
    • 1
    • 2
    • 3

    安装ceph包

    sudo  yum install -y ceph ceph-radosgw         //三个节点上都要安装,这两个包需要使用epel源,
    
    • 1

    配置初始的monitor并收集所有密钥:

    ceph-deploy mon create-initial
    
    • 1

    把配置信息拷贝到各节

    ceph-deploy admin ceph1 ceph2 ceph3 
    
    • 1

    配置osd
    使用for循环语句执行(也可以写到文本中做成脚本执行)

    for dev in /dev/sdb  /dev/sdc /dev/sdd         //注意磁盘名称,可以使用lsblk命令进行查看
    do
        ceph-deploy disk zap ceph1 $dev
        ceph-deploy osd create ceph1 --data  $dev
        ceph-deploy disk zap ceph2 $dev
        ceph-deploy osd create ceph2 --data  $dev
        ceph-deploy disk zap ceph3 $dev
        ceph-deploy osd create ceph3 --data  $dev
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    配置完OSD之后,部署mgr用于监控整个集群

    ceph-deploy mgr create ceph1 ceph2 ceph3 
    
    • 1

    开启dashboard模块,启用浏览器界面
    在开启dashboard模块之前要注意,因为我们是使用ceph-admin一般用户进行安装,所有无法调用/etc/ceph/下面的文件,将/etc/ceph目录下面的文件属主属组全部更改为ceph-admin

    sudo chown -R ceph-admin /etc/ceph
    
    • 1

    然后加载dashboard模块

    ceph mgr module enable dashboard 
    
    • 1

    加载完模块之后查看7000号端口号是否正常监听

    ss -ntl 
    
    • 1

    打开浏览器输入192.168.121.147:7000查看ceph存储集群整体状况
    在这里插入图片描述

  • 相关阅读:
    力扣(LeetCode)218. 天际线问题(2022.08.06)
    main.jsError: error:0308010C:digital envelope routines::unsupported
    [NSSCTF 2022 Spring Recruit]easy C
    机器学习(三十六):随机梯度下降(SGD)算法
    《C 陷阱与缺陷 》阅读概要
    安信可Ai-WB1系列AT指令连接MQTT阿里云物联网平台
    栈的应用场景(二)
    【STM32-DSP库的使用】基于Keil5 + STM32CubeMX 手动添加、库添加方式
    【MFC】socket通信代码解析
    C++知识点大纲(期末理论复习用/南邮计科
  • 原文地址:https://blog.csdn.net/weijiajia123456/article/details/126211253