CentOS 7部署 Ceph分佈式存儲架構

1、概述

  隨着OpenStack日漸成爲開源雲計算的標準軟件棧,Ceph也已經成爲OpenStack的首選後端存儲。Ceph是一種爲優秀的性能、可靠性和可擴展性而設計的統一的、分佈式文件系統。
  ceph官方文檔 http://docs.ceph.org.cn/
  ceph中文開源社區 http://ceph.org.cn/node

  Ceph是一個開源的分佈式文件系統。由於它還支持塊存儲、對象存儲,因此很天然的被用作雲計算框架openstack或cloudstack整個存儲後端。固然也能夠單獨做爲存儲,例如部署一套集羣做爲對象存儲、SAN存儲、NAS存儲等。linux

ceph支持
  一、對象存儲:即radosgw,兼容S3接口。經過rest api上傳、下載文件。vim

  二、文件系統:posix接口。能夠將ceph集羣看作一個共享文件系統掛載到本地。後端

  三、塊存儲:即rbd。有kernel rbd和librbd兩種使用方式。支持快照、克隆。至關於一塊硬盤掛到本地,用法和用途和硬盤同樣。好比在OpenStack項目裏,Ceph的塊設備存儲能夠對接OpenStack的後端存儲api

Ceph相比其它分佈式存儲有哪些優勢?安全

  一、統一存儲
    雖然ceph底層是一個分佈式文件系統,但因爲在上層開發了支持對象和塊的接口。因此在開源存儲軟件中,可以一統江湖。至於能不能千秋萬代,就不知了。服務器

  二、高擴展性
    擴容方便、容量大。可以管理上千臺服務器、EB級的容量。網絡

  三、可靠性強
    支持多份強一致性副本,EC。副本可以垮主機、機架、機房、數據中心存放。因此安全可靠。存儲節點能夠自管理、自動修復。無單點故障,容錯性強。框架

  四、高性能
    由於是多個副本,所以在讀寫操做時候可以作到高度並行化。理論上,節點越多,整個集羣的IOPS和吞吐量越高。另一點ceph客戶端讀寫數據直接與存儲設備(osd) 交互。運維


Ceph各組件介紹:
  •Ceph OSDs: Ceph OSD 守護進程( Ceph OSD )的功能是存儲數據,處理數據的複製、恢復、回填、再均衡,並經過檢查其餘OSD 守護進程的心跳來向 Ceph Monitors 提供一些監控信息。當 Ceph 存儲集羣設定爲有2個副本時,至少須要2個 OSD 守護進程,集羣才能達到 active+clean 狀態( Ceph 默認有3個副本,但你能夠調整副本數)。
  •Monitors:  Ceph Monitor維護着展現集羣狀態的各類圖表,包括監視器圖、 OSD 圖、歸置組( PG )圖、和 CRUSH 圖。 Ceph 保存着發生在Monitors 、 OSD 和 PG上的每一次狀態變動的歷史信息(稱爲 epoch )。
  •MDSs:  Ceph 元數據服務器( MDS )爲 Ceph 文件系統存儲元數據(也就是說,Ceph 塊設備和 Ceph 對象存儲不使用MDS )。元數據服務器使得 POSIX 文件系統的用戶們,能夠在不對 Ceph 存儲集羣形成負擔的前提下,執行諸如 ls、find 等基本命令。

2、Ceph實驗集羣部署

 1. 主機準備 (禁用selinux, 關閉防火牆)

  xuegod67    10.10.10.67    admin,osd, mon   做爲管理和監控節點
  xuegod68    10.10.10.68    osd,mds
  xuegod69    10.10.10.69    osd,mds
  xuegod70    10.10.10.70    client

  #xuegod67做管理. osd. mon節點;   xuegod68和69做osd mds;  xuegod70客戶端
  前三臺服務器增長一塊硬盤/dev/sdb實驗, 建立目錄並掛載到/var/local/osd{0,1,2}

[root@xuegod67 ~]# mkfs.xfs  /dev/sdb
[root@xuegod67 ~]# mkdir -p /var/local/osd0
[root@xuegod67 ~]# mount /dev/sdb  /var/local/osd0/
[root@xuegod68 ~]# mkfs.xfs  /dev/sdb
[root@xuegod68 ~]# mount /dev/sdb  /var/local/osd1/
[root@xuegod69 ~]# mkfs.xfs  /dev/sdb
[root@xuegod69 ~]# mount /dev/sdb  /var/local/osd2/

