FastDFS為什么要結合Nginx


FastDFS為什么要結合Nginx?

我們在使用FastDFS部署一個分布式文件系統的時候,通過FastDFS的客戶端API來進行文件的上傳、下載、刪除等操作。同時通過FastDFS的HTTP服務器來提供HTTP服務。但是FastDFS的HTTP服務較為簡單,無法提供負載均衡等高性能的服務,所以FastDFS的開發者——淘寶的架構師余慶同學,為我們提供了Nginx上使用的FastDFS模塊(也可以叫FastDFS的Nginx模塊)。其使用非常簡單。
FastDFS通過Tracker服務器,將文件放在Storage服務器存儲,但是同組之間的服務器需要復制文件,有延遲的問題.假設Tracker服務器將文件上傳到了192.168.1.80,文件ID已經返回客戶端,這時,后台會將這個文件復制到192.168.1.30,如果復制沒有完成,客戶端就用這個ID在192.168.1.30取文件,肯定會出現錯誤。這個fastdfs-nginx-module可以重定向連接到源服務器取文件,避免客戶端由於復制延遲的問題,出現錯誤。

在新的服務器上安裝了FastDFS_v5.05,相比較FastDFSV3.02還是有很多變化,現將安裝配置過程記錄下,供大家參考,出於安全考慮,其中涉及到IP地址的地方,隨意用了一個IP202.98.27.31,在訪問量不大情況下,將tracker和storage都部署在同一台服務器上,后期根據業務需要進行擴展:

 

FastDFS是一個開源的分布式文件系統,她對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件為載體的在線服務,如相冊網站、視頻網站等等。

 

FastDFS服務端有兩個角色:跟蹤器(tracker)和存儲節點(storage)。跟蹤器主要做調度工作,在訪問上起負載均衡的作用。

 

存 儲節點存儲文件,完成文件管理的所有功能:存儲、同步和提供存取接口,FastDFS同時對文件的meta data進行管理。所謂文件的meta data就是文件的相關屬性,以鍵值對(key value pair)方式表示,如:width=1024,其中的key為width,value為1024。文件meta data是文件屬性列表,可以包含多個鍵值對。

 

FastDFS系統結構如下圖所示:

 

 

FastDFS原理  

    存儲節點采用了分組(group)的方式。存儲系統由一個或多個group組成,group與group之間的文件是相互獨立的,所有group的文件容量累加就是整個存儲系統中的文件容量。一個group可以由一台或多台存儲服務器組成,一個group下的存儲服務器中的文件都是相同的,group中的多台存儲服務器起到了冗余備份和負載均衡的作用(一個組的存儲容量為該組內存儲服務器容量最小的那個,不同組的Storage server之間不會相互通信,同組內的Storage server之間會相互連接進行文件同步)。

    在group中增加服務器時,同步已有的文件由系統自動完成,同步完成后,系統自動將新增服務器切換到線上提供服務。

    當存儲空間不足或即將耗盡時,可以動態添加group。只需要增加一台或多台服務器,並將它們配置為一個新的group,這樣就擴大了存儲系統的容量。

    FastDFS只有兩個角色:Tracker server和Storage server。Tracker server作為中心結點,其主要作用是負載均衡和調度。Tracker server在內存中記錄分組和Storage server的狀態等信息,不記錄文件索引信息,占用的內存量很少。另外,客戶端(應用)和Storage server訪問Tracker server時,Tracker server掃描內存中的分組和Storage server信息,然后給出應答。由此可以看出Tracker server非常輕量化,不會成為系統瓶頸。

    FastDFS中的Storage server在其他文件系統中通常稱作Trunk server或Data server。Storage server直接利用OS的文件系統存儲文件。FastDFS不會對文件進行分塊存儲,客戶端上傳的文件和Storage server上的文件一一對應(FastDFS中的文件標識分為兩個部分:組名和文件名,二者缺一不可)

 

Tracker Server 192.168.55.222 /home/tracker 端口:22122
Tracker Server 192.168.55.226 /home/tracker 端口:22122
Storage1 Server 192.168.55.223 group1 /home/storage 端口:23000
Storage4 Server 192.168.55.227 group1 /home/storage 端口:23000
Storage2 Server 192.168.55.224 group2 /home/storage 端口:23000
Storage3 Server 192.168.55.225 group2 /home/storage 端口:23000
#Storage2為group2的源服務器
注意:
1.group2同組的Storage2和Storage3 FastDFS服務端口必須一致: port=23000。
2.一台服務器可以裝多個組(group)但不能裝同組的多個Storage,日志會報錯誤,日志報錯原因是"注意1"
3.Version 4.05之前fastdfs內部綁定了libevent作為http服務器.Version 4.05之后的版本刪除了內置的web http服務,內置的web http服務是個累贅,不用也罷!
4.啟動storage server時,一直處於僵死狀態.啟動storage server,storage將連接tracker server,如果連不上,將一直重試。直到連接成功,啟動才算真正完成!如果集群中有2台tracker server,而其中一台tracker沒有啟動,可能會導致storage server一直處於僵死狀態


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM