Ceph的主要目標是設計成基於POSIX的沒有單點故障的分佈式文件系統,使數據能容錯和無縫的複製。詳見:http://www.oschina.net/p/cephshell
目前大部分部署ceph基本都是在Ubuntu,由於它的內核默認打開了Ceph_fs。選擇CentOS7(默認文件系統是XFS,而不是EXT4)做爲部署平臺時則須要留意更多的信息,好比是用客戶端加載ceph文件系統時。服務器
看過很多網上的文章,大都不太適合0.80,或是可被省略的步驟。好比配置ceph.conf。因此特地作了幾遍的安裝,總結此文。另外吐嘈下Redhat,收購了Ceph 所在的公司 Inktank還發布了本身的版本($1000/cluster),竟然不在最新的內核中將 Ceph_fs 打開,致使不少人直接倒向Ubuntu。網絡
1、準備主機環境:less
主機名 | IP | 角色ssh |
OS |
ceph0 | 10.9.16.96 | MON, MDS | CentOS7 |
ceph1 | 10.9.16.97 | MON,OSD | CentOS7 |
ceph2 | 10.9.16.98 | OSD,MDS | CentOS7 |
ceph3 | 10.9.16.99 | OSD,MDS | CentOS7 |
ceph4 | 10.9.16.100 | MON | CentOS7 |
client0 | 10.9.16.89 | client | CentOS7(內核3.16.2) |
client1 | 10.9.16.95 | client | Ubuntu14.04 |
部署建議說明:
分佈式
MON節點建議使用3個,OSD數據節點最好與操做系統分開以提升性能,有至少兩個千兆網卡(這裏只顯示集羣內的IP,客戶端訪問IP略)性能
2、準備工做(注:用ceph-deploy可直接安裝ceph,也能夠用yum另行安裝)
spa
確認每臺機器的主機名正確(CentOS7中,只要更改/etc/hostname便可,比舊版本方便)操作系統
每臺機器上加入對應的 IP/主機名到/etc/hosts;.net
每臺機器使用 ssh-copy-id 完成這些服務器之間免ssh密碼登陸;(發現ansible好用了)
關閉防火牆(systemctl stop firewalld.service)或打開 6789/6800~6900端口;
編輯/etc/ntp.conf,開啓時間服務同步時間;(crontab/ntpdate不靠譜,不另做說明)
確認已經配置epel/remi的 repo軟件包;在client0上配置elrepo軟件包以便yum升級內核
在全部的OSD服務器上,初始化目錄,好比ceph1創建文件夾 /var/local/osd1,ceph2上對應/var/local/osd2
3、開始安裝
(如下非特別說明,都是在ceph0上操做)
生成MON信息:ceph-deploy new ceph{0,1,4}
安裝ceph:ceph-deploy install ceph0 ceph1 ceph2 ceph3 ceph4(注:若是已經用yum在每臺機器上安裝了ceph,這步可省略)
生成keys:ceph-deploy --overwrite-conf mon create-initial
準備OSD服務器:ceph-deploy --overwrite-conf 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
複製key到各個節點:ceph-deploy admin ceph0 ceph1 ceph2 ceph3 ceph4
檢查是否ok:ceph health。
安裝MDS節點:ceph-deploy mds create ceph0 ceph2 ceph3
檢查狀態:
[root@ceph0 ~]# ceph -s cluster 9ddc0226-574d-4e8e-8ff4-bbe9cd838e21 health HEALTH_OK monmap e1: 2 mons at {ceph0=10.9.16.96:6789/0,ceph1=10.9.16.97:6789/0,ceph4=10.9.16.100:6789/0}, election epoch 4, quorum 0,1 ceph0,ceph1 mdsmap e5: 1/1/1 up {0=ceph0=up:active}, 1 up:standby osdmap e13: 3 osds: 3 up, 3 in pgmap v6312: 192 pgs, 3 pools, 1075 MB data, 512 objects 21671 MB used, 32082 MB / 53754 MB avail 192 active+clean
4、掛載問題:
client0的CentOS7默認沒有開啓ceph_fs的內核,須要更改內核,這裏直接用yum更新(能夠手工編譯):
yum --enablerepo=elrepo-kernel install kernel-ml grub2-set-default 0 mkdir /mnt/cephfs mount -t ceph 10.9.16.96:6789,10.9.16.97:6789:/ /mnt/cephfs -o name=admin,secret=AQDnDBhUWGS6GhAARV0CjHB*******Y1LQzQ== #這裏的密鑰,是 ceph.client.admin.keyring 中的內容。 #如下是 /etc/fstab 的自動加載內容: 10.9.16.96:6789,10.9.16.97:6789:/ /mnt/ceph ceph name=admin,secret=AQDnDBhUWGS6GhAARV0CjHB*******Y1LQzQ==,noatime 0 0
用Ubuntu14.04的命令是同樣的,加載。
在複製文件時,用ceph -s能夠實時查看到底下有一個文件讀/寫速度,如:client io 12515 kB/s wr, 3 op/s
不過這個讀寫速度是ceph內部(包括不一樣服務器之間的複製)的速度,而不是單純客戶端到服務器商的速度。
看看是否是已經正經常使用了。
5、安裝結語:
並非與網上的大多數教程寫的那樣必定要編輯 ceph.conf 文件。而應該是在特定需求環境下才去改。
要配置集羣內網和訪問外網的網絡,以提升網絡負載效率和可能的DDOS,可把下面的選項加到ceph.conf裏的[global]段下。
[global] public network {public-network-ip-address/netmask} cluster network {enter cluster-network-ip-address/netmask}
ceph的osd journal size默認值是0,因此你得在ceph.conf裏設置,日誌尺寸應該至少2倍於 filestore min sync interval的值和預計吞吐量的乘積:osd journal size = {2 * (expected throughput * filestore min sync interval)}例如:osd journal size = 10000(是10G)
元變量將展開爲實際的集羣名和進程名,例如若是集羣名是ceph(默認值),你能夠用下面的命令檢索osd.0的配置:ceph --admin-daemon /var/run/ceph/ceph-osd.0.asok config show | less
使用其餘端口加載方法:mount.ceph monhost1:7000,monhost2:7000,monhost3:7000:/ /mnt/foo
其餘內容(如:增長/刪除節點,塊設備等,後續再寫)