2. 編輯hosts文件

(規範系統主機名添加hosts文件實現集羣主機名與主機名之間相互可以解析(host 文件添加主機名不要使用fqdn方式)可用hostnamectl set-hostname name設置
分別打開各節點的/etc/hosts文件,加入這四個節點ip與名稱的對應關係
  10.10.10.67    xuegod67
  10.10.10.68    xuegod68
  10.10.10.69    xuegod69
  10.10.10.70    xuegod70
SSH免密碼登陸
在管理節點使用ssh-keygen 生成ssh keys 發佈到各節點

[root@xuegod67 ~]# ssh-keygen #全部的輸入選項都直接回車生成。
 
[root@xuegod67 ~]# ssh-copy-id xuegod67
[root@xuegod67 ~]# ssh-copy-id xuegod68
[root@xuegod67 ~]# ssh-copy-id xuegod69
[root@xuegod67 ~]# ssh-copy-id xuegod70

3. 管理節點安裝ceph-deploy工具

第一步:增長 yum配置文件(各個節點都須要增長yum源)

[root@xuegod67 ~]#vim /etc/yum.repos.d/ceph.repo
 
添加如下內容:(ceph國內163源)
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/x86_64
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1
 
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1
 
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.163.com/ceph/rpm-jewel/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=http://mirrors.163.com/ceph/keys/release.asc
priority=1
 
第二步:更新軟件源並安裝ceph-deploy 管理工具
[root@xuegod67 ~]# yum clean all && yum list
[root@xuegod67 ~]# yum -y install ceph-deploy

4.建立monitor服務

[root@xuegod67 ~]# mkdir /etc/ceph && cd /etc/ceph
[root@xuegod67 ceph]#  ceph-deploy new xuegod67    #mon安裝在xuegod67節點
[root@xuegod67 ceph]# ls                                #生成配置文件在當前目錄下
ceph.conf  ceph.log  ceph.mon.keyring
Ceph配置文件、一個monitor密鑰環和一個日誌文件

5.修改副本數

[root@xuegod67 ceph]# vim ceph.conf 配置文件的默認副本數從3改爲2,這樣只有兩個osd也能達到active+clean狀態,把下面這行加入到[global]段(可選配置)
[global]
fsid = 92f5581d-79d2-4c9f-a523-4965eedc846b
mon_initial_members = xuegod67
mon_host = 10.10.10.67
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd_pool_default_size = 2

6.在全部節點安裝ceph

(若是網絡源安裝失敗,手工安裝epel-release 而後安裝yum –yinstall cep-release再yum –y install ceph ceph-radosgw)

[root@xuegod67 ceph]# ceph-deploy install xuegod67 xuegod68 xuegod69 xuegod70
安裝ceph monitor
[root@xuegod67 ceph]# ceph-deploy mon create xuegod67
 
收集節點的keyring文件
[root@xuegod67 ceph]# ceph-deploy  gatherkeys xuegod67

7.部署osd服務

添加osd節點 (全部osd節點執行)

咱們實驗準備時已經建立目錄/var/local/osd{id}

8.建立激活osd

#建立osd 
[root@xuegod67 ceph]# ceph-deploy osd prepare xuegod67:/var/local/osd0 xuegod68:/var/local/osd1 xuegod69:/var/local/osd2
#激活osd 
[root@xuegod67 ceph]# ceph-deploy osd activate xuegod67:/var/local/osd0 xuegod68:/var/local/osd1 xuegod69:/var/local/osd2
若是報錯

  

解決:在各個節點上給/var/local/osd1/和/var/local/osd2/添加權限
以下:
  chmod 777 -R /var/local/osd1/
  chmod 777 -R /var/local/osd2/*

查看狀態:
[root@xuegod67 ceph]# ceph-deploy osd list xuegod67 xuegod68 xuegod69

9.統一配置

(用ceph-deploy把配置文件和admin密鑰拷貝到全部節點,這樣每次執行Ceph命令行時就無需指定monitor地址和ceph.client.admin.keyring了)
[root@xuegod67 ceph]# ceph-deploy admin xuegod67 xuegod68 xuegod69
 
各節點修改ceph.client.admin.keyring權限:
[root@xuegod67 ceph]#chmod +r /etc/ceph/ceph.client.admin.keyring

10.查看osd狀態

[root@xuegod67 ceph]# ceph health 或 ceph -s
HEALTH_OK

11.部署mds服務

[root@xuegod67 ceph]# ceph-deploy mds create xuegod68 xuegod69 #咱們MDS安裝2臺
[root@xuegod67 ceph]# ceph mds stat #查看狀態

12.集羣狀態

[root@xuegod67 ceph]# ceph -s

以上基本上完成了ceph存儲集羣的搭建。

三 、建立ceph文件系統

[root@xuegod67 ceph]# ceph fs ls   #建立以前
No filesystems enabled
建立存儲池
[root@xuegod67 ceph]# ceph osd pool create cephfs_data <pg_num> 
[root@xuegod67 ceph]# ceph osd pool create cephfs_metadata <pg_num>

其中:<pg_num> = 128 ,
關於建立存儲池
肯定 pg_num 取值是強制性的,由於不能自動計算。下面是幾個經常使用的值:
  *少於 5 個 OSD 時可把 pg_num 設置爲 128
  *OSD 數量在 5 到 10 個時,可把 pg_num 設置爲 512
  *OSD 數量在 10 到 50 個時,可把 pg_num 設置爲 4096
  *OSD 數量大於 50 時,你得理解權衡方法、以及如何本身計算 pg_num 取值
  *本身計算 pg_num 取值時可藉助 pgcalc 工具
隨着 OSD 數量的增長,正確的 pg_num 取值變得更加劇要,由於它顯著地影響着集羣的行爲、以及出錯時的數據持久性(即災難性事件致使數據丟失的機率)。 

1. 建立文件系統

建立好存儲池後,你就能夠用 fs new 命令建立文件系統了

[root@xuegod67 ceph]# ceph fs new <fs_name> cephfs_metadata cephfs_data 
其中:<fs_name> = cephfs  可自定義
 
[root@xuegod67 ceph]# ceph fs ls              #查看建立後的cephfs
[root@xuegod67 ceph]# ceph mds stat          #查看mds節點狀態
e6: 1/1/1  up  {0=xuegod69=up:active}, 1  up:standby
active是活躍的,另1個是處於熱備份的狀態

2.掛載Ceph文件系統

有不一樣掛載方式

A.內核驅動掛載Ceph文件系統

[root@xuegod70 ceph]# mkdir /opt #建立掛載點
存儲密鑰(若是沒有在管理節點使用ceph-deploy拷貝ceph配置文件)
cat /etc/ceph/ceph.client.admin.keyring
將key對應的值複製下來保存到文件:/etc/ceph/admin.secret中。
掛載
[root@xuegod70 ceph]# mount -t ceph 10.10.10.67:6789:/ /opt -o name=admin,secretfile=/etc/ceph/admin.secret
取消掛載
[root@xuegod70 ceph]# umount /opt

B.用戶控件掛載Ceph文件系統

安裝ceph-fuse
[root@xuegod70 ceph]# yum install -y ceph-fuse
掛載
[root@xuegod70 ceph]# ceph-fuse -m 10.10.10.67:6789 /opt
取消掛載
[root@xuegod70 ceph]# fusermount -u /opt

ceph在開源社區仍是比較熱門的,可是更多的是應用於雲計算的後端存儲。因此大多數在生產環境中使用ceph的公司都會有專門的團隊對ceph進行二次開發,ceph的運維難度也比較大。可是通過合理的優化以後,ceph的性能和穩定性都是值得期待的。


關於其餘:
  清理機器上的ceph相關配置:
  中止全部進程: stop ceph-all
  卸載全部ceph程序:ceph-deploy uninstall [{ceph-node}]
  刪除ceph相關的安裝包:ceph-deploy purge {ceph-node} [{ceph-data}]
  刪除ceph相關的配置:ceph-deploy purgedata {ceph-node} [{ceph-data}]
  刪除key:ceph-deploy forgetkeys

  卸載ceph-deploy管理:yum -y remove ceph-deploy

相關文章
相關標籤/搜索