部署Ceph分佈式存儲

部署Ceph分佈式存儲,實現如下效果:

使用三臺服務器部署Ceph分佈式存儲
實現Ceph文件系統共享
將網站數據從NFS遷移到Ceph存儲

2.2 方案

實驗拓撲如圖-2所示,做具體實驗前請先配置好環境。
在這裏插入圖片描述
圖-2

備註:實際操作中DNS服務代理服務器部署在同一臺主機上(節約虛擬機資源)。

主機配置如表-2所示。
在這裏插入圖片描述
表-2
2.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:準備實驗環境

1)物理機爲所有節點配置yum源服務器。

提示:ceph10.iso在/linux-soft/02目錄。

[root@room9pc01 ~]# mkdir  /var/ftp/ceph
[root@room9pc01 ~]# mount ceph10.iso /var/ftp/ceph/

2)在node1配置SSH密鑰,讓node1可用無密碼連接node1,node2,node3

[root@node1 ~]# ssh-keygen  -f /root/.ssh/id_rsa  -N  ''
[root@node1 ~]# for i in   41  42  43
do
ssh-copy-id  192.168.2.$i
done

3)修改/etc/hosts域名解析記錄(不要刪除原有的數據),同步給所有ceph節點。

[root@node1 ~]# vim /etc/hosts
192.168.2.41    node1
192.168.2.42     node2
192.168.2.43    node3
[root@node1 ~]# for i in 41 42 43
do
     scp /etc/hosts 192.168.2.$i:/etc
done

4)爲所有ceph節點配置yum源,並將配置同步給所有節點

[root@node1 ~]# cat /etc/yum.repos.d/ceph.repo
[mon]
name=mon
baseurl=ftp://192.168.2.254/ceph/MON
gpgcheck=0
[osd]
name=osd
baseurl=ftp://192.168.2.254/ceph/OSD
gpgcheck=0
[tools]
name=tools
baseurl=ftp://192.168.2.254/ceph/Tools
gpgcheck=0
[root@node1 ~]# yum repolist                #驗證YUM源軟件數量
源標識            源名稱                    狀態
Dvd                redhat                    9,911
Mon                mon                        41
Osd                osd                        28
Tools            tools                    33
repolist: 10,013
[root@node1 ~]# for i in 41 42 43
do
     scp /etc/yum.repos.d/ceph.repo 192.168.2.$i:/etc/yum.repos.d/
done

5)所有節點主機與真實主機的NTP服務器同步時間。

提示:默認真實物理機已經配置爲NTP服務器。

[root@node1 ~]# vim /etc/chrony.conf
… …
server 192.168.2.254   iburst
[root@node1 ~]# for i in 41  42  43
do
     scp /etc/chrony.conf 192.168.2.$i:/etc/
     ssh 192.168.2.$i "systemctl restart chronyd"
done

6)使用virt-manager爲三臺ceph虛擬機添加磁盤。

每臺虛擬機添加3塊20G的磁盤。

步驟二:部署ceph集羣

1)給node1主機安裝ceph-deploy,創建工作目錄,初始化配置文件。

[root@node1 ~]# yum -y install ceph-deploy
[root@node1 ~]# mkdir ceph-cluster
[root@node1 ~]# cd ceph-cluster
[root@node1 ceph-cluster]# ceph-deploy new node1 node2 node3

2)給所有ceph節點安裝ceph相關軟件包

[root@node1 ceph-cluster]# for i in node1 node2 node3
do
     ssh $i "yum -y install ceph-mon ceph-osd ceph-mds"
done
[root@node1 ceph-cluster]# ceph-deploy mon create-initial
[root@node1 ceph-cluster]# ceph -s                    #查看結果
    cluster 9f3e04b8-7dbb-43da-abe6-b9e3f5e46d2e
     health HEALTH_ERR
     monmap e2: 3 mons at
 {node1=192.168.2.41:6789/0,node2=192.168.2.42:6789/0,node3=192.168.2.43:6789/0}
     
