PVE&Ceph&Bcache 超融合項目之部署實施方案(五)

fans news 發佈 2022-01-11T10:18:59+00:00

如果第一次刷到這個系列的文章,可能會看得一頭霧水,這是某超融合項目的一部分,前幾篇的傳送門在這裡:PVE&Ceph&Bcache 超融合項目之部署實施方案(一) PVE&Ceph&Bcache 超融合項目之部署實施方案(二) PVE&Ceph&Bcache 超融合項目之部署實施方

如果第一次刷到這個系列的文章,可能會看得一頭霧水,這是某超融合項目的一部分,前幾篇的傳送門在這裡:

PVE&Ceph&Bcache 超融合項目之部署實施方案(一)

PVE&Ceph&Bcache 超融合項目之部署實施方案(二)

PVE&Ceph&Bcache 超融合項目之部署實施方案(三)

PVE&Ceph&Bcache 超融合項目之部署實施方案(四)

基於Bcache的超融合項目之災難預案及破壞性實驗處置方案(二)

基於Bcache的超融合項目之災難預案及破壞性實驗處置方案(一)

PVE+Ceph 超融合項目之高可用效果演示

PVE+Ceph 超融合項目之硬體性能基線測試

Proxmox VE+Ceph 3節點超融合平台百萬IOPS挑戰

7.4.配置Ceph的OSD

由圖3和表1可知,各節點伺服器支持10個盤位,系統盤不動,Ceph的OSD需要選擇未做RAID的硬碟,每個節點的OSD有8個。

本項目中,三個節點的Ceph的OSD磁碟配置信息如圖58、圖59所示。



7.4.1 Bcache簡介

根據甲方的硬體配置情況,我們設計了緩存方案,充分利用NVME ssd高速長壽命優勢。在測試用的vsan集群上,使用了NvME SSD作為緩存檔,測得全集群4K隨機讀50萬IOPS的成績。相關結果詳見本項目《性能測試之集群性能測試》文檔。Ceph使用比較廣的兩套緩存方案,首先排除了cache tier方案,該方案IO路徑長,結構複雜,性能不穩定,在紅帽的官方文檔中,已經不再推薦此方案,如圖60所示


本項目採用的是另一套比較成熟的Bcache方案。Bcache是在3.10以後的版本加入Linux內核主線的,本項目的底層系統是使用5.1內核的,對Bcache技術是完美支持的。 Bcache緩存是一個Linux內核塊存儲層緩存。用SSD固態硬碟,當做IO數據緩存,提升系統的IO性能,重點是提升了隨機讀寫的性能。傳統的SATA SSD,特別是機械硬碟,在隨機讀寫的性能比較差。

隨著SSD,NVME,傲騰等高性能存儲產品不斷的發布,給傳統存儲系統提供了更多的性能提升方案。現在固態存儲設備的價格也是不斷的下降。解決問題的成本在下降,但是帶來的效果確實驚人。

Bcache支持writearound,writethrough,writeback,none 四種使用方式。Bcache默認不會緩存順序IO,只緩存ssd擅長的隨機讀寫,大多數情況推薦使用writeback方式。這樣能夠極大的發揮SSD和HDD的性能,又不會因為HDD的性能影響bcache的發揮!

數據丟失是存儲系統的硬傷,bcache也具有自己的元數據系統,即 journal和b+樹,通過這兩個組合實現掉電後的數據恢復工作,首先是進行b+樹的恢復,然後在通過journal對b+樹的key進行正確性和有效性的修訂

第一步:為節點1的NvME SSD創建分區

登錄節點1輸入以下命令,為該磁碟平均分成4個區:

parted -s /dev/nvme0n1  mklabel gpt
parted /dev/nvme0n1 mkpart primary 0% 25%
parted /dev/nvme0n1 mkpart primary 25% 50%
parted /dev/nvme0n1 mkpart primary 50% 75%
parted /dev/nvme0n1 mkpart primary 75% 100%

分區完成後效果如圖61所示。


第二步:初始化bcache磁碟

用以下命令初始4個bcache磁碟,「-C」參數用於指定緩存檔,「-B」參數用於指定後端盤。第二塊NvME SSD也照此處理,不再贅述。

