ceph 手工部署集羣

環境:ubuntu-server 16.04,兩臺arm服務器 分別爲node1和node2,node1和node2分別安裝monitor和3個osd,在node1上部署MDS,cephnode

1、準備工做

systemctl stop ufw     #禁用防火牆bootstrap

systemctl disable ufw    #禁止防火牆開機啓動ubuntu

vim /etc/hosts            #修改主機名字(每臺服務器都要修改)個人node2節點的文件以下:vim

root@node2:/var/lib/ceph/osd# cat /etc/hosts
127.0.0.1    localhost
10.33.0.37    node2
10.33.0.13    node1
服務器

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
oop

 

vim /etc/hostname      #修改主機名字ui

2、安裝NTP服務並配置NTP服務,確保兩個mon節點時間一致。

  .......略spa

3、部署mon

1)在node1節點上,執行以下

一、uuidgen  #生成惟一的uuid.net

二、vim /etc/ceph/ceph.conf    #建立ceph.conf文件,個人配置文件以下:命令行

root@bogon:~# cat /etc/ceph/ceph.conf
[global]
fsid = c37ee56f-e925-4c9b-80ba-c4b0625fde93
mon initial members = node1
mon host = 10.33.0.13
public network = 10.33.0.0/16          
cluster network = 192.168.3.0/24
auth cluster required = cephx
auth service required = cephx
auth client required = cephx
osd pool default size = 2              #兩個副本

三、ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *' #爲監控節點建立管理密鑰

四、ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow'   #爲ceph amin用戶建立管理集羣的密鑰並賦予訪問權限

五、ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring     #添加client.admin key到 ceph.mon.keyring

六、 mkdir -p /var/lib/ceph/mon/ceph-node1    #爲node1節點上的mon建立數據目錄

七、在node1節點上初始化mon節點,執行下面的命令

    ceph-mon --mkfs -i node1 --keyring /tmp/ceph.mon.keyring

八、爲了防止從新被安裝建立一個空的done文件

touch /var/lib/ceph/mon/ceph-node1/done

九、建立一個空的初始化文件

touch /var/lib/ceph/mon/ceph-node1/upstart

十、啓動ceph進程

(1)ceph-mon -i node1      #用命令方式啓動,也能夠用腳本方式啓動,目前我還沒實現腳本方式啓動,後續會更新。

(2)腳本方式啓動

systemctl enable ceph-mon.target     #使能mon的target

cd /etc/systemd/system/multi-user.target.wants

ln -s /lib/systemd/system/ceph-mon@.service ./ceph-mon@node1.service              #創建啓動配置文件

systemctl start ceph-mon@node1.service       #啓動node1節點上的mon進程

vim /etc/ceph/ceph.conf       #修改ceph的配置文件添加osd_crush_update_on_start = false選項

vim /lib/systemd/system/ceph-mon@.service   #修改啓動配置文件把setusr 修改爲想用的用戶名

 

十一、 mkdir -p /var/lib/ceph/bootstrap-osd/

      ceph auth get-or-create client.bootstrap-osd mon 'allow profile bootstrap-osd'

      ceph auth get client.bootstrap-osd -o /var/lib/ceph/bootstrap-osd/ceph.keyring    # 在node1建立一個boot引導啓動osd的key

2)在node2節點上部署第二個mon

一、複製node1節點的/etc/ceph目錄到node2

