Ceph分佈式存儲(一)

Ceph分佈式存儲(一)


一、概述
Ceph是可靠的、可擴展的、統一的、分佈式的存儲系統。可以同時提供對象存儲RADOSGW(Reliable、Autonomic、Distributed、Object Storage Gateway)、塊存儲RBD(Rados Block Device)、文件系統存儲Ceph FS(Ceph Filesystem)3種功能。
2、Ceph應用場景
Ceph可以提供對象存儲、塊設備存儲和文件系統服務,其對象存儲可以對接網盤(owncloud)應用業務等;其塊設備存儲可以對接(IaaS),當前主流的IaaS運平臺軟件,如:OpenStack、CloudStack、Zstack、Eucalyptus等以及kvm等。
3、ceph功能組件
Ceph分佈式存儲(一)

4、Ceph核心組件
OSD(Object Storage Device):主要功能包括存儲數據、處理數據的複製、恢復、回補、平衡數據分佈,並將一些相關數據提供給ceph monitor。例如ceph OSD心跳等。一個ceph存儲集羣,至少需要兩個Ceph OSD來實現active+clean健康狀態和有效的保存數據的雙副本(默認情況下是雙副本,可以調整)。注意:每一個disk、分區都可以成爲一個OSD。
Monitor:Ceph的監控器,主要功能是維護整個集羣健康狀態,提供一致性的決策。
MDS(Metadata Server):主要保存的是Ceph文件系統的元數據。注意:ceph的塊存儲和ceph對象存儲都不需要MDS。MDS爲基於POSIX文件系統的用戶提供了一些基礎命令。
5、Ceph功能特性
RADOSGW功能特性基於LIBRADOS之上,提供當前流行的RESTful協議的網關,併兼容S3和Swift接口,作爲對象存儲,可以對接網盤類應用以及HLS流媒體應用等。
RBD(Rados Block Device) 功能特性也是基於LIBRADOS之上,通過LIBRBD創建一個塊設備,通過QEMU/KVM附加到VM上,做爲傳統的塊設備來用。目前OpenStack、CloudStack都是採用這種方式爲VM提供塊設備,同時也支持快照、COW等功能。
Ceph FS功能特性是基於RADOS來實現分佈式的文件系統,引如了MDS,主要爲兼容POSIX文件系統提供元數據,一般都是當作文件系統來掛載。

6、Ceph架構
Ceph分佈式存儲(一)
1)基礎存儲系統RADOS
RADOS:可靠自主分佈式對象存儲。它是ceph存儲的基礎,保證一切都以對象形式存儲。
2) 基礎庫LIBRADOS
LIBADOS:功能是對RADOS進行抽象和封裝,並向上層提供API,以便直接基於RADOS進行應用開發。
二、 RHEL/CentOS安裝
[Ceph環境準備]
1、 準備6臺虛擬機
2、 物理主機上配置域名解析

]#for i in {1..6}
>do
>echo -e “192.168.4.$i\tnode$i\tnode$i.tedu.cn” >> /etc/hosts
>done

3、 提前將服務器的密鑰保存,不需要ssh時回答yes
]# ssh-keyscan node{1..6} >> /root/.ssh/known_hosts
4、實現免密登陸

]# for i in {1..6}
> do
> ssh-copy-id node$i
> done

5、配置yum源

]# mkdir /var/ftp/ceph/
]# vim /etc/fstab
/ISO/rhcs2.0-rhosp9-20161113-x86_64.iso /var/ftp/ceph iso9660 defaults 0 0
]# mount -a
]# vim /tmp/server.repo

[rhel7.4]
name=rhel7.4
baseurl=ftp://192.168.4.254/rhel7.4
enabled=1
gpgcheck=0
[mon]
name=mon
baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/MON
enabled=1
gpgcheck=0
[osd]
name=osd
baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/OSD
enabled=1
gpgcheck=0
[tools]
name=tools
baseurl=ftp://192.168.4.254/ceph/rhceph-2.0-rhel-7-x86_64/Tools
enabled=1
gpgcheck=0

]# for vm in node{1..6}

do
scp /tmp/server.repo ${vm}:/etc/yum.repos.d/
done

