Ceph分佈式存儲的搭建(增加mon節點、模擬osd節點故障恢復)

一、Ceph分佈式存儲

1.1、Ceph文件系統簡述

  • 聖克魯茲加利福尼亞大學的Sage Weil在2003年開發CEPH,CEPH是一個開源的項目,其可大規模擴展、高性能並且無單點故障的分佈式存儲系統。從一開始它就運行在通用的商用的硬件上,具有高度的可伸縮性,容量可擴展至EB級別,甚至更大。

  • ceph是一種開源存儲軟件。 底層實現了對象存儲,並以此爲基礎對外提供對象存儲接口、塊存儲接口、文件級存儲接口。

1.2、Ceph的優點

  • 1.CRUSH算法,CRUSH在一致性哈希基礎上很好的考慮了容災域的隔離,能夠實現各類負載的副本放置規則,例如跨機房、機架感知等。同時, CRUSH算法支持副本和EC兩種數據冗餘方式,還提供了四種不同類型的Bucket(Uniform, List, Tree, Straw),充分考慮了實際生產過程中硬件的迭代式部署方式,雖然實際生產中大多數情況下的都是隻用了一種Straw。

  • 2.統一存儲架構
    由於雲計算的發展,RADOS出色而又簡潔的接口,非常高效的支持分佈式塊存儲RBD和分佈式對象存儲RADOS GateWay。由於RBD和RADOS GateWay的簡單設計無需考慮,容災備份、橫向擴展、負載均衡等分佈式架構的負載因素。所以受到社區的認可,併成爲openstack的底層存儲方式。

  • 3.強大且豐富的功能
    CEPH的功能,從分佈式系統最基本的橫向擴展、動態伸縮、冗餘容災、負載平衡等,到生產環境環境中非常實用的滾動升級、多存儲池、延遲刪除等幾乎什麼都能做。所以受到雲計算等企業的青睞。但是也有CEPHfs雖然有快照、糾錯碼、跨存儲池等功能,卻因爲一直收到忽視,無法用在生產環境中。

二、Ceph架構和名稱解釋

2.1、Ceph架構

在這裏插入圖片描述

  • RADOS:代表了CEPH集羣中的硬件和軟件的集合。
  • RGW、RBD、CEPH FS代表了三種客戶端:RGW代表了對象存儲的網關,即對象存儲接口。RBD代表了塊存儲的接口。CEPH FS代表了文件系統存儲的接口。用戶只有通過這三種接口才能將數據存儲在RADOS中。

2.2、Ceph集羣組件

  • 1.OSD:OSD對象存儲進程,每塊硬盤擁有一個osd進程,管理數據的副本、恢復和負載均衡等,並且向mon組件提供底層監控信息。
  • 2.CEPH-mgr:用於收集ceph集羣狀態、運行指標,比如存儲利用率、當前性能指標和系統負載。mgr組件實現高可用至少需要2個作爲主備。
  • 3.MDS:在存儲時存儲數據的元信息,用於文件系統存儲。對象存儲和塊存儲不需要此組件。
  • 4.MON:負責監控集羣中自身和其他組件的健康信息。並且負責集羣的驗證,即用戶需要在mon組件上進行身份驗證。爲了確保組件的高可用需要至少開啓3個mon組件。

三、Ceph的存儲過程

CEPH集羣在存儲數據時,都是進行扁平化處理,Object作爲集羣最小的存儲單位。
在這裏插入圖片描述
ceph在對象存儲的基礎上提供了更加高級的思想。當對象數量達到了百萬級以上,原生的對象存儲在索引對象時消耗的性能非常大。ceph因此引入了placement group (pg) 的概念。一個PG就是一組對象的集合。
在這裏插入圖片描述

四、Ceph搭建過程

4.1、環境準備

1.準備三臺centos7虛擬機。
2.每臺虛擬機安裝兩塊網卡,一塊僅主機模式,一塊nat模式。
3.準備兩塊硬盤,一塊系統盤,另一塊作爲ceph使用大小1024G。

  • 配置IP地址
主機名 VM1網段 NAT網段
ceph01 192.168.10.101 192.168.100.101
ceph02 192.168.10.102 192.168.100.102
ceph03 192.168.10.103 192.168.100.103

4.2、搭建集羣前的配置

每個節點都要操作,步驟一樣
1、每個節點的修改主機名,和hosts文件

hostnamectl set-hostname ceph01
hostnamectl set-hostname ceph02
hostnamectl set-hostname ceph03

