對于 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 Translators(GlusterFS集群存儲的核心)包括 AFR、DHT 和 Stripe 三種類型。 |
可以把大文件分片并以類似 RAID0 的方式分散存儲在多個存儲節點上。 |
|
冗余保護/副本 |
多副本 |
多副本 |
鏡像 |
無 |
|
數據可靠性 |
由數據的多副本提供可靠性。 |
由數據的多副本提供可靠性。 |
由鏡像提供可靠性。 |
由存儲節點上的RAID1或RAID5/6提供可靠性。假如存儲節點失效,則數據不可用。 |
|
備份 |
提供備份工具。支持遠程備份。 |
||||
故障恢復 |
手動恢復 |
當節點失效時,自動遷移數據、重新復制副本。 |
當節點、硬件、磁盤、網絡發生故障時,系統會自動處理這些故障,管理員不需介入。 |
無 |
|
擴展性 |
增加存儲服務器,可以提高容量和文件操作性能。但是由于不能增加MDS,因此元數據操作性能不能提高,是整個系統的瓶頸。 |
可以增加元數據服務器和存儲節點。容量可擴展。文件操作性能可擴展。元數據操作性能可擴展。 |
容量可擴展。 |
可增加存儲節點,提高容量可文件操作性能,但是由于不能增加MDS,因此元數據操作性能不能提高,是整個系統的瓶頸。 |
|
安裝/部署 |
簡單 |
簡單 |
簡單 |
復雜。而且Lustre嚴重依賴內核,需要重新編譯內核。 |
|
開發語言 |
C |
C++ |
C |
C |
|
適合場景 |
大量小文件讀寫 |
小文件 |
適合大文件。 |
大文件讀寫 |
|
產品級別 |
小型 |
中型 |
中型 |
重型 |
|
應用 |
國內較多 |
無 |
較多用戶使用 |
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 機制):
整個集群使用兩組集群方案:
· 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% |
05 – Moosefs 分布式文件系統 – 02 .pdf
mfs_role.pdf 這個是 ansible 的腳本,請把 pdf 改為 tgz 解壓即可。
Corosync 如何配置并沒有細細說道,可回看馬哥的視頻,文章結尾只給出了 CIB 的配置部分。最后還是打下廣告,馬哥教育,你值得擁有。
最后,本著嚴謹的原則,附上之前 Cobbler 更新版文章:追加 Cobbler 模板引擎(修正)、其內部源的搭建方式。
01 – Cobbler 自動化部署系統 – 01 .pdf
END
原創文章,作者:影·隨行,如若轉載,請注明出處:http://www.www58058.com/11748