osdmap e45: 0 osds: 0 up, 0 in

3)準備磁盤分區,創建journal盤,並永久修改設備權限。

[root@node1 ceph-cluster]# for i in node1 node2 node3
do
     ssh $i "parted /dev/vdb mklabel gpt"
     ssh $i "parted /dev/vdb mkpart primary 1 50%"
     ssh $i "parted /dev/vdb mkpart primary 50% 100%"
 done

提示:下面的步驟在所有主機都需要操作(node1,node2,node3)

#臨時修改權限:
[root@node1 ceph-cluster]# chown  ceph.ceph  /dev/vdb1
[root@node1 ceph-cluster]# chown  ceph.ceph  /dev/vdb2
#永久修改權限:
[root@node1 ceph-cluster]# vim /etc/udev/rules.d/70-vdb.rules
ENV{DEVNAME}=="/dev/vdb1",OWNER="ceph",GROUP="ceph"
ENV{DEVNAME}=="/dev/vdb2",OWNER="ceph",GROUP="ceph"

4)使用ceph-deploy工具初始化數據磁盤(僅node1操作)。

[root@node1 ceph-cluster]# ceph-deploy disk  zap  node1:vdc   node1:vdd    
[root@node1 ceph-cluster]# ceph-deploy disk  zap  node2:vdc   node2:vdd
[root@node1 ceph-cluster]# ceph-deploy disk  zap  node3:vdc   node3:vdd  

5)初始化OSD集羣。

[root@node1 ceph-cluster]# ceph-deploy osd create \
 node1:vdc:/dev/vdb1 node1:vdd:/dev/vdb2  
//創建osd存儲設備,vdc爲集羣提供存儲空間,vdb1提供JOURNAL緩存,
//一個存儲設備對應一個緩存設備,緩存需要SSD,不需要很大
[root@node1 ceph-cluster]# ceph-deploy osd create \
 node2:vdc:/dev/vdb1 node2:vdd:/dev/vdb2
[root@node1 ceph-cluster]# ceph-deploy osd create \
 node3:vdc:/dev/vdb1 node3:vdd:/dev/vdb2 
[root@node1 ceph-cluster]# ceph -s                 #查看集羣狀態
cluster 9f3e04b8-7dbb-43da-abe6-b9e3f5e46d2e
health HEALTH_OK
     monmap e2: 3 mons at {node1=192.168.4.11:6789/0,node2=192.168.4.12:6789/0,node3=192.168.4.13:6789/0}
            election epoch 6, quorum 0,1,2 node1,node2,node3
     osdmap e45: 6 osds: 6 up, 6 in
            flags sortbitwise
      pgmap v25712: 64 pgs, 1 pools, 86465 kB data, 2612 objects
            508 MB used, 119 GB / 119 GB avail
                  64 active+clean

步驟三:部署ceph文件系統

1)啓動mds服務

[root@node1 ceph-cluster]# ceph-deploy mds create node3

2)創建存儲池(文件系統由inode和block組成)

[root@node1 ceph-cluster]# ceph osd pool create cephfs_data 128
[root@node1 ceph-cluster]# ceph osd pool create cephfs_metadata 128
[root@node1 ceph-cluster]# ceph osd lspools
0 rbd,1 cephfs_data,2 cephfs_metadata

3)創建文件系統

[root@node1 ceph-cluster]# ceph fs new myfs1 cephfs_metadata cephfs_data
[root@node1 ceph-cluster]# ceph fs ls
name: myfs1, metadata pool: cephfs_metadata, data pools: [cephfs_data ]

步驟四:遷移網站數據到ceph集羣

1)卸載web1,web2,web3的NFS共享。

暫停服務防止有人實時讀寫文件。

