Git 分布式 Moosefs + Corosync + DRBD 集群

    對于 Git 集群來說,在不采用存儲陣列的情況下,分布式存儲系統是一個很好的解決方案。目前可使用的分布式文件系統,初步了解了一下,Git 是屬于小文件的應用,因此可考量的我想就只有目前的 Moosefs、Ceph 了,Ceph 目前好似國內應用不多,貌似不太穩定。至于 GlusterFS 其比較適用于大文件的應用場景,而且其文件的存儲方式有別于 Moosefs 和 Ceph:

  • Moosefs 和 Ceph 都屬于文件多副本的方式,集群擴展較比容易, 這點 GlusterFS 不具備;

  • GlusterFS 是基于鏡像的方式,其通過 AFR、DHT、Stripe 組合的方式,來創建卷管理,管理比較麻煩。且其應用場景主要在 KVM 等虛擬化管理上。

    下圖,是摘自網上的一個分布式文件系統的對比。

MooseFS(MFS)

Ceph

GlusterFS

Lustre

Metadata server

單個 MDS,存在單點故障和瓶頸。

多個 MDS,不存在單點故障和瓶頸。MDS 可以擴展,不存在瓶頸。

無,不存在單點故障??窟\行在各個節點上的動態算法來代替 MDS,不需同步元數據,無硬盤 I/O 瓶頸。

MDS(互相備份)MDS不可以擴展,存在瓶頸。

FUSE

支持

支持

支持

支持

訪問接口

POSIX

POSIX

POSIX

POSIX/MPI

文件分布/數據分布

文件被分片,數據塊保存在不同的存儲服務器上。

文件被分片,每個數據塊是一個對象。對象保存在不同的存儲服務器上。

Cluster TranslatorsGlusterFS集群存儲的核心)包括 AFR、DHT Stripe 三種類型。
  AFR
相當于 RAID1,每個文件都被復制到多個存儲節點上。
  Stripe
相當于 RAID0,文件被分片,數據被條帶化到各個存儲節點上。
  Translators
可以組合,即 AFR Stripe 可以組成 RAID10,實現高性能和高可用。

可以把大文件分片并以類似 RAID0 的方式分散存儲在多個存儲節點上。

冗余保護/副本

多副本

多副本

鏡像

數據可靠性

由數據的多副本提供可靠性。

由數據的多副本提供可靠性。

由鏡像提供可靠性。

由存儲節點上的RAID1RAID5/6提供可靠性。假如存儲節點失效,則數據不可用。

備份

提供備份工具。支持遠程備份。

故障恢復

手動恢復

當節點失效時,自動遷移數據、重新復制副本。

當節點、硬件、磁盤、網絡發生故障時,系統會自動處理這些故障,管理員不需介入。

擴展性

增加存儲服務器,可以提高容量和文件操作性能。但是由于不能增加MDS,因此元數據操作性能不能提高,是整個系統的瓶頸。

可以增加元數據服務器和存儲節點。容量可擴展。文件操作性能可擴展。元數據操作性能可擴展。

容量可擴展。

可增加存儲節點,提高容量可文件操作性能,但是由于不能增加MDS,因此元數據操作性能不能提高,是整個系統的瓶頸。

安裝/部署

簡單

簡單

簡單

復雜。而且Lustre嚴重依賴內核,需要重新編譯內核。

開發語言

C

C++

C

C

適合場景

大量小文件讀寫

小文件

適合大文件。
 
對于小文件,無元數據服務設計解決了元數據的問題。但 GlusterFS 并沒有在 I/O 方面作優化,在存儲服務器底層文件系統上仍然是大量小文件,本地文件系統元數據訪問是瓶頸,數據分布和并行性也無法充分發揮作用。因此, GlusterFS 的小文件性能還存在很大優化空間。

大文件讀寫

產品級別

小型

中型

中型

重型

應用

國內較多

較多用戶使用

HPC 領域。

優缺點

實施簡單,存在單點故障。

不穩定,目前還在實驗階段,不適合于生產環境。

無元數據服務器,堆棧式架構(基本功能模塊可以進行堆棧式組合,實現強大功能)。具有線性橫向擴展能力。由于沒有元數據服務器,因此增加了客戶端的負載,占用相當的 CPU 和內存。但遍歷文件目錄時,則實現較為復雜和低效,需要搜索所有的存儲節點。因此不建議使用較深的路徑。

很成熟、很龐大。

    對于 Git 分布式存儲的方案,前前后后,測試了一下 Moosefs、Mogilefs 和 GlusterFS,最終還是在管理便利上選擇在 Moosefs 和 Ceph 中選擇一個,Ceph 是基于內核級的,效率最高,但目上前好似不穩定,因此對于 Git 集群存儲我還是選擇了目前國內使用最多的 Moosefs。

    Moosefs 目前最新版本為2.x,分為 CE 社區版 和 PRO 專業版(收費),CE 只擁有單 Master,Pro 有雙 Master 機制,自我實現 HA 高可用。

    先來一張整個 Git 集群的拓撲圖(基于 Moosefs CE HA 高可用,仿 PRO 雙 master 機制):

mfs cluster.jpg

    整個集群使用兩組集群方案:

·         LVS + Keepalvied,實現后端 Git Server 的集群

·         Corosync + Pacemake + DRBD,實現后端 Git Server 存儲資源的分布式集群。

    Keepalived + LVS 怎么實現(具體不做介紹),我想大家學過馬哥的都知道怎么做,這里不做介紹。馬哥教育,你值得選擇!

    允許我偷懶一下,下面給出一份 Git Moosefs(CE) + Corosync + Pacemaker + CRM + DRBD 的單 Master HA 高可用方案,整個集群環境測試,我還利于了 Cobbler + Ansbile + KVM 來完成虛擬機,再到真實物理機的測試。對于 KVM 我還是推薦大家學了馬哥視頻以后,就不要再去用 VMWare,不是說它不好,而是對于一個 Linuxer 而言,我們要盡量 Linux 化,何況我們還有 Openstack 可用。在學好一個東西的時候,盡量全部使用命令行的工具,慎用圖形化的工具,在掌握以后,倒是無所謂了。而且在掌握一個知識點以后,要不斷總結,馬哥的視頻前后有很多關聯性的,總結再總結,實踐再實踐,理論很重要。筆記部分在每學一個知識點以后,要回頭看看之前的東西是否有優化完善的地方,有就回去再總結、再完善,那筆記會很豐滿的。我不太喜歡寫博客,我習慣寫筆記,公司內部的 Wiki 我都懶得寫,我基本就是每總結完一個筆記,就直接把筆記打印成 PDF 放到 Wiki 或者博客上了。我寫筆記很費時,因為我總會把筆記補得豐滿,解決自己所有的疑惑點以后才會認可這份筆記,這通常需要一個很長的時間跨度。因此,博客對我來說,處女座很糾結,我喜歡寫筆記。有點費話了,報歉,大家忽略吧^-^

     Moosefs 雙 Master + 三臺 chunkserver,一共五臺設備,在簡單的以三份副本的測試中,其性能如下表所示(普通 PC 機,單個硬盤,7200 轉 SATA 接口):

讀速度(MB/S)

寫速度(MB/S)

單點

175

150

分布式(三節點)

450

90

性能對比

提升:157%

下降:40%

    

Git 分布式 Moosefs + Corosync + DRBD 集群05 – Moosefs 分布式文件系統 – 01.pdf

Git 分布式 Moosefs + Corosync + DRBD 集群05 – Moosefs 分布式文件系統 – 02 .pdf

Git 分布式 Moosefs + Corosync + DRBD 集群05 – Moosefs 分布式文件系統 – 03.pdf

Git 分布式 Moosefs + Corosync + DRBD 集群05 – Moosefs 分布式文件系統 – 04.pdf

Git 分布式 Moosefs + Corosync + DRBD 集群05 – Moosefs 分布式文件系統 – 05.pdf

