NEIL's_學而時習之x不學無術~私藏IT技術經驗分享部落
關於部落格
NEIL. Cheng....寫作只是為了日後工作之備忘操作參考

本部落格文章撰寫前進邁向第五年(since 2009 ~至今)仍繼續推進分享IT學習!!About Windows/Linux Server,Virtualization


分享網誌: 由於,本人預先完成LAB後,才補上撰寫文章與截圖,若發現文圖對照說明有誤..本人將盡快校正,也請不吝指教! Thanks!

  • 154596

    累積人氣

  • 74

    今日人氣

    0

    訂閱人氣

Ceph:大數據xPB規模分散式軟體定義儲存系統 :基礎架構 by Navier

[ oops.admin:10.10.10.10/24] 

cd  /oops/admin

ceph-deploy new mon1 mon2     #定義Monitor節點

---

vi   ceph.conf   #新增以下配置,將osd pool default 值由原本"3"降為"2"OSD個數

osd pool default size = 2

Then 將"ceph"安裝到各個節點

ceph-deploy install oops mon1 mon2 osd1 osd2  


Then 初始化
Monitor

ceph-deploy mon create-initial


Then 佈署
OSD(osd1,osd2 分享目錄"/oops/data")

ceph-deploy osd prepare  osd1:/oops/data osd2:/oops/data

ceph-deploy osd activate osd1/oops/data  osd2:/oops/data   #啟用osd1,osd2

Then 安裝
MDS(mon1,mon2)

ceph-deploy mds create mon1 mon2


Then 手動複製"ceph" 組態檔與"admin key" 同步到各個節點

ceph-deploy admin  oops mon1 mon2 osd1 osd2 

sudo chmod +r /etc/ceph/ceph.client.admin.keyring    

#check各節點.keyring是否有讀取權限?若無讀取權限,節點將不會正常運作


一切各節點安裝就緒後,我們可以使用系統指令來檢視"ceph -s"  "配置資訊"

Health HEALTH_OK  #目前Ceph Storage Cluster 正常運作中

monmap e1: 2 mons at {mon1=10.10.10.20:6789/0,mon2=10.10.10.21:6789/0}, 

pgmap v1053: 164 pgs, 3 pools, 14759 kB data, 43 objects
           
10336 MB used, 30595 MB / 40932 MB avail      <--目前有近40GB空間可用


*mdsmap
注意這是我完成整個LAB後成果,一般來說這一步你看到應該"0/0/0"up 狀態為正解,

                   後面內容提到"掛載CephFS檔案系統"將介紹,在此先略過


  ceph osd tree    #可以查看osd weight (權重值可手動變更), OSD Live Status相關資訊

ceph df      

#查看pool,rbd,metadata 使用率,如下圖我們將手動切一區塊RBD大小約15GB

  Ceph.Client 掛載測試演示用
(此為本篇Lab最終完成結果演示)

A.  oops.admin:10.10.10.10/24
 [建立RBD區塊,格式化,並掛載於系統]

安裝
ceph.client   #倘若是獨立安裝節點,請參造以下步驟,然而我們是

在admin節點扮演client

ceph-deploy install  "oops"

ceph-deploy admin   "oops"

<手動為Ceph Storage Cluster 建立一個Block Device>: "預定配置15GB容量"

#Neil現手動刪除先前測試Lab所建立Block Device "monkey" 還原重新建置演示

[刪除現存IMAGE步驟]

rbd ls rbd            #查看rbd pools底下有哪些建立好的image,我們看到有一"monkey"

rbd --image monkey info      #詳細查看該image detail資訊

rbd rm monkey    #現手動刪除該image,並可看到執行成功後回傳訊息

 
"Removing image: 100% complete...done."

ceph osd tree        #前幾步我們看到曾有個"rbd" pools已經消失

Then 我們現在要重新建構一個名為"kiki" image 並指定放置於名為"love"儲存池中

建立新儲存池名為"love"

ceph osd pool create  love 128 128    #目前OSD總數="2"副本數2

Total PGs = (Total_number_of_OSD * 100) / max_replication_count   #計算公式

(2*100)/2=100
  #挑選最接近2的N次方數值倍數接近100的"128"...故配置128



#"love"後面接第一個pg_num,第二是pgp_num 此 2值須一致 ,需視目前OSD個數做合理規劃,

  可參考官方規劃配置
點我
 

rbd create love/kiki  --size 15360     #block name="kiki",pool="love",15GB容量

rbd --image kiki -p love info      
#建立image時若無定義pool,預設將配置到"rbd"這個儲存池

sudo modprobe rbd                                                    #手動載入rbd模組

sudo rbd map kiki --name client.admin -m mon1  
#Map the image to a block device,monitor
 
                                                                                         
sudo rbd unmap /dev/rbd0 可解除map

sudo mkfs.xfs    /dev/rbd/love/kiki      
 #格式化Block Device."xfs" format


[手動掛載Block Device]

mkdir   /home/neil/tutu                             #建立掛載rbd block目錄

mkdir  /home/neil/ceph-fuse                   
#建立掛載ceph-fuse目錄

sudo mount   /dev/rbd/love/kiki   /home/neil/tutu     #成功掛載,rbd0

[配置自動開機掛載RBD Block Device]

sudo vi /etc/fstab

/dev/rbd/love/kiki /home/neil/tutu  xfs    defaults,noatime,_netdev        0       0


[rbdmap script 安裝與開機自動啟用]

sudo wget https://raw.github.com/ceph/ceph/a4ddf704868832e119d7949e96fe35ab1920f06a/src/init-rbdmap -O /etc/init.d/rbdmap

