MogileFS是一個開源的分布式存儲的解決方案,主要工作組件由三部分組成:
Tracker節點:生成映射表存儲于DB,并用于接收客戶端請求,通過查詢數據庫對客戶端提供后端所存儲的真實文件位置
DB節點:主要存儲數據的元數據信息,可以理解為客戶端來獲取數據文件時提供的Key和真實存在存儲里面的文件名的對照表
Storage節點:用于存儲文件的節點。
工作流程,tracker收到客戶端的請求,tracker通過查詢DB節點,將客戶端所請求的文件,對應Storage存儲的位置在返回給客戶端,客戶端在通過拿到的文件名以及文件位置,再去Storage上查找。
實驗環境:
兩臺centos7 其中1臺配置nginx+tracker+db+storage節點,另外一臺只提供Storage。
安裝:
由perl語言開發,未被收錄到base和epel源中,這里我們采取在cpan上安裝。
yum -y install make gcc unzip perl-DBD-MySQL perl perl-CPAN perl-YAML perl-Time-HiRes
先安裝這一堆玩意,以便讓cpan能正確安裝mogilefs
安裝完成后直接執行
cpan MogileFS::Server
這里一路回車,然后知道箭頭前兩處,提示是否自動搜索cpan站點,一定要選no 不然得等死,第二個箭頭繼續n 他提示是否提供一些站點我們自行選擇,也可以yes根據提示慢慢選,但是我這里no掉了,下面叫你輸入cpan站點,用的163的cpan鏡像站點,這樣安裝會比較快,然后又是一路回車
接著開始安裝,可以看到他還會自動解決一些依賴關系
安裝完成過后看到已經有了關于mogilefs的命令了 其中mogilefsd是tracker的啟動命令,mogstored是存儲節點的啟動命令 mogdbsetup是為我們初始化數據庫的。
然后執行
cpan MogileFS::Utils
安裝mogilefs的管理工具
接著,我們去安裝數據庫,并且授權一個賬號可以訪問,就不演示了。
使用mogdbsetup –help可以看到支持的選項
注意 這里我只簡單給了兩個參數,默認會使用root用戶連接localhost去創建數據庫,應該也會創建用戶之前授權白做了,因此如果數據庫單獨提供,并且root有密碼,按上圖的參數寫全即可
接著幾個Y 就可以創建成功了,接著連入數據庫看到給我們驗證是否初始化。
接著提供一個配置文件
配置文件中提供的指令就不解釋了,基本能見名之意,這里需要提一下,需要注意兩點:
1、mogilefsd 不能以root用戶運行,所以要su到另一個用戶啟動(至于具體為啥,我去找了,沒找到解釋的,應該還是出于安全考慮吧,把權限控制到最小,畢竟生產環境中如果能不用root用戶運行的進程我們都應該不用root運行)
2、mogilefsd啟動時可以用類似–daemon=1 db_user= 。。。來啟動,完全可以不需要配置文件啟動的,另外這里只提供了一些基本的配置指令,具體可以去https://github.com/mogilefs/MogileFS-Server/tree/master/conf 了解。
然后提供storge的配置文件 并啟動服務
這里提供了一個http的訪問接口為7500,7501為tracker檢測后端健康狀態的端口,docroot就是我們真是存放數據的位置了。
記得先提供這么一個路徑,否則會啟動不了,接著去配置第二臺storage節點就不演示了和第一個節點一樣(創建的目錄名需要修改一下,在tracker是以全局看的,所有主機的存儲節點應該標識唯一)。
添加兩個主機
添加兩個主機上的設備,這里的設備你可以理解為就是數據存儲的位置
出問題了,識別不了空間!?。?!
可以了,這里出的問題是啥呢~ 看下面兩張圖就清楚了
分別是兩個節點上的~ 看出來了么~~
一個主機我是修改了stroge配置文件,一個是我在原有目錄上在此新建了一個目錄。
由此可見,創建dev目錄的位置 需要在docroot指的位置下才行~~~~~~~
接著我們就可以嘗試上傳文件了~
添加一個域 并列出域的列表。域又是什么呢,你可以理解為之前我們做的添加完設備后,在tracker主機上后,(從tracker主機上看,給了他一個很大的磁盤,它拿來后自己分了區~,可以表明每個域存放內容,比如windows上我們常用的 D盤拿來裝游戲 E盤拿來裝電影~~)上圖的class又是啥呢,他是整個復制環節的最小復制單位,我們可以通過定義他來修改在每一個storage節點上個文件存儲的份數,我們這里就不沒必要設置他了。mindevcount代表存儲的最小份數 2份 ,replpolicy 存儲策略 多主機存儲、hashtype哈希類型 沒有
接著我們測試的話基本設置就完了,現在來提一下我們上面用到的命令 mogadm
使用mogadm –help 可以看到許多的子命令,并且后面會有描述,那具體每個命令怎么使用,我們就可以以下圖的示例獲取了
現在我們就來上傳一個文件看看吧~
此次試驗失敗告終。 兩個節點都可以上傳文件,但始終都只保存一份。
在發現這個問題過后,做了如下檢測
1、授權文件目錄(想來應該不是這個問題 因為本來就能分開存放,只是不能復制)
2、兩個節點存儲目錄相同
3、看進程發現replicate進程只有一個,以為一個進程只能寫一個節點,事實證明錯誤的想法
4、修改存儲份數
5、另起了一個mogilefsd進程,相同問題
6、新建域,新建class
7、時間同步
8、兩節點間可以通過以mogadm host命名的域名訪問
9、終極辦法。。。重啟。。。
問題依舊(怎么會沒日志!?。。。W上資料好少,全是安裝,配置的,還都是馬哥提供的rpm包,不得不吐槽下。
空了準備換centos6+cpan安裝,如果還有問題就嘗試用馬哥提供的RPM包了。
另外哪位大神遇到過這問題啊,指點一下。
原創文章,作者:N24_Ghost,如若轉載,請注明出處:http://www.www58058.com/70466
雖然文章中實驗失敗了,但還是給個~~最后的總結很好~有時間再來一次~~加油!
為什么會出現Malformed config file (line 2) at /usr/local/share/perl5/MogileFS/Config.pm line 136, line 2. 錯誤,啟動mogilefsd的時候就總是這樣,請問碰到了這個問題嗎
@yhy1271927580:
看提示應該是你啟動的時候配置文件指的是這個文件,但是這個文件的 136和第二行有錯誤。
@N24_Ghost:遇到了跟你一樣的問題,我檢查了目錄權限,mogs用戶可以寫入數據,請求你的這個問題解決了嗎