make-bcache -C /dev/nvme0n1p1 -B /dev/sda
make-bcache -C /dev/nvme0n1p2 -B /dev/sdb
make-bcache -C /dev/nvme0n1p3 -B /dev/sdc
make-bcache -C /dev/nvme0n1p4 -B /dev/sdd

創建好的8個bcache,如圖62、63所示



第三步,創建ceph卷

用以下命令創建ceph卷,不指定DB磁碟和WAL磁碟,保持默認即可。如圖64所示。

for i in {0..7}; do
ceph-volume lvm prepare --bluestore --data /dev/bcache${i}
done


第四步,激活ceph卷,創建OSD

此時,用ceph-volume lvm list 命令已經可以查看到創建好的osd了,如圖65所示。本步驟實際上是把osd id與 fsid綁定 ,並將對應的osd激活。為了提高操作效率,用通過以下腳本來激活。


#!/bin/bash
osd_list1=(`ceph-volume lvm list | grep "osd id" |awk '{print $3}'`)
osd_list2=(`ceph-volume lvm list | grep "osd fsid" |awk '{print $3}'`)
for i in 0 1 2 3 4 5 6 7;
do
    ceph-volume lvm activate ${osd_list1[i]}  ${osd_list2[i]}
done

剛剛上線的osd,是沒有任何數據的,通過圖66可以看出,「可用(%)」一欄,全部為0.00。ceph的自動平衡機制很快會發現新加入的osd,通過平衡算法,很快就會開始數據遷移。


實驗環境下數據並不多,很多平衡完畢,圖67所示的就是平衡之後的空間占用情況。


第五步,節點2、節點3創建bcache並激活osd

步驟與節點1類似,在本項目中,資料庫磁碟(DB Disk)和WAL磁碟(WAL Disk)都選擇了默認方式,如果有多一塊SSD,做一下硬碟規劃會更好。具體過程不再贅述。

第六步,在配置信息的Crush Map查看集群的OSD配置

選擇任意節點登錄集群,選擇「n1→Ceph→配置→Crush Map」,從Crush Map中可以查看集群的OSD配置信息如下所示

Crush Map:
# begin crush map
tunable choose_local_tries 0
tunable choose_local_fallback_tries 0
tunable choose_total_tries 50
tunable chooseleaf_descend_once 1
tunable chooseleaf_vary_r 1
tunable chooseleaf_stable 1
tunable straw_calc_version 1
tunable allowed_bucket_algs 54

# devices
device 0 osd.0 class ssd
device 1 osd.1 class ssd
device 2 osd.2 class ssd
device 3 osd.3 class ssd
device 4 osd.4 class ssd
device 5 osd.5 class ssd
device 6 osd.6 class ssd
device 7 osd.7 class ssd
device 8 osd.8 class ssd
device 9 osd.9 class ssd
device 10 osd.10 class ssd
device 11 osd.11 class ssd
device 12 osd.12 class ssd
device 13 osd.13 class ssd
device 14 osd.14 class ssd
device 15 osd.15 class ssd
device 16 osd.16 class ssd
device 17 osd.17 class ssd
device 18 osd.18 class ssd
device 19 osd.19 class ssd
device 20 osd.20 class ssd
device 21 osd.21 class ssd
device 22 osd.22 class ssd
device 23 osd.23 class ssd

# types
type 0 osd
type 1 host
type 2 chassis
type 3 rack
type 4 row
type 5 pdu
type 6 pod
type 7 room
type 8 datacenter
type 9 zone
type 10 region
type 11 root

