fastdfs是一個(gè)開源的分布式文件系統(tǒng),功能包括文件存儲、文件同步、文件訪問等,解決了大容量存儲和負(fù)載均衡的問題;docker是一個(gè)開源的應(yīng)用容器引擎,可以打包應(yīng)用以及依賴包到一個(gè)可移植的鏡像中。
本教程操作環(huán)境:linux7.3系統(tǒng)、docker-1.13.1版、Dell G3電腦。
什么是fastdfs與docker
FastDFS 是用 c 語言編寫的一款開源的分布式文件系統(tǒng)。FastDFS 為互聯(lián)網(wǎng)量身定制, 充分考慮了冗余備份、負(fù)載均衡、線性擴(kuò)容等機(jī)制,并注重高可用、高性能等指標(biāo),使用 FastDFS 很容易搭建一套高性能的文件服務(wù)器集群提供文件上傳、下載等服務(wù)。
FastDFS 架構(gòu)包括 Tracker server 和 Storage server。客戶端請求 Tracker server 進(jìn)行文 件上傳、下載,通過 Tracker server 調(diào)度最終由 Storage server 完成文件上傳和下載。
Tracker server 作用是負(fù)載均衡和調(diào)度,通過 Tracker server 在文件上傳時(shí)可以根據(jù)一些 策略找到 Storage server 提供文件上傳服務(wù)。可以將 tracker 稱為追蹤服務(wù)器或調(diào)度服務(wù)器。
Storage server 作用是文件存儲,客戶端上傳的文件最終存儲在 Storage 服務(wù)器上, Storageserver 沒有實(shí)現(xiàn)自己的文件系統(tǒng)而是利用操作系統(tǒng) 的文件系統(tǒng)來管理文件。可以將 storage 稱為存儲服務(wù)器。
服務(wù)端兩個(gè)角色:
Tracker: 管理集群,tracker 也可以實(shí)現(xiàn)集群。每個(gè) tracker 節(jié)點(diǎn)地位平等。收集 Storage 集群的狀態(tài)。
Storage: 實(shí)際保存文件, Storage 分為多個(gè)組,每個(gè)組之間保存的文件是不同的。每 個(gè)組內(nèi)部可以有多個(gè)成員,組成員內(nèi)部保存的內(nèi)容是一樣的,組成員的地位是一致的,沒有 主從的概念。
2. 文件上傳流程
上傳文件流程
客戶端上傳文件后存儲服務(wù)器將文件 ID 返回給客戶端,此文件 ID 用于以后訪問該文 件的索引信息。文件索引信息包括:組名,虛擬磁盤路徑,數(shù)據(jù)兩級目錄,文件名。
文件名
group1/M00/00/00/wKi9hVz-GUKABj4gAAOTipWhnKM434.jpg
組名:文件上傳后所在的 storage 組名稱,在文件上傳成功后有 storage 服務(wù)器返回, 需要客戶端自行保存。
虛擬磁盤路徑:storage 配置的虛擬路徑,與磁盤選項(xiàng) store_path*對應(yīng)。如果配置了 store_path0 則是 M00,如果配置了 store_path1 則是 M01,以此類推。
數(shù)據(jù)兩級目錄:storage 服務(wù)器在每個(gè)虛擬磁盤路徑下創(chuàng)建的兩級目錄,用于存儲數(shù)據(jù) 文件。
文件名:與文件上傳時(shí)不同。是由存儲服務(wù)器根據(jù)特定信息生成,文件名包含:源存儲 服務(wù)器 IP 地址、文件創(chuàng)建時(shí)間戳、文件大小、隨機(jī)數(shù)和文件拓展名等信息。
3. 簡易FastDFS構(gòu)建
簡易FastDFS
4.使用Docker安裝FastDFS
4.1. 獲取鏡像
可以利用已有的FastDFS Docker鏡像來運(yùn)行FastDFS。
獲取鏡像可以通過下載
docker?image?pull?delron/fastdfs
也可是直接使用已有的鏡像備份文件
docker?load?-i?文件路徑/fastdfs_docker.tar
加載好鏡像后,就可以開啟運(yùn)行FastDFS的tracker和storage了。
4.2. 運(yùn)行tracker
執(zhí)行如下命令開啟tracker 服務(wù)
docker?run?-dti?--network=host?--name?tracker?-v?/var/fdfs/tracker:/var/fdfs?delron/fastdfs?tracker
我們將fastDFS tracker運(yùn)行目錄映射到本機(jī)的 /var/fdfs/tracker目錄中。
執(zhí)行如下命令查看tracker是否運(yùn)行起來
docker?container?ls
如果想停止tracker服務(wù),可以執(zhí)行如下命令
docker?container?stop?tracker
停止后,重新運(yùn)行tracker,可以執(zhí)行如下命令
docker?container?start?tracker
4.3. 運(yùn)行storage
執(zhí)行如下命令開啟storage服務(wù)
docker?run?-dti?--network=host?--name?storage?-e?TRACKER_SERVER=10.211.55.5:22122?-v?/var/fdfs/storage:/var/fdfs?delron/fastdfs?storage
TRACKER_SERVER=本機(jī)的ip地址:22122, 本機(jī)ip地址不要使用127.0.0.1
我們將fastDFS storage運(yùn)行目錄映射到本機(jī)的/var/fdfs/storage目錄中
執(zhí)行如下命令查看storage是否運(yùn)行起來
docker?container?ls
如果想停止storage服務(wù),可以執(zhí)行如下命令
docker?container?stop?storage
停止后,重新運(yùn)行storage,可以執(zhí)行如下命令
docker?container?start?storage
注意:如果無法重新運(yùn)行,可以刪除/var/fdfs/storage/data目錄下的fdfs_storaged.pid 文件,然后重新運(yùn)行storage。
推薦學(xué)習(xí):《docker視頻教程》