1. 程式人生 > >CEPH的基本概念及通過Ceph-Deploy快速部署CEPH集群

CEPH的基本概念及通過Ceph-Deploy快速部署CEPH集群

linux內核 health 初始化 nali 部署過程 本地 journal 內核 端到端

基礎概念
**OSD**:Object Storage Device,主要用於存儲數據,處理數據,,恢復,回不,平衡數據,並提供數據給monitor。
**Monitor**:Ceph監視器,主要用於集群健康狀態維護,提供策略,包含Monitor Map ,OSD Map,PG ma和CRUSH MAP
**MSD**:Cpeh Metadata Server,主要保存ceph文件系統的元數據,快存儲,對象存儲不需要MSD。

Ceph的架構
核心組件RADOS,如架構圖
技術分享圖片

RADOS:具備自我修復的特性,提供一個可靠,自動,智能的分布式存儲
LIBRADOS:庫文件,支持應用程序直接訪問
RADOSGW

:基於當前流行的RESTful協議的網關,並且兼容S3和Swift
RDB:通過Linux內核客戶端和qemu-kvm驅動,來提供一個完全分布式的塊設備
Ceph FS:兼容POSIX的文件系統


Ceph組件和RADOS的關系

技術分享圖片
ceph存儲邏輯上大致分為4個部分,RADOS基礎存儲系統,基於RADOS的cephFS,基於RADOS的LIBRADOS應用接口, 基於LIBRADOS的應用接口RBD。

  1. 基礎存儲系統RADOS:
    本身是一個完整的對象文件系統,用戶的數據由這一層來進行存儲,物理上,由每一個節點組成。
  2. 基礎庫LIBRADOS:
    這一層,將RADOS的功能進行抽象和封裝,向上提供API。物理上,基於LIBRADOS開發的應用,與LIBRADOS位於同一臺物理機上,應用通過調用本地的API,再有API通過SOCKET套接子與RADOS的節點進行通信,完成各種操作。
  3. 上層應用接口:
    上層應用接口包括RADOSGW,RDB和ceph FS,其中除了CEPH FS,其余基於LIBRADOS庫的基礎上進一步進行抽象。
  4. 應用層:就是一些應用
  5. RADOS:主要有OSD和MOnitor組成
    (1). Monitor:監控整個集群的運行狀況,包括節點的狀態,集群的配置信息等,如monitor map,osd map,MDS map和CRUSH map。
    (a).Monitor Map:記錄著monitor節點端到端的信息,其中包括集群ID,監控主機IP和端口等信息。
    查看Monitor的map: # ceph mon dump
    (b).OSD Map:記錄一下信息,如集群ID,創建OSD Map的版本信息和修改信息,pool的信息(pool的名稱,ID,類型,副本數目等),OSD的數量,權重,狀態等信息。
    查看OSD的MAP:# ceph osd dump
    (c).PG Map:記錄PG的版本,時間戳,最新的OSD Map版本信息,空間使用比例等,還有PF ID,對象數目,狀態,等。
    查看PG Map: # ceph pg dump
    (d).CRUSH Map:集群存儲設備信息,故障域層次結構和存儲數據時定義,失敗域規則信息。
    查看CRUSH Map: # ceph osd crush dump
    (e).MDS Map:存儲當前MDS Map的版本信息、創建當前Map的信息、修改時間、數據和元數據POOL ID、集群MDS數目和MDS狀態.
    查看MDS Map: # ceph mds dump
    註:monitor節點需要需要足夠的磁盤來存儲集群的日誌文件
    Monitor集群中,集群節點的數為奇數,其中一個節點為Leader,用作監視器節點,當Leader不可用時,剩余的節點都可以成為leader,保證集群中至少有N/2個監控節點高可用
    (2).OSD:OSD將數據以對象的形式存儲在集群中的每個節點的物理磁盤上。
    客戶端從monitor拿到CLUSTER Map信息之後,直接與OSD進行交互進行數據的讀寫。
    在OSD的上的每個對象都有一個主副本和若幹個從副本,每個OSD及是某個對象的主OSD,也可能是某個對象的從OSD,從OSD收到主OSD的控制,當主OSD故障時,從OSD 成為主OSD,從新生成副本。
    ceph支持的文件系統:BTRFS,XFS,EXT4
    journal的存在能夠減緩緩存突發負載,ceph寫入數據時首先寫入日誌,然後在寫入後備文件系統。

Ceph的Ceph-Deploy部署

此工具通過ssh在遠程上執行一系列腳本來完成部署,ceph為遠程主機
配置YUM源:

  1. 創建yum源:
    [Ceph]
    name=Ceph packages for $basearch
    baseurl=http://mirrors.aliyun.com/ceph/rpm-infernalis/el7/$basearch
    enabled=1
    gpgcheck=1
    type=rpm-md
    gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
    priority=1

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-infernalis/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-infernalis/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

  1. 更新源並安裝:

    yum update &&yum install ceph-deploy -y

  2. 創建目錄,存放部署過程中生成的配置文件

    mkdir ceph
    cd ceph

  3. 創建集群,部署新的monitor:

    ceph-deploy new {initial-monitor-node(s)}
    如:ceph-deploy new hostname1 hostname2.....

  4. 安裝ceph到各個節點:

    ceph-deploy install hostname1 hostname2.....

  5. 獲取秘鑰key,創建的目錄下會生成key

    ceph-deploy mon create-initial

  6. 初始化磁盤:

    ceph-deploy disk zap node1:sdb

  7. 準備OSD:

    ceph-deploy osd prepare node1:sdb1:....

  8. 激活OSD:

    ceph-deploy osd activate node1:sdb1:......

  9. 分發KEY:

    ceph-deploy admin node1 node2 node3

  10. adminkey賦權限

    chmod +r etcceph/ceph.client.admin.keyri

  11. 查看集群狀態:

    ceph health

CEPH的基本概念及通過Ceph-Deploy快速部署CEPH集群