1、 Fastdfs介紹
Fastdfs是用c語言編寫的一個開源的輕量級分布式檔案系統,它對檔案程序管理,功能包括: 檔案存儲,檔案同步,檔案通路(檔案上傳、檔案下載下傳)等,解決了大容量存儲和負載均衡的問題,特别适合以檔案為載體的線上服務,如相冊網站,視訊網站等等
Fastdfs為網際網路量身定制,充分考慮了備援備份,負載均衡,線性擴容等,并注重高可用,高性能等名額,使用fastdfs很容易搭建一套高性能的檔案伺服器叢集提供檔案上傳、下載下傳服務
2、Fastdfs架構
Fastdfs架構包括Tracker server和Storage server
用戶端請求Tracker server進行檔案上傳、下載下傳,通過Tracker server排程最終由 Storage server完成檔案上傳和下載下傳
Tracker server作用是負載均衡和排程,通過Tracker server在檔案上傳時可以根據一些政策找到Storage server 提供檔案上傳服務,可以講tracker成為追蹤伺服器或排程伺服器
Storage server作為是檔案存儲,用戶端上傳的檔案最終存儲在storage伺服器上,Storage server 沒有實作自己的檔案系統而是利用作業系統的檔案系統來管理檔案,可以講storage成為存儲伺服器
3、FastDFS 系統有三個角色:跟蹤伺服器(Tracker Server)、存儲伺服器(Storage Server)和用戶端(Client)。
• Tracker Server: 跟蹤伺服器,主要做排程工作,起到均衡的作用;負責管理所有的 storage server和 group,每個 storage 在啟動後會連接配接 Tracker,告知自己所屬 group 等資訊,并保持周期性心跳。
• Storage Server:存儲伺服器,主要提供容量和備份服務;以 group 為機關,每個 group 内可以有多台 storage server,資料互為備份。
• Client:用戶端,上傳下載下傳資料的伺服器,也就是我們自己的項目所部署在的伺服器。
4、Fastdfs原理
關于子產品:跟蹤伺服器和存儲節點都可以由一台或多台伺服器構成,跟蹤伺服器和存儲節點均可以随時增加或者下線不會影響線上服務,其中跟蹤伺服器中所有伺服器是對 等,可以根據伺服器壓力情況随時增加或減少
5、檔案上傳流程
Storage server會連接配接叢集中所有的Tracker server,定時向他們報告自己的狀态,包括磁盤剩餘空間、檔案同步狀況、檔案上傳下載下傳次數等統計資訊。
關于上傳
**
檔案索引資訊包括:組名,虛拟磁盤路徑,資料兩級目錄,檔案名。
n 組名:檔案上傳後所在的storage組名稱,在檔案上傳成功後有storage伺服器傳回,需要用戶端自行儲存。
n 虛拟磁盤路徑:*storage配置的虛拟路徑,與磁盤選項store_path對應。如果配置了store_path0則是M00,如果配置了store_path1則是M01,以此類推。
n 資料兩級目錄:storage伺服器在每個虛拟磁盤路徑下建立的兩級目錄,用于存儲資料檔案。
n 檔案名:與檔案上傳時不同。是由存儲伺服器根據特定資訊生成,檔案名包含:源存儲伺服器IP位址、檔案建立時間戳、檔案大小、随機數和檔案拓展名等資訊。
client發送download請求給某個tracker,必須帶上檔案名資訊,tracker從檔案名中解析出檔案的group、大小、建立時間等資訊,然後為該請求選擇一個storage用來服務讀請求,由于group内的檔案同步時在背景是異步的,是以有可能出現在讀的時候,檔案還沒有同步到某些storage server上,為了盡量避免通路到這樣的storage,tracker按照如下規則選擇group内可讀的storage
檔案建立時間戳-storage被同步到的時間戳 且(目前時間-檔案建立時間戳)>檔案同步最大時間(5分鐘),說明檔案建立後,認為經過最大同步時間後,肯定已經同步到其他storage了
6、安裝Fastdfs
192.168.1.10 nginx proxy
192.168.1.20 tracker server1
192.168.1.30 tracker server2
192.168.1.40 storage server group1
192.168.1.50 storage server group2
資料存儲位置/storage/fastdfs
1.安裝編譯環境,安裝libfastcommon和fastdfs(所有節點)
Libfastcommon 包含了fastdfs運作所需的要的一些基礎庫
2.第一台編寫一個腳本 (友善部署traker)
3.把腳本和軟體包複制到其他四台主機
<code>scp root fastdfs.tar.gz libfastcommon.tar.gz install-fastdfs.sh [email protected]:/root</code>
4.四台執行一下腳本,檢視一下腳本是否執行成功
<code>sh install-fastdfs.sh</code>
5.配置track(兩台都是)
6.安裝nginx(第一台)
1.安裝nginx (兩台都要)
2.配置storage
3.配置nginx拓展配置檔案
****4.拷貝nginx拓展軟體的配置檔案,storage的配置檔案,nginx安裝包和nginx拓展包到第二台storage主機(拷貝完之後,按照上面2,3步驟來一遍)
5.Nginx主配置檔案修改 (兩台都改)
6、啟動服務
啟動storaged server(兩台都要啟動)
<code>[root@localhost fdfs]# /etc/init.d/fdfs_storaged start</code>
啟動nginx(兩台都啟動)
<code>[root@localhost ~]# /usr/local/nginx/sbin/nginx</code>
測試一下
修改第一台的client.conf.sample配置檔案
在storage上檢視一下
浏覽器通路一下
http://192.168.1.50:8888/group2/M00/00/00/wKgBMl3cpCWAZGQIADuP0gQAyTs723.png
下載下傳并改名剛剛傳上去的圖檔
<code>[root@localhost ~]# fdfs_download_file /etc/fdfs/client.conf.sample group2/M00/00/00/wKgBMl3coGKACR1RADuP0gQAyTs874.png xgp.png</code>
删除剛剛上傳的圖檔
<code>[root@localhost ~]# fdfs_delete_file /etc/fdfs/client.conf.sample group2/M00/00/00/wKgBMl3coGKACR1RADuP0gQAyTs874.png</code>
三,配置nginx反向代理伺服器 (第一台)
啟動nginx
浏覽器檢視一下,還是用剛剛那個id(需要重新上傳一下)
浏覽器通路:http://192.168.1.10/group2/M00/00/00/wKgBMl3cpCWAZGQIADuP0gQAyTs723.png
實驗完畢