[root@web1 ~]# /usr/local/nginx/sbin/nginx -s stop
[root@web2 ~]# /usr/local/nginx/sbin/nginx -s stop
[root@web3 ~]# /usr/local/nginx/sbin/nginx -s stop
[root@web1 ~]# umount /usr/local/nginx/html
[root@web2 ~]# umount /usr/local/nginx/html
[root@web3 ~]# umount /usr/local/nginx/html
[root@web1 ~]# vim /etc/fstab
#192.168.2.31:/web_share/html /usr/local/nginx/html/ nfs defaults 0 0
[root@web2 ~]# vim /etc/fstab
#192.168.2.31:/web_share/html /usr/local/nginx/html/ nfs defaults 0 0
[root@web3 ~]# vim /etc/fstab
#192.168.2.31:/web_share/html /usr/local/nginx/html/ nfs defaults 0 0

2)web服務器永久掛載Ceph文件系統(web1、web2、web3都需要操作)。

在任意ceph節點,如node1查看ceph賬戶與密碼。

[root@node1 ~]# cat /etc/ceph/ceph.client.admin.keyring 
[client.admin]
    key = AQA0KtlcRGz5JxAA/K0AD/uNuLI1RqPsNGC7zg==

/etc/rc.local是開機啓動腳本,任何命令放在該文件中都是開機自啓。

[root@web1 ~]#  mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ \
-o name=admin,secret=AQA0KtlcRGz5JxAA/K0AD/uNuLI1RqPsNGC7zg==
[root@web1 ~]# echo 'mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ \
-o name=admin,secret=AQA0KtlcRGz5JxAA/K0AD/uNuLI1RqPsNGC7zg==' >> /etc/rc.local 
[root@web1 ~]# chmod +x /etc/rc.local
[root@web2 ~]#  mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ \
-o name=admin,secret=AQA0KtlcRGz5JxAA/K0AD/uNuLI1RqPsNGC7zg==
[root@web2 ~]# echo 'mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ \
-o name=admin,secret=AQA0KtlcRGz5JxAA/K0AD/uNuLI1RqPsNGC7zg==' >> /etc/rc.local 
[root@web2 ~]# chmod +x /etc/rc.local
[root@web3 ~]#  mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ \
-o name=admin,secret=AQA0KtlcRGz5JxAA/K0AD/uNuLI1RqPsNGC7zg==
[root@web3 ~]# echo 'mount -t ceph 192.168.2.41:6789:/ /usr/local/nginx/html/ \
-o name=admin,secret=AQA0KtlcRGz5JxAA/K0AD/uNuLI1RqPsNGC7zg==' >> /etc/rc.local 
[root@web3 ~]# chmod +x /etc/rc.local

另一種解決方案,還可以通過fstab實現永久掛載。

提示:如果希望使用fstab實現永久掛載,客戶端需要額外安裝libcephfs1軟件包。

[root@web1 ~]# yum -y install libcephfs1
[root@web1 ~]# vim /etc/fstab
… …
192.168.4.11:/ /usr/local/nginx/html/    ceph   defaults,_netdev,name=admin,secret=AQCVcu9cWXkgKhAAWSa7qCFnFVbNCTB2DwGIOA== 0 0

3)遷移NFS服務器中的數據到Ceph存儲

登陸NFS服務器備份數據,將備份數據拷貝給web1或web2或web3,tar備份數據時注意使用-f選項保留文件權限。

[root@nfs ~]# cd /web_share/html/
[root@nfs html]# tar -czpf /root/html.tar.gz ./*
[root@nfs html]# scp /root/html.tar.gz 192.168.2.11:/usr/local/nginx/html/

登陸web1將數據恢復到Ceph共享目錄

[root@web1 html]# tar -xf html.tar.gz
[root@web1 html]# rm -rf html.tar.gz

4)恢復web服務

[root@web1 ~]# /usr/local/nginx/sbin/nginx
[root@web2 ~]# /usr/local/nginx/sbin/nginx
[root@web3 ~]# /usr/local/nginx/sbin/nginx
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章