• Ceph分布式存储系统搭建


    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:     
     
    
  • 相关阅读:
    MYSQL-----IFNULL()函数的用法
    《你的灯亮着吗?》读书笔记
    《测试架构师修炼之路》阅读笔记第三章
    未记录书名的一本营销书阅读记录
    Spring注解@Component、@Repository、@Service、@Controller区别
    PropertyPlaceholderConfigurer的用法:
    Jackson Streaming API to read and write JSON
    ParameterizedType的作用
    setTimeOut传参数(转)
    mybatis使用count返回int的方法
  • 原文地址:https://www.cnblogs.com/Smbands/p/12688126.html
Copyright © 2020-2023  润新知