[配置node1節點爲管理節點]
1、配置名稱解析
[root@node1 ~]# for i in {1..6}; do echo -e "192.168.4.$i\tnode$i.tedu.cn\tnode$i" >> /etc/hosts; done

2、配置免密登陸

[root@node1 ~]# ssh-keyscan node{1..6} >> /root/.ssh/known_hosts 
[root@node1 ~]# ssh-keygen -f /root/.ssh/id_rsa -N ''
[root@node1 ~]# for i in {1..6}; do ssh-copy-id node$i; done
[root@node1 ~]# for vm in node{1..6}
> do
> scp /etc/hosts ${vm}:/etc/
> done

3、配置node6爲時間服務器
(1)配置

[root@node6 ~]# yum install -y chrony
[root@node6 ~]# vim /etc/chrony.conf 
server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst
allow 192.168.4.0/24
local stratum 10

啓動服務

[root@node6 ~]# systemctl enable chronyd
[root@node6 ~]# systemctl restart chronyd

4、將node1-5配置爲NTP的客戶端
(1)配置

[root@node1 ~]# vim /etc/chrony.conf 
#server 0.rhel.pool.ntp.org iburst
#server 1.rhel.pool.ntp.org iburst
#server 2.rhel.pool.ntp.org iburst
#server 3.rhel.pool.ntp.org iburst
server 192.168.4.6 iburst
[root@node1 ~]# systemctl restart chronyd

測試

[root@node1 ~]# date -s "2018-7-13 12:00:00"
[root@node1 ~]# ntpdate 192.168.4.6
[root@node1 ~]# date

(3)同步其他主機

[root@node1 ~]# for i in {2..5}
> do
> scp /etc/chrony.conf node$i:/etc/
> done
[root@node1 ~]# for vm in node{2..5}
> do
> ssh $vm systemctl restart chronyd
> done

5、爲node1-3各添加3塊10GB的磁盤
可以在虛擬機不關機的情況下,直接添加硬盤
[安裝ceph]
1)在node1上安裝部署軟件

[root@node1 ~]# yum install -y ceph-deploy

2)創建ceph部署工具的工作目錄

[root@node1 ~]# mkdir ceph-clu

3)創建參與集羣節點的配置文件

[root@node1 ceph-clu]# ceph-deploy new node{1..3}
[root@node1 ceph-clu]# ls

4)在3個節點上安裝軟件包

[root@node1 ceph-clu]# ceph-deploy install node{1..3}

5)初始化mon服務,獲取密鑰key,會在ceph-clu目錄下生成幾個key

[root@node1 ceph-clu]# ceph-deploy mon create-initial

如果出現以下錯誤:
[node1][ERROR ] admin_socket: exception getting command descriptions: [Errno 2] No such file or directory
解決方案:
[root@node1 ceph-clu]# vim ceph.conf 最下面加入行:
public_network = 192.168.0.0/24
再執行以下命令:
[root@host1 ceoh-clu]# ceph-deploy --overwrite-conf config push node1 node2 node3
6、把node1-3的vdb作爲日誌盤。Ext/xfs都是日誌文件系統,一個分區分成日誌區和數據區。爲了更好的性能,vdb專門作爲vdc和vdd的日誌盤。

[root@node1 ceph-clu]# for vm in node{1..3}
> do
> ssh $vm parted /dev/vdb mklabel gpt
> done
[root@node1 ceph-clu]# for vm in node{1..3}; do ssh $vm parted /dev/vdb mkpart primary 1M 50% ; done
[root@node1 ceph-clu]# for vm in node{1..3}; do ssh $vm parted /dev/vdb mkpart primary 50% 100% ; done
[root@node1 ceph-clu]# for vm in node{1..3}; do ssh ${vm} chown ceph.ceph /dev/vdb? ; done

創建OSD設備

[root@node1 ceph-clu]# for i in {1..3}
> do
> ceph-deploy disk zap node$i:vdc node$i:vdd
> done
[root@node1 ceph-clu]# for i in {1..3}
> do
> ceph-deploy osd create node$i:vdc:/dev/vdb1 node$i:vdd:/dev/vdb2
> done

驗證
到第7步爲止,ceph已經搭建完成。查看ceph狀態

[root@node1 ceph-clu]# ceph -s 如果出現health HEALTH_OK表示正常
[root@node1 ceph-clu]# ceph health
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章