scp /etc/ceph/* node2:/etc/ceph/

二、在node2節點上新建一個/var/lib/ceph/bootstrap-osd/目錄

mkdir /var/lib/ceph/bootstrap-osd/

三、複製node1節點上的/var/lib/ceph/bootstrap-osd/ceph.keyring文件到node2

scp /var/lib/ceph/bootstrap-osd/ceph.keyring node2:/var/lib/ceph/bootstrap-osd/

四、複製node1節點上的/tmp/ceph.mon.keyring

scp /tmp/ceph.mon.keyring node2:/tmp/

五、在node2節點上創建一個/var/lib/ceph/mon/ceph-node2目錄

mkdir -p /var/lib/ceph/mon/ceph-node2

六、在node2節點上初始化mon節點,執行下面的命令

ceph-mon --mkfs -i node2  --keyring /tmp/ceph.mon.keyring

七、爲了防止從新被安裝建立一個空的done文件

touch /var/lib/ceph/mon/ceph-node2/done

八、建立一個空的初始化文件

touch /var/lib/ceph/mon/ceph-node2/upstart

九、啓動ceph進程

ceph-mon -i node2

十、查看集羣狀態

ceph -s    #如今因爲沒有osd集羣狀態是不可用的

4、添加osd節點

在node1節點添加3個osd,在node2節點添加3個osd

1)node1節點

一、建立一個OSD,生成一個osd number

ceph osd create 

輸出0

二、爲osd節點建立一個osd目錄

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

三、格式化已準備好的osd硬盤(格式化爲xfs格式)

mkfs.xfs -f /dev/sdb

四、掛在目錄

mount -o user_xattr /dev/sdb /var/lib/ceph/osd/ceph-0

把掛載信息寫入分區表

五、初始化osd數據目錄

ceph-osd -i 0 --mkfs --mkkey 

六、註冊osd的認證密鑰

ceph auth add osd.0 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-0/keyring

七、爲此osd節點建立一個crush map

ceph osd crush add-bucket node1 host

八、把node1 bucket 移到 root bucket下

ceph osd crush move node1 root=default

九、給node1 bucket 增長一個設備

ceph osd crush add osd.0 1.0 host=node1

十、在node1節點中建立啓動文件

touch /var/lib/ceph/osd/ceph-0/upstart
十一、啓動osd進程

(1)命令行方式啓動

ceph-osd -i 0     #命令方式啓動

(2)腳本方式啓動

systemctl enable ceph-osd.target         #使能ceph-osd.target

cd /etc/systemd/system/multi-user.target.wants

ln -s /lib/systemd/system/ceph-osd@.service ./ceph-osd@0.service        #建立啓動配置文件

systemctl start ceph-osd@0.service         #啓動osd.0進程

vim /etc/ceph/ceph.conf       #修改ceph的配置文件添加osd_crush_update_on_start = false選項

vim /lib/systemd/system/ceph-mon@.service   #修改啓動配置文件把setusr 修改爲想用的用戶名

十一、在node1節點上依次執行上面的啓動另外兩個osd進程

note:因爲在node1節點上建立第一個osd進程的時候,已經在crushmap中建立了node1 bucket 並移到了root bucket下因此在建立另外兩個osd進程的時候不須要執行七、8步驟。

2)node2節點

一、在node2節點已經有ceph.conf和ceph.client.admin.keyring 文件因此不須要從node1節點拷貝。

二、建立一個OSD,生成一個osd number

ceph osd create

輸出 1

三、爲osd節點建立一個osd目錄

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

四、格式化已準備好的osd硬盤(格式化爲xfs格式 )

mkfs.xfs -f /dev/sdb

五、 掛在目錄

mount -o user_xattr /dev/sdb /var/lib/ceph/osd/ceph-1

把上面的掛載信息寫入分區表

六、 初始化osd數據目錄

ceph-osd -i 1 --mkfs --mkkey

七、 註冊osd的認證密鑰

ceph auth add osd.1 osd 'allow *' mon 'allow profile osd' -i /var/lib/ceph/osd/ceph-1/keyring

八、爲此osd節點建立一個crush map

ceph osd crush add-bucket node2 host

九、把node2 bucket 移到root bucket下

ceph osd crush move node2 root=default

十、在node2 bucket下添加osd設備

ceph osd crush add osd.1 1.0 host=node2

十一、 建立一個初始化目錄

touch /var/lib/ceph/osd/ceph-1/upstart

十二、 啓動osd進程

ceph-osd -i 1

1三、在node2節點按照以上方法啓動其他兩個osd進程。

note:參照node1節點上的操做

5、添加mds服務

目前官網推薦jewel版的ceph集羣中只部署一個active mds進程,如下只部署一個mds進程

一、爲mds元數據服務器建立一個目錄

mkdir -p /var/lib/ceph/mds/ceph-node1

二、 爲bootstrap-mds客戶端建立一個密鑰

mkdir -p /var/lib/ceph/mds/bootstrap-mds

ceph-authtool --create-keyring /var/lib/ceph/bootstrap-mds/ceph.keyring --gen-key -n client.bootstrap-mds

三、 在ceph auth庫中建立bootstrap-mds客戶端,賦予權限添加以前建立的密鑰

ceph auth add client.bootstrap-mds mon 'allow profile bootstrap-mds' -i /var/lib/ceph/bootstrap-mds/ceph.keyring

四、在root家目錄裏建立ceph.bootstrap-mds.keyring文件

touch /root/ceph.bootstrap-mds.keyring

五、把keyring /var/lib/ceph/bootstrap-mds/ceph.keyring裏的密鑰導入家目錄下的ceph.bootstrap-mds.keyring文件裏

ceph-authtool --import-keyring /var/lib/ceph/bootstrap-mds/ceph.keyring /root/ceph.bootstrap-mds.keyring

六、在ceph auth庫中建立mds.node1用戶,並賦予權限和建立密鑰,密鑰保存在/var/lib/ceph/mds/ceph-node1/keyring文件裏

ceph --cluster ceph --name client.bootstrap-mds --keyring /var/lib/ceph/bootstrap-mds/ceph.keyring auth get-or-create mds.node1 osd 'allow rwx' mds 'allow' mon 'allow profile mds' -o /var/lib/ceph/mds/ceph-node1/keyring

七、爲mds建立一個初始化文件用於啓動使用(此文件爲空文件)

touch /var/lib/ceph/mds/ceph-node1/upstart

八、爲了防止從新被安裝建立一個空的done文件

touch /var/lib/ceph/mds/ceph-node1/done

九、啓動mds進程

ceph-mds -i node1   #命令方式啓動mds進程

10.查找cephfs中文件所在的位置

stat -c %i {filepath}  #查詢文件的inode

rados -p {data-pool} ls | grep {hex-inode}  #查詢屬於該文件的有那些對象

ceph osd map {data-pool} {object-num}  #查詢該對象所在的osd

 

至此ceph一個簡單的ceph集羣部署完成

參考:http://boris05.blog.51cto.com/1073705/1439874

相關文章
相關標籤/搜索