CEPH的基本概念及通過Ceph-Deploy快速部署CEPH集群
**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
RDB:通過Linux內核客戶端和qemu-kvm驅動,來提供一個完全分布式的塊設備
Ceph FS:兼容POSIX的文件系統
Ceph組件和RADOS的關系
ceph存儲邏輯上大致分為4個部分,RADOS基礎存儲系統,基於RADOS的cephFS,基於RADOS的LIBRADOS應用接口, 基於LIBRADOS的應用接口RBD。
- 基礎存儲系統RADOS:
本身是一個完整的對象文件系統,用戶的數據由這一層來進行存儲,物理上,由每一個節點組成。 - 基礎庫LIBRADOS:
這一層,將RADOS的功能進行抽象和封裝,向上提供API。物理上,基於LIBRADOS開發的應用,與LIBRADOS位於同一臺物理機上,應用通過調用本地的API,再有API通過SOCKET套接子與RADOS的節點進行通信,完成各種操作。 - 上層應用接口:
上層應用接口包括RADOSGW,RDB和ceph FS,其中除了CEPH FS,其余基於LIBRADOS庫的基礎上進一步進行抽象。 - 應用層:就是一些應用
- 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的數量,權重,狀態等信息。
(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源:
- 創建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
- 更新源並安裝:
yum update &&yum install ceph-deploy -y
- 創建目錄,存放部署過程中生成的配置文件
mkdir ceph
cd ceph - 創建集群,部署新的monitor:
ceph-deploy new {initial-monitor-node(s)}
如:ceph-deploy new hostname1 hostname2..... - 安裝ceph到各個節點:
ceph-deploy install hostname1 hostname2.....
- 獲取秘鑰key,創建的目錄下會生成key
ceph-deploy mon create-initial
- 初始化磁盤:
ceph-deploy disk zap node1:sdb
- 準備OSD:
ceph-deploy osd prepare node1:sdb1:....
- 激活OSD:
ceph-deploy osd activate node1:sdb1:......
- 分發KEY:
ceph-deploy admin node1 node2 node3
- adminkey賦權限
chmod +r etcceph/ceph.client.admin.keyri
- 查看集群狀態:
ceph health
CEPH的基本概念及通過Ceph-Deploy快速部署CEPH集群