CentOS 7部署 Ceph分布式存儲架構(gòu)

SE4nJH

1.概述

隨著OpenStack日漸成為開源云計算的標準軟件棧,Ceph也已經(jīng)成為OpenStack的首選后端存儲爱沟。Ceph是一種為優(yōu)秀的性能、可靠性和可擴展性而設(shè)計的統(tǒng)一的赎瑰、分布式文件系統(tǒng)锡垄。

  1. ceph官方文檔 http://docs.ceph.org.cn/
  2. ceph中文開源社區(qū) http://ceph.org.cn/

Ceph是一個開源的分布式文件系統(tǒng)。因為它還支持塊存儲来破、對象存儲篮灼,所以很自然的被用做云計算框架openstack或cloudstack整個存儲后端。當然也可以單獨作為存儲徘禁,例如部署一套集群作為對象存儲诅诱、SAN存儲、NAS存儲等送朱。

1.1 ceph支持

  1. 對象存儲:即RADOSGW,兼容S3接口娘荡。通過REST API上傳、下載文件驶沼。
  2. 文件系統(tǒng):POSIX接口炮沐。可以將CEPH集群看做一個共享文件系統(tǒng)掛載到本地回怜。
  3. 塊存儲:即RBD大年。有KERNEL RBD和LIBRBD兩種使用方式。支持快照、克隆鲜戒。相當于一塊硬盤掛到本地,用法和用途和硬盤一樣抹凳。比如在OPENSTACK項目里遏餐,CEPH的塊設(shè)備存儲可以對接OPENSTACK的后端存儲。

1.2 Ceph相比其它分布式存儲有哪些優(yōu)點赢底?

  1. 統(tǒng)一存儲
    • 雖然ceph底層是一個分布式文件系統(tǒng)失都,但由于在上層開發(fā)了支持對象和塊的接口。所以在開源存儲軟件中幸冻,能夠一統(tǒng)江湖粹庞。至于能不能千秋萬代,就不知了洽损。
  2. 高擴展性
    • 擴容方便庞溜、容量大。能夠管理上千臺服務(wù)器碑定、EB級的容量流码。
  3. 可靠性強
    • 支持多份強一致性副本,EC延刘。副本能夠垮主機漫试、機架、機房碘赖、數(shù)據(jù)中心存放驾荣。所以安全可靠。存儲節(jié)點可以自管理普泡、自動修復(fù)播掷。無單點故障,容錯性強劫哼。
  4. 高性能
    • 因為是多個副本叮趴,因此在讀寫操作時候能夠做到高度并行化。理論上权烧,節(jié)點越多眯亦,整個集群的IOPS和吞吐量越高。另外一點ceph客戶端讀寫數(shù)據(jù)直接與存儲設(shè)備(osd) 交互般码。