# buckets
host n1 {
        id -3           # do not change unnecessarily
        id -2 class ssd         # do not change unnecessarily
        # weight 13.973
        alg straw2
        hash 0  # rjenkins1
        item osd.0 weight 1.747
        item osd.1 weight 1.747
        item osd.2 weight 1.747
        item osd.3 weight 1.747
        item osd.4 weight 1.747
        item osd.5 weight 1.747
        item osd.6 weight 1.747
        item osd.7 weight 1.747
}
host n2 {
        id -5           # do not change unnecessarily
        id -6 class ssd         # do not change unnecessarily
        # weight 13.973
        alg straw2
        hash 0  # rjenkins1
        item osd.11 weight 1.747
        item osd.10 weight 1.747
        item osd.12 weight 1.747
        item osd.13 weight 1.747
        item osd.14 weight 1.747
        item osd.15 weight 1.747
        item osd.8 weight 1.747
        item osd.9 weight 1.747
}
host n3 {
        id -7           # do not change unnecessarily
        id -8 class ssd         # do not change unnecessarily
        # weight 13.973
        alg straw2
        hash 0  # rjenkins1
        item osd.16 weight 1.747
        item osd.17 weight 1.747
        item osd.19 weight 1.747
        item osd.18 weight 1.747
        item osd.20 weight 1.747
        item osd.21 weight 1.747
        item osd.22 weight 1.747
        item osd.23 weight 1.747
}
root default {
        id -1           # do not change unnecessarily
        id -4 class ssd         # do not change unnecessarily
        # weight 41.918
        alg straw2
        hash 0  # rjenkins1
        item n1 weight 13.973
        item n2 weight 13.973
        item n3 weight 13.973
}

# rules
rule replicated_rule {
        id 0
        type replicated
        min_size 1
        max_size 10
        step take default
        step chooseleaf firstn 0 type host
        step emit
}

# end crush map

7.5.配置CephFS

7.5.1.創建CephFS

選擇「n1→Ceph→CephFS→創建CephFS」,選擇默認值創建CephFS,創建之後如圖68所示


7.5.2.元數據伺服器配置

選擇「n1→Ceph→CephFS→元數據伺服器→創建」,將節點1添加進來,如圖69所示。


將節點1添加到元數據伺服器之後,再用同樣的方法將節點2、節點3添加到元數據伺服器之中去,如圖70所示。


添加好元數據伺服器節點之後,可以在Ceph監控界面看到元數據伺服器的監控信息,如圖71所示。


7.6.配置Pools資源池

7.6.1.節點1配置Pools資源池

在Pools資源池配置之前,節點1的Pools界面如圖72所示。


第一步:創建rbd存儲

選擇「n1→Ceph→Pools→創建」,點擊「創建」按鈕,創建名稱為「rbd」的存儲,創建之後如圖73所示。


根據官方的文檔,# of PGs這個數值比較關鍵,如果不合適的話,Ceph會告警,官方建議:

若少於5個OSD, 設置pg_num為128。

5~10個OSD,設置pg_num為512。

10~50個OSD,設置pg_num為4096。

本項每個節點有8個OSD,三個節點共24個OSD,pg_num這裡我設置為512,後續有問題還可以調整。

第二步:創建完成之後,節點1左側的存儲菜單樹中會出現這個存儲名稱,如圖74所示,正常情況下,就可以在rbd上安裝虛擬機了。


第三步:節點1左側的存儲菜單樹中各個存儲狀態查看,如圖75、圖76、圖77所示。




7.6.2.節點2配置Pools資源池

節點2的Pools資源池配置與節點1的相似,不再贅述。

7.6.3.節點3配置Pools資源池

節點3的Pools資源池配置與節點1的相似,不再贅述。

7.7.Ceph磁碟管理

7.7.1.OSD磁碟下線

更換Ceph的OSD磁碟,先選中OSD磁碟,按「停止」按鈕先停止OSD服務,接著再按「Out」按鈕,OSD.23的狀態如圖78所示就可以把該磁碟取出。


7.7.2.OSD磁碟上線

OSD磁碟加載與OSD磁碟卸載過程相反,把磁碟插進伺服器的盤位中,先按「in」按鈕,等「in」圖標變為綠色之後,再按「啟動」按鈕啟動OSD服務,幾秒鐘之後OSD便會恢復正常。

超融合私有化部署並不適合中小企業,個人認為,如果一年到頭,在公有雲上花費不超過50萬,完全沒必要自己折騰一套這麼複雜的平台。這種方式適合恰好有自建機房、有自己的伺服器,在現成的硬體上通過免費開源的軟體,實現低成本私有雲的超融合部署。對於那些對數據安全敏感,不能上公有雲的場景也適用。

本系列的文章就到這裡了,能堅持看完的兄弟,你們是好樣的,來評論區留個言,我給你們點讚啊!也歡迎大家批評指正。

關鍵字: