一.MogileFS簡單介紹
MogileFS是一個開源的分布式文件存儲系統(tǒng)晚伙,用于組建分布式文件集群欧啤。由LiveJournal旗下的Danga Interactive公司開發(fā)拿愧。 Danga團隊開發(fā)了包括 Memcached贼急、MogileFS蜗元、Perlbal (Perlbal是一個強大的Perl寫的反向代理服務(wù)器)等多個知名的開源項目拾因。
目前使用MogileFS 的公司非常多旺罢,以大眾點評為例旷余,用戶全部圖片均有mogileFS存儲,數(shù)據(jù)量已經(jīng)達到500TB級別以上扁达。
二.MogileFS特征
1.應(yīng)用層提供服務(wù)正卧,沒有特殊組件要求
2.無單點失敗,主要有三個組件組成跪解,分為tracker(跟蹤節(jié)點)炉旷、mogstore(存儲節(jié)點)、database(數(shù)據(jù)庫節(jié)點),皆可實現(xiàn)高可用,可支持多點冗余
3.自動文件復制:復制的最小單位不是文件叉讥,而class窘行;
4.傳輸中立,無特殊協(xié)議:可以通過NFS或HTTP進行通信节吮;
5.簡單的命名空間: 每個文件對應(yīng)一個key
6.不共享任何數(shù)據(jù)抽高,MogileFS不需要依靠昂貴的SAN來共享磁盤,每個機器只用維護好自己的磁盤
7.無需RAID支持,應(yīng)用層可以直接實現(xiàn)RAID透绩,不共享任何東西翘骂,通過“集群”接口提供服務(wù),具有比RAID更好的可靠性
三.MogileFS架構(gòu)三大組件
1.tracker(跟蹤節(jié)點)-------->mogilefsd進程
它是MogileFS的核心,是一個調(diào)度器,mogilefsd進程是trackers進程.
trackers的主要職責有:刪除數(shù)據(jù)帚豪、復制數(shù)據(jù)碳竟、監(jiān)控、查詢狸臣、Reaper(收割程序)等等.
這個是基于事件的( event-based ) 父進程/消息總線來管理所有來自于客戶端應(yīng)用的交互(requesting operations to be performed), 包括將請求負載平衡到多個”query workers”中,然后讓 mogilefs的子進程去處理.
它借助數(shù)據(jù)庫保存各節(jié)點文件的元數(shù)據(jù)信息保存每個域中所有鍵的存儲位置分布,方便檢索定位數(shù)據(jù)位置的同時監(jiān)控各節(jié)點莹桅,告訴客戶端存儲區(qū)位置并指揮storage節(jié)點復制數(shù)據(jù)副本,進程名為mogilefsd(7001)烛亦。
2.database(數(shù)據(jù)庫節(jié)點)-------->存放元數(shù)據(jù)地方
用于為tracker存儲元數(shù)據(jù)信息诈泼,是Trackers 來操作和管理它。建議做成高可用
3.mogstore(存儲節(jié)點)------------>實際文件存放的地方
存儲節(jié)點是mogilefs的存儲文件儲存的地方,也是 mogstored 節(jié)點,也叫 Storage Server,一臺存儲要啟動一個mogstored服務(wù)煤禽,擴容就是增加這些機器铐达,擴大文件存放的地方,mogstored(7501),perbal(7500)。
它將指定域中的鍵轉(zhuǎn)換特有的文件名存儲與在特定的設(shè)備文件中檬果,轉(zhuǎn)換后文件名為值瓮孙,storage自動維護鍵值之間的對應(yīng)關(guān)系,storage節(jié)點使用http進行數(shù)據(jù)傳輸选脊,依賴于perbl杭抠,進程為mogstored,perbal恳啥;
通常是一個HTTP(WebDAV)服務(wù)器偏灿,用來數(shù)據(jù)的創(chuàng)建、刪除钝的、獲取;
4.mogileFS三大模塊組成圖:
簡單說明:
客戶端的請求先發(fā)給tracker節(jié)點菩混,然后tracker節(jié)點到database節(jié)點去查詢數(shù)據(jù)存儲在什么位置忿墅,然后將結(jié)果反饋給客戶端,客戶端再根據(jù)tracker節(jié)點提供的路徑去訪問相應(yīng)的storage節(jié)點去找到數(shù)據(jù)沮峡。
tracker節(jié)點除了幫助客戶端到數(shù)據(jù)庫中去檢索你要查找的數(shù)據(jù)疚脐,還管理storage節(jié)點,如果storage節(jié)點有損壞的邢疙,會控制storage節(jié)點進行數(shù)據(jù)自動遷移到其他節(jié)點棍弄,同時數(shù)據(jù)備份的時候也是由trackers節(jié)點來控制復制幾個副本的。
四.MogileFS常用的術(shù)語:
1.Domain
一個mogilefs可以有多個domain疟游,用來存放不同文件(大小呼畸、類型),同一個domain內(nèi)key必須唯一颁虐,不同domain內(nèi)key可以是相同的?
2.class
文件屬性管理蛮原,復制文件的最小單位不是文件,而是class另绩,定位文件存儲在不同設(shè)備上的份數(shù)儒陨,也就是定義副本的數(shù)量
3.host:每個存儲節(jié)點稱為一個host主機,Domain+Fid來定位文件
4.device:一個存儲節(jié)點笋籽,可以有多個device蹦漠,就是用來存放文件的目錄,每個設(shè)備都有一個設(shè)備ID车海,設(shè)備不能刪除笛园,只能將設(shè)備的狀態(tài)置為dead,置為dead之后數(shù)據(jù)就無法恢復了侍芝,并且設(shè)備ID也無法使用研铆。(建議每個節(jié)點只有一個device,文件存儲多份時州叠,有多余數(shù)據(jù)備份在當前節(jié)點其他設(shè)備棵红,等于沒有備份,若只備份2份留量,節(jié)點發(fā)生故障,數(shù)據(jù)就會丟失)哟冬;
五.理想架構(gòu)圖:
1楼熄、通過Nginx+Keepalived實現(xiàn)高可用的負載均衡,通過upstream模塊可以有選擇性的轉(zhuǎn)發(fā)應(yīng)用層的請求至后端tracker節(jié)點浩峡。
2可岂、DRBD+Corosync+Pacemaker的機制保證了Mysql的高可用