ubuntu12.04.5手動搭建ceph集羣

最近由於工作涉及一些關於Ceph存儲的部署和測試,謹以此文總結記錄一下ceph cluster搭建過程,基本上ceph官網都有,只是做一個總結,歡迎各位噴我,以便我提高。

 

本文主要介紹使用ubuntu系統搭建一個完整的ceph cluster,並通過ceph client簡單使用RBD & cephFS。

官方有使用ceph-deploy工具去自動部署ceph cluster的介紹,本文爲了讓大家更好的理解整個過程,在參數調優方面更爲靈活,所以使用手搭建的方法,如果想ceph-deploy去部署,後續會貼出來。

我的環境:ubuntu-12.04.5-server VM * 4

ceph版本: v0.94.5

節點角色:

hostname IP 角色
deploy 10.128.3.10 管理/client
ceph1 10.128.3.11 mon/mds/osd
ceph2 10.128.3.12 mon/mds/osd
ceph3 10.128.3.13 mon/mds/osd

由於虛擬機資源不夠,同個虛擬機同時啓動mon/mds/osd,如果不需要使用cephFS的話以省略mds的部署。

 

一、虛擬機安裝配置

三個ceph節點最好添加兩塊虛擬硬盤,其中一塊用於osd,另一塊用於ubuntu系統本身,其實osd也可以指定本地文件系統中的路徑。


安裝好ubuntu-12.04.5-server,安裝過程略,打開SSH服務,用於遠程登陸配置。

 

二、安裝ceph

每個節點更新安裝源,由於ubuntu自帶的源裏ceph版爲太低,當前最新能安裝v0.94.5版本

root@deploy:~# wget -q -O-'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | sudoapt-key add -

root@deploy:~# echo deb http://ceph.com/debian/ $(lsb_release-sc) main | sudo tee /etc/apt/sources.list.d/ceph.list

root@deploy:~# apt-get update

root@deploy:~# apt-get install ceph

 

三、部署準備

在deploy節點做以下操作:

1. 把ceph1/ceph2/ceph3寫到deploy的/etc/hosts裏

10.128.3.10     deploy

10.128.3.11     ceph1

10.128.3.12     ceph2

10.128.3.13     ceph3

 

2. 生成一個唯一的fsid

root@deploy:~#uuidgen

f32dcc3c-179a-47ba-962a-601beba0b671

 

3. 編寫一個/etc/ceph/ceph.conf

[global]

fsid =f32dcc3c-179a-47ba-962a-601beba0b671

moninitial members = ceph1,ceph2,ceph3

monhost = 10.128.3.11, 10.128.3.12, 10.128.3.13

auth cluster required = cephx

auth service required = cephx

auth client required = cephx

osd journal size = 1024

file store xattr use omap = true

osd pool default size = 2

osd pool default min size = 1

osd pool default pg num = 128

osd pool default pgp num = 128

osd crush chooseleaf type = 1

 

4. 生成監視器密鑰

root@deploy:~# ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'

creating /tmp/ceph.mon.keyring

 

5. 創建admin用戶

root@deploy:~# ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --set-uid=0 --cap mon 'allow *' --cap osd 'allow *'--cap mds 'allow'

creating /etc/ceph/ceph.client.admin.keyring

 

6. 把client.admin密鑰加入ceph.mon.keyring

root@deploy:~# ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring

importing contents of /etc/ceph/ceph.client.admin.keyring into/tmp/ceph.mon.keyring

 

7. 創建monitor map

root@deploy:~# monmaptool --create --add ceph1 10.128.3.11 --add ceph2 10.128.3.12 --add ceph3 10.128.3.13 --fsid f32dcc3c-179a-47ba-962a-601beba0b671 --clobber /tmp/monmap

monmaptool: monmap file /tmp/monmap

monmaptool: set fsid to f32dcc3c-179a-47ba-962a-601beba0b671

monmaptool: writing epoch 0 to /tmp/monmap (3 monitors)

 