vi /etc/hosts
192.168.10.101    ceph01
192.168.10.102    ceph02
192.168.10.103    ceph03

2、關閉UseDNS,用CRT連接可以快一點

vi /etc/ssh/sshd_config
115/UseDNS no    

3、關閉防火牆和核心防護

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
vi /etc/selinux/config
SELINUX =disabled

4、三個節點創建免交互

ssh-keygen
ssh-copy-id root@ceph01
ssh-copy-id root@ceph02
ssh-copy-id root@ceph03

5、配置YUM源

cd /etc/yum.repos.d/
mkdir backup
mv C* backup

//安裝wget命令,方便下載新的yum源。
yum install wget -y

//用wget命令下載新的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

//配置ceph源
vi /etc/yum.repos.d/ceph.repo
[ceph]
name=Ceph packages for
baseurl=https://mirrors.aliyun.com/ceph/rpm-mimic/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirrors.aliyun.com/ceph/keys/release.asc
priority=1

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

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

//更新源
 yum update -y

4.3、安裝ceph集羣

1.首先安裝好相應的工具

//ceph01節點
yum install ceph-deploy ceph python-setuptools -y

//ceph02、ceph03節點
yum install ceph python-setuptools -y

//每個節點都創建目錄
mkdir /etc/ceph

2、在ceph01創建mon服務,並初始化監控和祕鑰

cd /etc/ceph
ceph-deploy new ceph01 ceph02 

在這裏插入圖片描述

ceph-deploy mon create-initial

3、在ceph01創建osd服務

ceph-deploy osd create --data /dev/sdb ceph01
ceph-deploy osd create --data /dev/sdb ceph02
ceph -s   ##查看狀態有2個osd

在這裏插入圖片描述
4、下發admin祕鑰到所有節點之中,並增加執行權限

//在ceph01下發
ceph-deploy admin ceph01 ceph02

//ceph01、ceph02、ceph03節點添加
chmod +x /etc/ceph/ceph.client.admin.keyring

4.4、Ceph擴容操作

1、首先將osd加入到集羣之中

ceph-deploy osd create --data /dev/sdb ceph03

在這裏插入圖片描述
2、將擴容節點的mon服務加入到集羣。

ceph-deploy mon add ceph03

//手動修改ceph01的配置文件
vi /etc/ceph/ceph.conf

在這裏插入圖片描述
下發配置給所有節點,進行覆蓋原有配置

ceph-deploy --overwrite-conf config push ceph01 ceph02 ceph03

重啓三個節點mon服務

systemctl restart ceph-mon.target

通過ceph -s 查看添加成功!
在這裏插入圖片描述
安裝mgr服務之後,集羣健康狀態

ceph-deploy mgr create ceph01 ceph02 ceph03

4.5、模擬故障osd恢復

1、首先模擬故障,將一個osd從集羣中移除

移除osd,刪除osd,刪除osd認證
ceph osd out osd.2
ceph osd crush remove osd.2
ceph auth del osd.2   

#重啓所有節點osd服務,osd.2就down掉了
systemctl restart ceph-osd.target

在這裏插入圖片描述
2、恢復osd到集羣中

//在ceph03節點,查看ceph位置信息
df -hT
顯示位置信息:
tmpfs          tmpfs     910M   52K  910M    1% /var/lib/ceph/osd/ceph-2

//查看/var/lib/ceph/osd/ceph-2的fsid
[root@ceph03 ~]# cd /var/lib/ceph/osd/ceph-2
[root@ceph03 ceph-2]# more fsid
57df2d3e-2f53-4143-9c3f-5e98d0ae619b

//重新添加osd進入集羣
[root@ceph03 ceph-2]# ceph osd create 57df2d3e-2f53-4143-9c3f-5e98d0ae619b

//重新添加認證權限
[root@ceph03 ceph-2]#  ceph auth add osd.2 osd 'allow *' mon 'allow rwx' -i /var/lib/ceph/osd/ceph-2/keyring

//設置ceph03的權重,ceph osd crush add osdID號 權重 host=主機名
[root@ceph03 ceph-2]# ceph osd crush add 2 0.99899 host=ceph03

//將osd加入集羣
[root@ceph03 ceph-2]# ceph osd in osd.2

//重啓所有節點的osd服務
systemctl restart ceph-osd.target

通過ceph osd tree查看,ceph03的osd節點已經恢復了
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章