Git 分布式 Moosefs + Corosync + DRBD 集群05 – Moosefs 分布式文件系統 – 06.pdf

Git 分布式 Moosefs + Corosync + DRBD 集群05 – Moosefs 分布式文件系統 – 07.pdf

Git 分布式 Moosefs + Corosync + DRBD 集群05 – Moosefs 分布式文件系統 – 08.pdf

Git 分布式 Moosefs + Corosync + DRBD 集群mfs_role.pdf 這個是 ansible 的腳本,請把 pdf 改為 tgz 解壓即可。

    Corosync 如何配置并沒有細細說道,可回看馬哥的視頻,文章結尾只給出了 CIB 的配置部分。最后還是打下廣告,馬哥教育,你值得擁有。

    最后,本著嚴謹的原則,附上之前 Cobbler 更新版文章:追加 Cobbler 模板引擎(修正)、其內部源的搭建方式。

Git 分布式 Moosefs + Corosync + DRBD 集群01 – Cobbler 自動化部署系統 – 01 .pdf

Git 分布式 Moosefs + Corosync + DRBD 集群01 – Cobbler 自動化部署系統 – 02.pdf

END

原創文章,作者:影·隨行,如若轉載,請注明出處:http://www.www58058.com/11748

(0)
影·隨行影·隨行
上一篇 2016-02-19
下一篇 2016-02-24

相關推薦

  • sed和awk和數組實踐-week15

    1、總結sed和awk的詳細用法; (1) sedsed:Stream EDitor,流編輯器,行編輯器 基本原理:一次從文本中讀取一行,放到sed自己的工作車間加工, 該工作車間叫做模式空間(pattern space)判斷該行是否符合過濾模式, 如果符合過濾模式: 送往標準輸出(終端) 執行編輯操作, 從模式空間中處理以后,處理過后送到標準輸出(不一定有…

    Linux干貨 2017-05-06
  • bash腳本進階(續)

     1、打印99乘法表 [root@ _212_ ~/bin/for_script]# cat 99_changfa.sh  #!/bin/bash line=1 for i in `seq 1 9`;     …

    Linux干貨 2016-08-21
  • 群集簡介和LVS_nat模式配置

    群集簡介: 群集(或集群)和稱呼來自于英文單詞cluster,表示一群、一串的意思,用在服務器領域則表示大量服務器的集合體,以區分于單個服務器。 根據實際企業環境的不同,群集所提供的功能也各不相同,采用的技術細節也可能各有千秋,但無論哪種群集,都至少包括兩臺節點服務器。而對外表現為一個整體,只提供一個訪問入口(域名或IP地址),相當于一臺大型計算機。根據群集…

    Linux干貨 2017-02-13
  • 基礎命令

    1,對于Linux的實驗環境我們要用到虛擬機,往往每次上線都要登錄,這時候如果把用戶設為自動登錄就會方便許多,接下來就介紹下設置虛擬機的自動登錄 , /etc/gdm/custom.conf 這個就是設置自動登錄的一個配置文件,我們先來使用nano打開這個文件,如下 # GDM configuration storage 這是GDM的一個配置存儲 [daem…

    2017-11-19
  • bash變量之位置參數變量

        什么是變量     變量是 bash 環境中非常重要的一個玩意兒,就是讓某一個特定字串代表不固定的內容就是了,講的更簡單一點,我們可以“用一個簡單的 "字眼" 來取代另一個比較復雜或者是容易變動的數據”。    &nbsp…

    Linux干貨 2016-08-15
  • 硬盤分區MBR和GPT選哪個好?有什么區別?

    當前主流的硬盤分區方式有兩種:MBR和GPT。 一、MBR與GPT簡介與結構 什么是MBR?         MBR,全稱為Master Boot Record,即硬盤的主引導記錄。是對IBM兼容機的硬盤或者可移動磁盤分區時,在驅動器最前端的一段引導扇區。 MBR的組成部分       &…

    Linux干貨 2016-08-29
欧美性久久久久