1.3 Ceph各組件介紹

  1. Ceph OSDs: Ceph OSD 守護進程( Ceph OSD )的功能是存儲數(shù)據(jù)妻率,處理數(shù)據(jù)的復(fù)制、恢復(fù)板祝、回填宫静、再均衡,并通過檢查其他OSD 守護進程的心跳來向 Ceph Monitors 提供一些監(jiān)控信息。當 Ceph 存儲集群設(shè)定為有2個副本時孤里,至少需要2個 OSD 守護進程伏伯,集群才能達到 active+clean 狀態(tài)( Ceph 默認有3個副本,但你可以調(diào)整副本數(shù))捌袜。
  2. Monitors: Ceph Monitor維護著展示集群狀態(tài)的各種圖表说搅,包括監(jiān)視器圖、 OSD 圖虏等、歸置組( PG )圖弄唧、和 CRUSH 圖。 Ceph 保存著發(fā)生在Monitors 霍衫、 OSD 和 PG上的每一次狀態(tài)變更的歷史信息(稱為 epoch 候引。
  3. MDSs: Ceph 元數(shù)據(jù)服務(wù)器( MDS )為 Ceph 文件系統(tǒng)存儲元數(shù)據(jù)(也就是說,Ceph 塊設(shè)備和 Ceph 對象存儲不使用MDS )敦跌。元數(shù)據(jù)服務(wù)器使得 POSIX 文件系統(tǒng)的用戶們澄干,可以在不對 Ceph 存儲集群造成負擔的前提下,執(zhí)行諸如 ls柠傍、find 等基本命令傻寂。

2.Ceph實驗集群部署

2.1 主機準備 (禁用selinux, 關(guān)閉防火墻)

192.168.20.19 ceph1         admin,osd, mon   作為管理和監(jiān)控節(jié)點
192.168.20.21 ceph2         osd,mds
192.168.20.22 ceph3         osd,mds
192.168.20.23 ceph-client   client
  1. ceph1作管理. osd. mon節(jié)點;
  2. ceph2和ceph3作osd mds;
  3. ceph-client客戶端;

前三臺服務(wù)器增加一塊硬盤/dev/sdb實驗, 創(chuàng)建目錄并掛載到/var/local/osd{1,2,3};


[root@ceph1 ~]#mkfs.xfs  /dev/sdb
[root@ceph1 ~]#mkdir -p /var/local/osd1
[root@ceph1 ~]#mount /dev/sdb  /var/local/osd1/
[root@ceph1 ~]#chown -R ceph:ceph /var/local/osd*
 
[root@ceph2 ~]#mkfs.xfs  /dev/sdb
[root@ceph2 ~]#mkdir -p /var/local/osd2
[root@ceph2 ~]#mount /dev/sdb  /var/local/osd2/
[root@ceph2 ~]#chown -R ceph:ceph /var/local/osd*
 
[root@ceph3 ~]#mkfs.xfs  /dev/sdb
[root@ceph3 ~]#mkdir -p /var/local/osd3
[root@ceph3 ~]#mount /dev/sdb  /var/local/osd3/
[root@ceph3 ~]#chown -R ceph:ceph /var/local/osd*
systemctl stop firewalld > /dev/null 2>&1
systemctl disable firewalld  > /dev/null 2>&1
setenforce 0 > /dev/null 2>&1
sed -i '/^SELINUX=/s/=.*/=disabled/' /etc/selinux/config

2.2 編輯hosts文件

規(guī)范系統(tǒng)主機名添加hosts文件實現(xiàn)集群主機名與主機名之間相互能夠解析(host 文件添加主機名不要使用fqdn方式)可用hostnamectl set-hostname [name]設(shè)置分別打開各節(jié)點的/etc/hosts文件,加入這四個節(jié)點ip與名稱的對應(yīng)關(guān)系:

# cat /etc/hosts
192.168.20.19 ceph1
192.168.20.21 ceph2
192.168.20.22 ceph3
192.168.20.23 ceph-client
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

SSH免密碼登錄

在管理節(jié)點使用ssh-keygen 生成ssh keys 發(fā)布到各節(jié)點

ssh-keygen #所有的輸入選項都直接回車生成携兵。
ssh-copy-id ceph1
ssh-copy-id ceph2
ssh-copy-id ceph3
ssh-copy-id ceph-client

2.3 管理節(jié)點安裝ceph-deploy工具

第一步:增加 yum配置文件(各個節(jié)點都需要增加yum源)vim /etc/yum.repos.d/ceph.repo

[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源

# cat /etc/yum.repos.d/Aliyun-ceph.repo
[ceph]
name=ceph
baseurl=https://mirrors.aliyun.com/ceph/rpm-jewel/el7/x86_64/
gpgcheck=0
[ceph-noarch]
name=cephnoarch
baseurl=https://mirrors.aliyun.com/ceph/rpm-jewel/el7/noarch/
gpgcheck=0

復(fù)制配置文件到其它節(jié)點和客戶端

scp /etc/yum.repos.d/ceph.repo ceph2:/etc/yum.repos.d/
scp /etc/yum.repos.d/ceph.repo ceph3:/etc/yum.repos.d/
scp /etc/yum.repos.d/ceph.repo ceph-client:/etc/yum.repos.d/

在ceph1更新軟件源并安裝ceph-deploy 管理工具

yum clean all &&yum -y install ceph-deploy

2.4 創(chuàng)建monitor服務(wù)


mkdir /etc/ceph && cd /etc/ceph
ceph-deploy new xuegod67
ls
#mon安裝在xuegod67節(jié)點
#生成配置文件在當前目錄下
ceph.conf  ceph.log  ceph.mon.keyring
Ceph配置文件疾掰、一個monitor密鑰環(huán)和一個日志文件

2.5 修改副本數(shù)

配置文件的默認副本數(shù)從3改成2,這樣只有兩個osd也能達到active+clean狀態(tài)徐紧,添加行osd_pool_default_size = 2

[root@ceph1 ceph]# cat ceph.conf
[global]
fsid = 1523cad7-6f0e-4901-91b1-5f7aa173ec4f
mon_initial_members = ceph1
mon_host = 192.168.20.19
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd_pool_default_size = 2

2.6 在所有節(jié)點安裝ceph

(如果網(wǎng)絡(luò)源安裝失敗静檬,手工安裝epel-release 然后安裝yum –yinstall cep-release再yum –y install ceph ceph-radosgw)
錯誤參考:https://blog.csdn.net/yenai2008/article/details/72457463

# 以下都在ceph1操作
ceph-deploy install ceph1 ceph2 ceph3 ceph-client
# 安裝ceph monitor
ceph-deploy mon create ceph1
# 收集節(jié)點的keyring文件
ceph-deploy  gatherkeys ceph1

2.7 部署osd服務(wù)

添加osd節(jié)點 (所有osd節(jié)點執(zhí)行)
我們實驗準備時已經(jīng)創(chuàng)建目錄/var/local/osd{id}

2.8 創(chuàng)建激活osd(ceph1上執(zhí)行)

# 創(chuàng)建osd 
ceph-deploy osd prepare ceph1:/var/local/osd1 ceph2:/var/local/osd2 ceph3:/var/local/osd3
# 激活osd 
ceph-deploy osd activate ceph1:/var/local/osd1 ceph2:/var/local/osd2 ceph3:/var/local/osd3
#chown -R ceph:ceph /var/local/osd* 有些同學(xué)可能會忘記配置目錄權(quán)限引起激活osd失敗
 
# 查看狀態(tài)
ceph-deploy osd list ceph1 ceph2 ceph3

2.9 統(tǒng)一配置

(用ceph-deploy把配置文件和admin密鑰拷貝到所有節(jié)點,這樣每次執(zhí)行Ceph命令行時就無需指定monitor地址和ceph.client.admin.keyring了)

# 以下都在ceph1執(zhí)行
[root@ceph1 ceph]# ceph-deploy admin ceph1 ceph2  ceph3 ceph-client
# 會在4臺主機的/etc/ceph目錄下生成文件
[root@ceph1 ceph]# cat /etc/ceph/ceph.client.admin.keyring
[client.admin]
key = AQBz9NdcgCunEhAAMPkfoZaaIpljaA7viB2TEg==
 
# 各節(jié)點修改ceph.client.admin.keyring權(quán)限:
[root@ceph1 ceph] chmod +r /etc/ceph/ceph.client.admin.keyring

2.10 查看osd狀態(tài) ceph -s 或 ceph health

[root@ceph1 ceph]# ceph -s
    cluster 1523cad7-6f0e-4901-91b1-5f7aa173ec4f
     health HEALTH_OK
     monmap e1: 1 mons at {ceph1=192.168.20.19:6789/0}
            election epoch 3, quorum 0 ceph1
      fsmap e6: 1/1/1 up {0=ceph3=up:active}, 1 up:standby
     osdmap e20: 3 osds: 3 up, 3 in
            flags sortbitwise,require_jewel_osds
      pgmap v67: 320 pgs, 3 pools, 7110 bytes data, 20 objects
            15682 MB used, 33439 MB / 49122 MB avail
                 320 active+clean

2.11 部署mds服務(wù)

[root@ceph1 ceph]# ceph-deploy mds create ceph2 ceph3#我們MDS安裝2臺
[root@ceph1 ceph]# ceph mds stat #查看狀態(tài)
[root@ceph1 ceph]# ceph mds stat
e6: 1/1/1 up {0=ceph3=up:active}, 1 up:standby

2.12 集群狀態(tài)

[root@ceph1 ceph]# ceph -s
    cluster 1523cad7-6f0e-4901-91b1-5f7aa173ec4f
     health HEALTH_OK
     monmap e1: 1 mons at {ceph1=192.168.20.19:6789/0}
            election epoch 3, quorum 0 ceph1
      fsmap e6: 1/1/1 up {0=ceph3=up:active}, 1 up:standby
     osdmap e20: 3 osds: 3 up, 3 in
            flags sortbitwise,require_jewel_osds
      pgmap v67: 320 pgs, 3 pools, 7110 bytes data, 20 objects
            15682 MB used, 33439 MB / 49122 MB avail
                 320 active+clean

以上基本上完成了ceph存儲集群的搭建并级。

3. 創(chuàng)建ceph文件系統(tǒng)


[root@ceph1 ceph]# ceph fs ls   #創(chuàng)建之前
No filesystems enabled
創(chuàng)建存儲池
[root@ceph1 ceph]# ceph osd pool create cephfs_data <pg_num> 
[root@ceph1 ceph]# ceph osd pool create cephfs_metadata <pg_num>
 
[root@ceph1 ceph]# ceph osd pool create cephfs_data 128
[root@ceph1 ceph]# ceph osd pool create cephfs_metadata 128

其中:<pg_num> = 128 ,
關(guān)于創(chuàng)建存儲池
確定 pg_num 取值是強制性的拂檩,因為不能自動計算。下面是幾個常用的值:

  1. 少于 5 個 OSD 時可把 pg_num 設(shè)置為 128
  2. OSD 數(shù)量在 5 到 10 個時嘲碧,可把 pg_num 設(shè)置為 512
  3. OSD 數(shù)量在 10 到 50 個時稻励,可把 pg_num 設(shè)置為 4096
  4. OSD 數(shù)量大于 50 時,你得理解權(quán)衡方法愈涩、以及如何自己計算 pg_num 取值
  5. 自己計算 pg_num 取值時可借助 pgcalc 工具

隨著 OSD 數(shù)量的增加望抽,正確的 pg_num 取值變得更加重要,因為它顯著地影響著集群的行為履婉、以及出錯時的數(shù)據(jù)持久性(即災(zāi)難性事件導(dǎo)致數(shù)據(jù)丟失的概率)煤篙。

3.1 創(chuàng)建文件系統(tǒng)

創(chuàng)建好存儲池后,你就可以用 fs new 命令創(chuàng)建文件系統(tǒng)了
ceph fs new <fs_name> cephfs_metadata cephfs_data
其中:<fs_name> = cephfs 可自定義

[root@ceph1 ceph]# ceph fs new cephfs cephfs_metadata cephfs_data
[root@ceph1 ceph]# ceph fs ls     #查看創(chuàng)建后的cephfs
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
[root@ceph1 ceph]# ceph mds stat  #查看mds節(jié)點狀態(tài)
e6: 1/1/1 up {0=ceph3=up:active}, 1 up:standby
#active是活躍的毁腿,另1個是處于熱備份的狀態(tài)

3.2 掛載Ceph文件系統(tǒng)

#在ceph-client執(zhí)行
[root@ceph-client ceph]# mkdir /ceph
 
[root@ceph-client ceph]# yum install -y ceph-fuse
[root@ceph-client ceph]# ceph-fuse -m 192.168.20.19:6789/ /ceph
[root@ceph-client ceph]# df -Th
Filesystem              Type            Size  Used Avail Use% Mounted on
/dev/mapper/centos-root xfs              96G  4.1G   92G   5% /
devtmpfs                devtmpfs        894M     0  894M   0% /dev
tmpfs                   tmpfs           910M     0  910M   0% /dev/shm
tmpfs                   tmpfs           910M   11M  900M   2% /run
tmpfs                   tmpfs           910M     0  910M   0% /sys/fs/cgroup
/dev/sda1               xfs            1014M  232M  783M  23% /boot
tmpfs                   tmpfs           182M   28K  182M   1% /run/user/0
ceph-fuse               fuse.ceph-fuse   48G   16G   33G  32% /ceph
取消掛載
[root@ceph-client ceph]# fusermount -u /ceph

在這里想起沒在/etc/fstab配置ceph1辑奈、ceph2苛茂、ceph3的sdb自動掛載。

ceph在開源社區(qū)還是比較熱門的鸠窗,但是更多的是應(yīng)用于云計算的后端存儲妓羊。所以大多數(shù)在生產(chǎn)環(huán)境中使用ceph的公司都會有專門的團隊對ceph進行二次開發(fā),ceph的運維難度也比較大稍计。但是經(jīng)過合理的優(yōu)化之后侍瑟,ceph的性能和穩(wěn)定性都是值得期待的。

3.關(guān)于其他

清理機器上的ceph相關(guān)配置

  1. 停止所有進程: stop ceph-all
  2. 卸載所有ceph程序:ceph-deploy uninstall [{ceph-node}]
  3. 刪除ceph相關(guān)的安裝包:ceph-deploy purge {ceph-node} [{ceph-data}]
  4. 刪除ceph相關(guān)的配置:ceph-deploy purgedata {ceph-node} [{ceph-data}]
  5. 刪除key:ceph-deploy forgetkeys
  6. 卸載ceph-deploy管理:yum -y remove ceph-deploy

可以參考內(nèi)容:http://blog.51cto.com/12270625/1887648

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丙猬,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子费韭,更是在濱河造成了極大的恐慌茧球,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡票顾,警方通過查閱死者的電腦和手機渠抹,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來哆姻,“玉大人,你說我怎么就攤上這事〖⑴” “怎么了?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵八回,是天一觀的道長酷愧。 經(jīng)常有香客問我,道長缠诅,這世上最難降的妖魔是什么溶浴? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮管引,結(jié)果婚禮上士败,老公的妹妹穿的比我還像新娘。我一直安慰自己褥伴,他們只是感情好谅将,可當我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著重慢,像睡著了一般戏自。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上伤锚,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天擅笔,我揣著相機與錄音志衣,去河邊找鬼。 笑死猛们,一個胖子當著我的面吹牛念脯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播弯淘,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼绿店,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了庐橙?” 一聲冷哼從身側(cè)響起假勿,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎态鳖,沒想到半個月后转培,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡浆竭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年浸须,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片邦泄。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡删窒,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出顺囊,到底是詐尸還是另有隱情肌索,我是刑警寧澤,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布特碳,位于F島的核電站驶社,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏测萎。R本人自食惡果不足惜亡电,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望硅瞧。 院中可真熱鬧份乒,春花似錦、人聲如沸腕唧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽枣接。三九已至颂暇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間但惶,已是汗流浹背耳鸯。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工湿蛔, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人县爬。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓阳啥,卻偏偏與公主長得像,于是被迫代替她去往敵國和親财喳。 傳聞我的和親對象是個殘疾皇子察迟,可洞房花燭夜當晚...
    茶點故事閱讀 45,982評論 2 361

推薦閱讀更多精彩內(nèi)容