8. 拷貝/etc/ceph/*,/tmp/monmap, /tmp/ceph.mon.keyring到所有ceph節點

如ceph1:

root@deploy:~# scp /etc/ceph/* root@ceph1:/etc/ceph/

root@deploy:~# scp /tmp/monmap root@ceph1:/tmp/monmap

root@deploy:~# scp /tmp/ceph.mon.keyring root@ceph1:/tmp/ceph.mon.keyring

 

 

四、部署mon

在每個ceph節點下執行以下操作,對應不同hostname需要把hostname改掉

1. 初始化mon數據

root@ceph1:~# ceph-mon --mkfs -i ceph1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring

ceph-mon: set fsid to f32dcc3c-179a-47ba-962a-601beba0b671

ceph-mon: created monfs at /var/lib/ceph/mon/ceph-ceph1 formon.ceph1

 

2. 創建done文件

root@ceph1:~# touch /var/lib/ceph/mon/ceph-ceph1/done

 

3. 創建sysvinit文件,爲了系統自動啓動

root@ceph1:~# touch /var/lib/ceph/mon/ceph-ceph1/sysvinit

 

4. 啓動mon進程

root@ceph1:~# service ceph start mon.ceph1

 

當所有ceph節點啓動mon進程後,可以查看當前集羣狀態,可看到已經啓動mon,但這時沒有啓動osd,所以顯示空間爲0



五、部署osd

1. 在管理節點deploy創建osd id

此例中我們創建3個osd id,以下命令執行3下,分別得到id(0,1,2)

root@deploy:~# ceph osd create

 

2. 在每個ceph節點創建osd工作目錄,每個節點對應一個id

ceph1:

mkdir /var/lib/ceph/osd/ceph-0

ceph2:

mkdir /var/lib/ceph/osd/ceph-1

ceph3:

mkdir /var/lib/ceph/osd/ceph-2

 

3. 對附加的磁盤格式化並且掛載出來

這裏附加的磁盤爲/dev/sdb

root@ceph1:~# mkfs -t xfs /dev/sdb


root@ceph1:~# mount /dev/sdb /var/lib/ceph/osd/ceph-0


如果需要系統啓動自動掛載,需要添加到/etc/fstab

/dev/sdb       /var/lib/ceph/osd/ceph-0        xfs       defaults        0 0


4. 初始化OSD數據目錄

root@ceph1:~# ceph-osd -i 0 --mkfs --mkkey



5. 註冊此OSD的密鑰

root@ceph1:~# ceph auth add osd.0 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-0/keyring

 

6. 把節點加入CRUSH MAP

root@ceph1:~# ceph osd crush add-bucket ceph1 host

 

7. 節點放入default根

root@ceph1:~# ceph osd crush move ceph1 root=default

 

8. 添加系統自動啓動osd

root@ceph1:~# touch /var/lib/ceph/osd/ceph-0/sysvinit

 

9. 啓動osd進程

root@ceph1:~# service ceph start osd.0

 

10. 此時查看ceph集羣狀態,已經正常,並且此時開始,就可以正常使用rbd和radosgw了



六、部署mds

在每個ceph節點上執行以下操作

1. 創建mds工作目錄

root@ceph1:~# mkdir -p /var/lib/ceph/mds/ceph-ceph1

 

2. 註冊MDS的密鑰

root@ceph1:~# ceph auth get-or-create mds.ceph1 mds 'allow ' osd'allow rwx' mon 'allow profile mds' -o /var/lib/ceph/mds/ceph-ceph1/keyring

 

3. 啓動mds進程並設置系統自動啓動

root@ceph1:~# touch /var/lib/ceph/mds/ceph-ceph1/sysvinit

root@ceph1:~# service ceph start mds.ceph1

 

創建好mds後,使用ceph -s查看沒有關於mds的顯示,此時需要創建一個cephFS,就能顯示



七、pool操作

1. 查看pool

ceph osd lspools

 

2. 創建一個pool

//ceph osd pool create {pool-name} {pg-num} [{pgp-num}]

創建一個命名爲images的pool

ceph osd pool create images 128 128

 

3. 刪除一個pool

//ceph osd pool delete {pool-name} [{pool-name} --yes-i-really-really-mean-it]

刪除pool:images

ceph osd pool delete images images --yes-i-really-really-mean-it

 

 

八、創建一個塊設備(RBD)

1. 首先創建一個pool

ceph osd pool create images 128 128

 

2. 創建塊設備,基於pool

//rbd --pool {pool-name} create {image-name} --size {megabytes}

創建一個20M的RBD

rbd --pool images create image1 --size 20

 

3. 掛載這個RBD,並使用

map到本地塊設備,並會返回本地塊設備名,記下來,這裏爲(/dev/rbd1)

rbd --pool images map image1

格式化並掛載image1

mkfs.ext4 /dev/rbd1

mkdir mnt

mount -t ext4 /dev/rbd1 mnt/


此時可以往這個掛載點裏讀寫了

 

 

九、創建一個cephFS

1. 首先創建兩個pool

其中一個作爲元數據pool,另一個作爲數據pool

ceph osd pool create metadata 128 128

ceph osd pool create data 128 128

 

2. 創建cephFS

ceph fs new testfs metadata data

 

3. 查看當前集羣中的cephfs

ceph fs ls

 

4. 掛載cephFS並使用

有兩種方式,一種爲內核掛載方式,另一種ceph提供的用戶態掛載方式fuse

a)kernel

mount.ceph ceph1,ceph2,ceph3:/ mnt/ -o name=admin,secret=`ceph-authtool -p /etc/ceph/ceph.client.admin.keyring`



b)fuse

ceph-fuse -k /etc/ceph/ceph.client.admin.keyring -c /etc/ceph/ceph.conf ~/mnt/



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