sudo chmod +x /etc/init.d/rbdmap

sudo update-rc.d rbdmap defaults


sudo vi   /etc/ceph/rbdmap  

#使用sudo rbd showmapped 檢視 


加入pool name & image name,存檔離開後將其設定有讀取(read)權限

love/kiki


 vi   /etc/init.d/rbdmap   

RBDMAPFILE="/etc/ceph/rbdmap"      #確認方才我司編輯設定檔路徑無誤,離開

[測試開機掛載 Block Device]

1.卸載方才掛載好的目錄"/home/neil/tutu",並重新啟動

   sudo umount  /home/neil/tutu 

   sudo  shutdown -r now

2. 檢視掛載目錄,我們可手動隨時停用/啟用RBD掛載,掛載RBD Block這區塊算是告一段落

3.  ceph df : 網路下一個步驟前說明,"n1_data,n1_meta"兩個pools計畫給MDS 使用,

                   
理應不存在,亦是我在測試Lab前預先建置pools..後續步驟將介紹 

 
B. [採用ceph-fuse 掛載檔案系統]

     
 sudo apt-get install ceph-fuse   #安裝ceph-fuse,順利安裝

一個Ceph 文件系統需要至少兩個RADOS 存儲池,一用於數據(data)、另一用於元數據。

(metadata )
 配置這些Pool時可參考:

Total PGs = (Total_number_of_OSD * 100) / max_replication_count   #計算公式

(2*100)/2=100 
  #挑選最接近2的N次方數值倍數接近100的"128"...故配置128


#目前有四個pools,n1_data(數據儲存用),n1_meta(元數據),rbd預設pools

建立CephFS檔案系統 其建立步驟參考如下

ceph osd pool create n1_data <pg_num>   #先建立兩個Pools ,先前設定為50,50後手動修正

ceph osd pool create  n1_meta  <pg_num>


#ceph fs new <fs_name> <metadata> <data>  創建CephFS檔案系統

ceph fs new  n1_meta  n1_data
ceph fs ls

ceph osd lspools   

ceph osd pool  get  n1_data  pg_num    #檢視pg_num,pgp_num數值,

ceph osd pool get   n1_meta pgp_num

參考下圖: 
<metadata> <data>  眼尖朋友會看到我之前配置順序寫反,請留意修正==|||(汗)

修正pg_num,pgp_num 為"128",參考步驟一一修正合適數值

ceph osd pool set  n1_data  pg_num  128

ceph osd pool set  n1_meta  pg_num  128

ceph osd pool set  n1_data  pgp_num  128

ceph osd pool set  n1_meta  pgp_num  128

建議: 我會在cepf.conf 定義好以下Default 值

osd pool default pg num = 128

osd pool default pgp num = 128

Then
ceph.conf 組態同步到各台主機中

[oops.admin]

ceph-deploy  --overwrite-conf admin  mon1 mon2 osd1 osd2  

當我們建立好CephFS檔案系統好後,可以看到檔案系統已經UP,接下來我們就可以開始掛載

 CephFS檔案系統

      ceph mds stat    1/1/1 up ....


用內核驅動掛載ceph文件系統

#這次掛載我們掛在兩台mds (mon1,mon2) 做主被動備援設計,掛載到本機的

 /home/neil/ceph-fuse
目錄下,搭上金鑰驗證(cephx)啟用

sudo mount -t ceph mon1,mon2:6789:/ /home/neil/ceph-fuse  -o name=admin,secret=AQC+kRNXcA3tOhAAZSO9NlTZhkV/MFO7dTsCjQ=

金鑰可在/etc/ceph/ceph.client.admin.keyring 找到


另一種內核掛載方式"secretfile"  #將金鑰匯入指定檔案,掛載檔案系統時讀取(+r 讀取權限)

sudo mount -t ceph mon1,mon2:6789:/ /home/neil/ceph-fuse  -o name=admin,secretfile=/oops/admin/admin.secret

使用ceph-fuse 掛載cephfs檔案系統成功!OK

 sudo ceph-fuse -m mon1,mon2:6789    /home/neil/ceph-fuse/

開機時自動掛載CephFS

sudo    vi /etc/fstab  
#加入以下即可完成開機掛載,結束本篇十座目標

id=admin,conf=/oops/admin/ceph.conf  /home/neil/ceph-fuse  fuse.ceph defaults,noatime,_netdev 0 0

Neil結論: 

於本篇,我們完成Ceph營運環境建構,利用ceph-deploy 工具快速完成

ceph.admin,ceph.mon,ceph.mds.ceph.osd 佈署,並介紹實作掛載"rbd" Block Device與"cephFS"

檔案系統,
Ceph Block 掛載形式類似iSCSI 掛載形式常用於與OpenStack,Docker整合使用,亦可當作

Apache Hadoop 資料儲存取代HDFS 參考
點我 ,相當具彈性...下一篇我們將日常運維議題更往前推進...

[懷念家兔KIKI]

這幾週心力交瘁,在完成上一篇"
 PowerDNS 基於MariaDB Galera Cluster架構下設計by Navier"
 
之際陪我度過九個年頭兔兔KIKI,急症送醫住院,很遺憾住院三天後,最終還是離開我了(腸胃道蠕動停滯),

相當難過
花了一些時間平復內心趨近於平靜,祈禱妳在另一個世界解脫輪迴,登極樂世界修行....

別了KIKI,我們愛妳...感謝過去有妳的陪伴,期待你我再度重遇...Neil 

相簿設定
標籤設定
相簿狀態