1. [ ceph ] 基本概念、原理、架构介绍
  2. ceph-deploy部署ceph集群_文件存储

  3. 三种存储类型
    块设备:主要是将裸磁盘空间映射给主机使用,类似于SAN存储,使用场景主要是文件存储,日志存储,虚拟化镜像文件等。
    文件存储:典型代表:FTP 、NFS 为了克服块存储无法共享的问题,所以有了文件存储。
    对象存储:具备块存储的读写高速和文件存储的共享等特性并且通过 Restful API 访问,通常适合图片、流媒体存储。
  4. Ceph 支持三种接口
    Object:有原生的API,而且也兼容 Swift 和 S3 的 API
    Block:支持精简配置、快照、克隆
    File:Posix 接口,支持快照
  5. Ceph 核心组件及概念介绍
    Monitor:一个 Ceph 集群需要多个 Monitor 组成的小集群,它们通过 Paxos 同步数据,用来保存 OSD 的元数据。
    OSD:OSD 全称 Object Storage Device,也就是负责响应客户端请求返回具体数据的进程,一个Ceph集群一般有很多个OSD。
    CRUSH:CRUSH 是 Ceph 使用的数据分布算法,类似一致性哈希,让数据分配到预期的位置。
    PG:PG全称 Placement Groups,是一个逻辑的概念,一个PG 包含多个 OSD 。引入 PG 这一层其实是为了更好的分配数据和定位数据。
    Object:Ceph 最底层的存储单元是 Object对象,每个 Object 包含元数据和原始数据。
    RADOS:实现数据分配、Failover 等集群操作。
    Libradio:Libradio 是RADOS提供库,因为 RADOS 是协议,很难直接访问,因此上层的 RBD、RGW和CephFS都是通过libradios访问的,目前提供 PHP、Ruby、Java、Python、C 和 C++的支持。
    MDS:MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。
    RBD:RBD全称 RADOS Block Device,是 Ceph 对外提供的块设备服务。
    RGW:RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容。
    CephFS:CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。
  6. Ceph IO流程及数据分布
  7. ceph-deploy部署ceph集群_文件存储_02

ceph-deploy部署ceph集群_客户端_03

  1. 步骤
    6.1 client 创建cluster handler。
    6.2 client 读取配置文件。
    6.3 client 连接上monitor,获取集群map信息。
    6.4 client 读写io 根据crushmap 算法请求对应的主osd数据节点。
    6.5 主osd数据节点同时写入另外两个副本节点数据。
    6.6 等待主节点以及另外两个副本节点写完数据状态。
    6.7 主节点及副本节点写入状态都成功后,返回给client,io写入完成。

部署集群
注意:安装ceph集群之前要修改所有服务器主机名并修改/etc/hosts文件(如果安装了k8s集群就不用配置了)

环境:

node1 - osd节点和mon节点 (添加磁盘随意1-n)
node2 - osd节点和mon节点 (添加磁盘随意1-n)      
node3 - osd节点和mon节点 (添加磁盘随意1-n)
master2 - client 客户端访问节点 
master1 - 部署节点(deploy)、MDS节点、osd (添加磁盘随意1-n)

一.关闭防火墙 略(所有节点)

二.关闭selinux 略(所有节点)

三.配置服务器master1到node3的免密登陆

四.添加磁盘并格式化(除了客户端)

五.所有节点创建ceph用户(这步不需要可以忽略,随意)

useradd cephfsd
echo "miller" |passwd cephfsd --stdin
echo "cephfsd ALL = (root,ceph) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephfsd
chmod 0440 /etc/sudoers.d/cephfsd

六.所有节点添加yum源

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
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/noarch
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-luminous/el7/SRPMS
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

七.在master1部署节点切换ceph用户,没创建的不用切换,直接用root

su - cephfsd

八.在所有节点安装依赖包

yum -y install epel-release
yum -y install ceph ceph-radosgw ceph-deploy
yum -y install htop sysstat iotop iftop ntpdate net-tools

九.在mastert1节点部署ceph集群

ceph-deploy new node1 node2 node3              (初始化集群配置)
ls -l

ceph-deploy部署ceph集群_文件存储_04

vim ceph.conf                                  (配置文件增加内容)
   
[global]
fsid = 54a9ee80-2339-407d-8fb8-e0b04480b132                             ## 集群ID
mon_initial_members = ceph-node1, ceph-node2, ceph-node3                ## mon节点信息
mon_host = 192.168.4.81,192.168.4.83,192.168.4.84                       ## mon节点ip
auth_cluster_required = cephx 
auth_service_required = cephx
auth_client_required = cephx                                            ## auth = cephx 开启认证
   
osd_pool_default_size = 2                                               ## 集群副本数
osd_pool_default_min_size = 1                                           ## 集群最小副本数
mon_osd_full_ratio = .95                                                ## osd使用率

ceph-deploy部署ceph集群_文件存储_05

ceph-deploy mon create-initial                       (创建monitor)
ls -l

ceph-deploy部署ceph集群_数据_06

ceph-deploy admin node1 node2 node3                  (分发集群keyring)
 
ceph-deploy mgr create node1 node2 node3             (创建mgr)

ceph-deploy osd create --data /dev/sdb node1         (创建osd)

十.查看集群是否成功(不能使用部署节点和客户端节点查看,切换到集群节点node1-node3)

ceph -s

ceph-deploy部署ceph集群_客户端_07

备注:出现health_ok代表集群健康 (到此ceph集群部署完成)