• linux运维、架构之路-分布式存储Ceph


    一、Ceph介绍

           Ceph是一个Linux PB级分布式文件系统,能够在维护POSIX兼容性的同时加入了复制和容错功能。Ceph号称高可用的分布式存储系统,通过多个MON节点(通常为3个)维护集群的状态及元数据信息,而真正存储数据的OSD节点通过向MON节点汇报状态,并通过CRUSH算法将数据副本布局到相应OSD的所在磁盘上,完成数据的持久化存储。为了保证每个数据副本的高可用,通常采用三副本或EC方式。而提供文件服务的mds组件和提供对象存储的rgw组件都不存储实际数据,只是作为服务态进程存在。Ceph可以提供对象存储RODOSGW、块存储RBD、文件系统存储Ceph FS 三种功能。

    二、Ceph特点

            可轻松扩展到PB容量,对多种工作负载的高性能(每秒输入/输出操作[IOPS]和带宽),高可靠性。Ceph开发了一些非常有趣的概念(例如,动态元数据分区,数据分布和复制)。ceph的设计还保护单一点的故障容错功能,它假设大规模(PB级别存储)存储故障是常见现象而不是例外情况。它的设计并没有假设某种特殊工作负载,但是包括适应变化的工作负载,提供最佳性能的能力。

    三、Ceph组件介绍

    组件概念
    Monitor 一个Ceph集群需要多个Monitor组成的小集群,它们通过Paxos同步数据,用来保存OSD的元数据
    OSD OSD负责相应客户端请求返回具体数据的进程,一个Ceph集群一般都有很多个OSD
    MSD MSD 全称Cepg Metadata Service,是CephFs服务依赖的元数据服务
    Object Ceph最底层的存储单位是Object对象,每个Object包含元数据和原始数据
    PG PG全称Placement Groups,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据
    RADOS 是Ceph集群的精华,为用户实现数据分配,Failover等集群操作
    Libradio Libradio是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFs都是通过librados访问的目前提供PHP、Ruby、Java、Python等支持
    CRUSH CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。
    RBD RBD全称RADOS block device,是Ceph对外提供的块设备服务
    Image RBD image是简单的块设备,可以直接被mount到主机,成为一个device,用户可以直接写入二进制数据。image的数据被保存为若干个RADOS对象存储中的对象;image的数据空间是thin provision的,意味着Ceph不预分配空间,而是等到实际写入数据时按照object分配空间;每个data object被保存为多份。pool将RBD镜像的ID和name等基本信息保存在rbd_directory中,这样rbd ls命令就可以快速返回一个pool中所有的RBD镜像了 
    RGW RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容
    CephFs CephFs全称Ceph File System,是Ceph对外提供的文件系统服务
    Pool pool是Ceph存储时的逻辑分区,它起到namespace的作用

    四、Ceph部署

    1、服务器规划

    系统

    IP地址

    主机名

    部署服务

    配置

    CentOS  7.5

    192.168.56.10

    Ceph-deploy

    Ceph、Ceph-deploy、Mon

    2C/2G

    CentOS  7.5

    192.168.56.11

    ceph01

    Ceph

    2C/2G

    CentOS  7.5

    192.168.56.12

    ceph02

    Ceph

    2C/2G

    2、环境初始化

    • Ceph-deploy版本: 1.5.39
    • Ceph版本: 10.2.11
    • 系统版本:7.5.1804 (Core)
    • 内核版本:3.10.0-862.el7.x86_64

    关闭selinux、iptables

    systemctl stop firewalld
    systemctl disable firewalld
    setenforce 0
    sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
    setenforce 0

    设置时间同步

    yum -y install ntp
    systemctl enable ntpd
    systemctl start ntpd
    ntpdate -u cn.pool.ntp.org
    hwclock --systohc
    timedatectl set-timezone Asia/Shanghai

    修改主机名、host

    hostnamectl set-hostname Ceph-deploy && bash
    hostnamectl set-hostname ceph01 && bash
    hostnamectl set-hostname ceph02 && bash
    
    cat >> /etc/hosts <<EOF
    192.168.56.10 Ceph-deploy
    192.168.56.11 ceph01
    192.168.56.12 ceph02
    EOF

    ④设置yum源

    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
    wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    yum clean all && yum makecache

    ⑤设置

    成功最有效的方法就是向有经验的人学习!
  • 相关阅读:
    前端常见跨域解决方案(全)
    小程序动画wx.createAnimation
    判断对象是否有某个属性
    占位符
    vue起航——搭建脚手架
    微信小程序-携带参数转发分享页面
    JS获取地址栏参数
    微信小程序wx:if vs hidden
    小程序websocket(心跳连接)
    初识websocket
  • 原文地址:https://www.cnblogs.com/yanxinjiang/p/14422644.html
Copyright © 2020-2023  润新知