1. 程式人生 > >FastDFS分散式檔案系統安裝與使用(單節點)

FastDFS分散式檔案系統安裝與使用(單節點)

FastDFS是由淘寶的餘慶先生所開發,是一個輕量級、高效能的開源分散式檔案系統,用純C語言開發,包括檔案儲存、檔案同步、檔案訪問(上傳、下載)、存取負載均衡、線上擴容、相同內容只儲存一份等功能,適合有大容量儲存需求的應用或系統。做分散式系統開發時,其中要解決的一個問題就是圖片、音視訊、檔案共享的問題,分散式檔案系統正好可以解決這個需求。同類的分散式檔案系統有谷歌的GFS、HDFS(Hadoop)、TFS(淘寶)等。

FastDFS系統架構

fastdfs系統架構

FastDFS檔案上傳流程:

fastdfs檔案上傳流程

1、client詢問tracker上傳到的storage,不需要附加引數;
2、tracker返回一臺可用的storage;
3、client直接和storage通訊完成檔案上傳。

FastDFS檔案下載流程:

fastdfs檔案下載流程

1、client詢問tracker下載檔案的storage,引數為檔案標識(組名和檔名);
2、tracker返回一臺可用的storage;
3、client直接和storage通訊完成檔案下載。

術語

FastDFS兩個主要的角色:Tracker Server 和 Storage Server
Tracker Server:跟蹤伺服器,主要負責排程storage節點與client通訊,在訪問上起負載均衡的作用,和記錄storage節點的執行狀態,是連線client和storage節點的樞紐。
Storage Server:儲存伺服器,儲存檔案和檔案的meta data(元資料)
Group:

檔案組,也可以稱為卷。同組內伺服器上的檔案是完全相同的,做叢集時往往一個組會有多臺伺服器,上傳一個檔案到同組內的一臺機器上後,FastDFS會將該檔案即時同步到同組內的其它所有機器上,起到備份的作用。
meta data:檔案相關屬性,鍵值對(Key Value Pair)方式,如:width=1024, height=768。和阿里雲OSS的meta data相似。

FastDFS單節點安裝 - 伺服器規劃:

跟蹤伺服器(Tracker Server):192.168.0.200
儲存伺服器(Storage Server):192.168.0.201
作業系統:CentOS7
使用者:root
資料儲存目錄:/fastdfs
安裝包:
fastdfs-master-V5.05.zip

:FastDFS原始碼
libfastcommon-master.zip:(從 FastDFS 和 FastDHT 中提取出來的公共 C 函式庫)
fastdfs-nginx-module-master.zip:storage節點http服務nginx模組
nginx-1.10.0.tar.gz:Nginx安裝包
ngx_cache_purge-2.3.tar.gz:圖片快取清除Nginx模組(叢集環境會用到)
點選這裡下載所有安裝包,你也可以從作者github官網去下載。

下載完成後,將壓縮包解壓到/usr/local/src目錄下

一、所有tracker和storage節點都執行如下操作

1、安裝所需的依賴包

shell> yum install make cmake gcc gcc-c++

2、安裝libfatscommon

shell> cd /usr/local/src
shell> unzip libfastcommon-master.zip
shell> cd libfastcommon-master
shell> ll
-rw-r--r--. 1 root root 6670 10月  8 09:39 HISTORY
-rw-r--r--. 1 root root  566 10月  8 09:39 INSTALL
-rw-r--r--. 1 root root 1438 10月  8 09:39 libfastcommon.spec
-rwxr-xr-x. 1 root root 3099 108 09:39 make.sh
drwxr-xr-x. 2 root root 4096 108 09:39 php-fastcommon
-rw-r--r--. 1 root root  812 10月  8 09:39 README
drwxr-xr-x. 3 root root 4096 108 09:39 src
## 編譯、安裝
shell> ./make.sh
shell> ./make.sh install

3、安裝FastDFS

shell> cd /usr/local/src
shell> unzip fastdfs-master-V5.05.zip
shell> cd fastdfs-master
shell> ll
[[email protected] fastdfs-master]# ll
drwxr-xr-x. 3 root root  4096 8月   8 15:17 client
drwxr-xr-x. 2 root root  4096 8月   8 15:17 common
drwxr-xr-x. 2 root root  4096 8月   8 15:17 conf
-rw-r--r--. 1 root root 35067 88 15:17 COPYING-3_0.txt
-rw-r--r--. 1 root root  2881 88 15:17 fastdfs.spec
-rw-r--r--. 1 root root 32259 88 15:17 HISTORY
drwxr-xr-x. 2 root root    46 8月   8 15:17 init.d
-rw-r--r--. 1 root root  7755 88 15:17 INSTALL
-rwxr-xr-x. 1 root root  5548 88 15:17 make.sh
drwxr-xr-x. 2 root root  4096 8月   8 15:17 php_client
-rw-r--r--. 1 root root  2380 88 15:17 README.md
-rwxr-xr-x. 1 root root  1768 88 15:17 restart.sh
-rwxr-xr-x. 1 root root  1680 88 15:17 stop.sh
drwxr-xr-x. 4 root root  4096 8月   8 15:17 storage
drwxr-xr-x. 2 root root  4096 8月   8 15:17 test
drwxr-xr-x. 2 root root  4096 8月   8 15:17 tracker
## 編譯、安裝
shell> ./make.sh
shell> ./make.sh install

採用預設安裝方式,相應的檔案與目錄如下:

1> 服務指令碼:

/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_trackerd

2> 配置檔案(示例配置檔案):

/etc/fdfs
shell> ll /etc/fdfs/
總用量 20
-rw-r--r--. 1 root root 1461 10月 17 15:15 client.conf.sample
-rw-r--r--. 1 root root 7927 10月 17 15:15 storage.conf.sample
-rw-r--r--. 1 root root 7200 10月 17 15:15 tracker.conf.sample

3> 命令列工具(/usr/bin目錄下)

shell> ll /usr/bin/ | grep fdfs
-rwxr-xr-x.   1 root root      315391 1017 15:15 fdfs_appender_test
-rwxr-xr-x.   1 root root      315168 1017 15:15 fdfs_appender_test1
-rwxr-xr-x.   1 root root      302016 1017 15:15 fdfs_append_file
-rwxr-xr-x.   1 root root      301692 1017 15:15 fdfs_crc32
-rwxr-xr-x.   1 root root      302075 1017 15:15 fdfs_delete_file
-rwxr-xr-x.   1 root root      302810 1017 15:15 fdfs_download_file
-rwxr-xr-x.   1 root root      302400 1017 15:15 fdfs_file_info
-rwxr-xr-x.   1 root root      316229 1017 15:15 fdfs_monitor
-rwxr-xr-x.   1 root root     1101974 1017 15:15 fdfs_storaged
-rwxr-xr-x.   1 root root      325327 1017 15:15 fdfs_test
-rwxr-xr-x.   1 root root      320448 1017 15:15 fdfs_test1
-rwxr-xr-x.   1 root root      447878 1017 15:15 fdfs_trackerd
-rwxr-xr-x.   1 root root      303002 1017 15:15 fdfs_upload_appender
-rwxr-xr-x.   1 root root      304022 1017 15:15 fdfs_upload_file

二、配置tracker伺服器

1> 複製tracker樣例配置檔案,並重命名

shell> cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

2> 修改tracker配置檔案

shell> vim /etc/fdfs/tracker.conf
# 修改的內容如下:
disabled=false              # 啟用配置檔案
port=22122                  # tracker伺服器埠(預設22122)
base_path=/fastdfs/tracker  # 儲存日誌和資料的根目錄

3> 建立base_path指定的目錄

shell> mkdir -p /fastdfs/tracker

4> 防火牆中開啟tracker伺服器埠( 預設為 22122)
shell> vi /etc/sysconfig/iptables
新增如下埠行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT
重啟防火牆:
shell> service iptables restart

5> 啟動tracker伺服器

shell> /etc/init.d/fdfs_trackerd start

初次啟動,會在/fastdfs/tracker目錄下生成logs、data兩個目錄。
fastdfs tracker初次啟動生成的目錄結構

檢查FastDFS Tracker Server是否啟動成功:
ps -ef | grep fdfs_trackerd
檢查tracker是否啟動成功

6> 停止tracker伺服器

shell> /etc/init.d/fdfs_trackerd stop

7> 設定tracker服務開機啟動

shell> chkconfig fdfs_trakcerd on

三、配置storage伺服器

1> 複製storage樣例配置檔案,並重命名

shell> cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

2> 編輯配置檔案

shell> vi /etc/fdfs/storage.conf

# 修改的內容如下:
disabled=false                      # 啟用配置檔案
port=23000                          # storage服務埠
base_path=/fastdfs/storage          # 資料和日誌檔案儲存根目錄
store_path0=/fastdfs/storage        # 第一個儲存目錄
tracker_server=192.168.0.200:22122  # tracker伺服器IP和埠
http.server_port=8888               # http訪問檔案的埠

3> 建立基礎資料目錄

shell> mkdir -p /fastdfs/storage

4> 防火牆中開啟storage伺服器埠( 預設為 23000)
shell> vi /etc/sysconfig/iptables
新增如下埠行:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT
重啟防火牆:
shell> service iptables restart

5> 啟動storage伺服器

shell> /etc/init.d/fdfs_storaged start

初次啟動,會在/fastdfs/storage目錄下生成logs、data兩個目錄。
storage目錄結構

檢查FastDFS Tracker Server是否啟動成功:
ps -ef | grep fdfs_storaged
檢查storage是否啟動

6> 停止storage伺服器

shell> /etc/init.d/fdfs_storaged stop

7> 設定storage服務開機啟動

shell> chkconfig fdfs_storaged on

四、檔案上傳測試(192.168.0.200)

1> 修改Tracker伺服器客戶端配置檔案

shell> cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
shell> vim /etc/fdfs/client.conf
# 修改以下配置,其它保持預設
base_path=/fastdfs/tracker
tracker_server=192.168.0.200:22122

2> 執行檔案上傳命令

shell> /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/include/stdio.h 

返回檔案ID號:group1/M00/00/00/wKgAyVgEjSGANYtkAAB7mZt7HdQ08538.h
(能返回以上檔案ID,說明檔案已經上傳成功)
這裡寫圖片描述

五、在所有storage節點安裝fastdfs-nginx-module

1> fastdfs-nginx-module 作用說明
FastDFS 通過 Tracker 伺服器,將檔案放在 Storage 伺服器儲存,但是同組儲存伺服器之間需要進入檔案複製,有同步延遲的問題。假Tracker 伺服器將檔案上傳到了 192.168.0.201,上傳成功後文件ID已經返回給客戶端。此時 FastDFS 儲存叢集機制會將這個檔案同步到同組儲存 192.168.0.202,在檔案還沒有複製完成的情況下,客戶端如果用這個檔案 ID 在 192.168.4.126 上取檔案,就會出現檔案無法訪問的錯誤。而 fastdfs-nginx-module 可以重定向檔案連線到源伺服器取檔案,避免客戶端由於複製延遲導致的檔案無法訪問錯誤

2> 解壓fastdfs-nginx-module-master.zip

shell> cd /usr/local/src
shell> unzip fastdfs-nginx-module-master.zip

3> 安裝Nginx
Nginx安裝請參考《Nginx原始碼安裝》

注意:在執行./configure配置nginx引數的時候,需要將fastdfs-nginx-moudle原始碼作為模組編譯進去:./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src

4> 複製 fastdfs-nginx-module 原始碼中的配置檔案到/etc/fdfs 目錄, 並修改

shell> cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
shell> vi /etc/fdfs/mod_fastdfs.conf

修改以下配置:

connect_timeout=10                  # 客戶端訪問檔案連線超時時長(單位:秒)
base_path=/tmp                      # 臨時目錄
tracker_server=192.168.0.200:22122  # tracker服務IP和埠
storage_server_port=23000           # storage服務埠
group_name=group1                   # 組名
url_have_group_name=true            # 訪問連結字首加上組名
store_path0=/fastdfs/storage        # 檔案儲存路徑

其它配置保持預設即可。

5> 複製 FastDFS 的部分配置檔案到/etc/fdfs 目錄

shell> cd /usr/local/src/fastdfs-master/conf
shell> cp http.conf mime.types /etc/fdfs/

6> 在/fastdfs/storage檔案儲存目錄下建立軟連線,將其連結到實際存放資料的目錄

shell> ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00

7> 配置nginx訪問storage檔案
簡潔版nginx配置:

user nobody;
worker_processes 1;
events {
    worker_connections 1024;
}
http {
    include mime.types;
    default_type application/octet-stream;
    sendfile on;
    keepalive_timeout 65;
    server {
        listen 8888;
        server_name localhost;
        location ~/group([0-9])/M00 {
            ngx_fastdfs_module;
        }
        error_page 500 502 503 504 /50x.html;

        location = /50x.html {
            root html;
        }
    }
}

注意事項:
A> 8888 埠值是要與/etc/fdfs/storage.conf 中的http.server_port=8888 相對應,因為 http.server_port 預設為 8888,如果想改成 80,則要對應修改過來。
B> Storage 對應有多個 group 的情況下,訪問路徑帶 group 名,如/group1/M00/00/00/xxx,對應的 Nginx 配置為:

location ~/group([0-9])/M00 {
    ngx_fastdfs_module;
}

C> 如查下載時如發現老報 404, 將 nginx.conf 第一行 user nobody 修改為 user root 後重新啟動。

8> 防火牆中開啟 Nginx 的 8888 埠
vi /etc/sysconfig/iptables

新增:

-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT

重新啟動防火牆:

shell> service iptables restart

9> 啟動Nginx

shell> /usr/bin/nginx
ngx_http_fastdfs_set pid=xxx

nginx重啟命令為:/usr/sbin/nginx -s reload
啟動nginx後,如果打印出ngx_http_fastdfs_set pid=xxx,表示fastdfs-nginx-module模組載入成功了,xxx表示模組的程序ID。

注意: 千萬不要使用 kill -9 命令強殺 FastDFS 程序,否則可能會導致 binlog 資料丟失。

相關推薦

FastDFS分散式檔案系統安裝使用節點

FastDFS是由淘寶的餘慶先生所開發,是一個輕量級、高效能的開源分散式檔案系統,用純C語言開發,包括檔案儲存、檔案同步、檔案訪問(上傳、下載)、存取負載均衡、線上擴容、相同內容只儲存一份等功能,適合有大容量儲存需求的應用或系統。做分散式系統開發時,其中要解

FastDFS分散式檔案系統配置部署

一文搞定FastDFS分散式檔案系統配置與部署 閱讀目錄 1 分散式檔案系統介紹 2 系統架構介紹 3 FastDFS效能方案 4 Linux基本命令操作 5 安裝VirtualBox虛擬機器並配置Ubuntu

一文搞定FastDFS分散式檔案系統配置部署

相關文章 1 分散式檔案系統介紹 分散式檔案系統:Distributed file system, DFS,又叫做網路檔案系統:Network File System。一種允許檔案通過網路在多臺主機上分享的檔案系統,可讓多機器上的多使用者分享檔案和儲存空間。 特點:在一個分享的磁碟檔案系統中

Docker安裝Zookeeper節點

1、查詢zookeeper映象:docker search zookeeper  2、下載映象:docker pull docker.io/zookeeper 3、啟動容器並新增對映:docker run --privileg

Dubbo註冊中心安裝教程節點

Dubbo建議使用Zookeeper作為服務的註冊中心。 註冊中心伺服器(192.168.3.71)配置,安裝Zookeeper: 1、   修改作業系統的/etc/hosts檔案中新增: # zookeeper servers 192.168.3.71   shop-

FastDFSFastDFS 分散式檔案系統安裝使用,看這一篇就夠了!!

## 寫在前面 > 有不少小夥伴在實際工作中,對於如何儲存檔案(圖片、視訊、音訊等)沒有一個很好的解決思路。都明白不能將檔案儲存在單臺伺服器的磁碟上,也知道需要將檔案進行副本備份。如果自己手動寫檔案的副本機制,那就太麻煩了,這會涉及冗餘副本機制、伺服器的排程、副本檢測、伺服器節點檢測、檔案副本存放策略

FastdfsFastdfs分散式檔案系統安裝部署使用,以及fastdfs連線池connectionpool編寫使用

環境:centos 7.X 預編譯安裝元件 yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel libevent-dev git -y 以上安裝完,後續的各

FastdfsFastdfs分散式檔案系統安裝部署使用,結合nginx訪問圖片,fastdfs連線池connectionpool編寫使用,文末有github連結

環境:centos 7.X 預編譯安裝元件 yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel libevent-dev git -y   以上安裝

fastDfs 分散式檔案服務 安裝配置使用

先貼一波原理圖片 所有需要填寫IP的 地方全部寫公網IP 一、 FastDFS tracker部署 1.上傳FastDFS_v5.01.tar.gz至伺服器/usr/local/src目錄下; 2.依次執行以下命令 cd /usr/local/src tar xf

Dubbo+Zookeeper架構—高階篇20-fastdfs分散式檔案系統安裝

目錄 FastDFS簡介 系統架構 系統架構-下載檔案流程圖 相關術語 同步機制 •同一組內的storage server之間是對等的,檔案上傳、刪除等操作可以在任意一臺storage server上進行; 安裝 環境資訊 一、所有跟蹤伺服器和儲存伺服器均執行如下

FastDFS分散式檔案系統在Linux上的部署和安裝

最近空閒之餘,對分散式檔案系統感興趣就研究研究。 首先要知道FastDFS的定義:FastDFS是用c語言編寫的一款開源的分散式檔案系統。FastDFS為網際網路量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用FastDFS很容易搭

分散式架構學習之:015--ActiveMQ 的安裝使用節點

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-ins

Redis 的安裝使用節點

方式 ase kcon $path 配置文件 alt png ces 一個 Redis 的安裝與使用(單節點) 環境:CentOS 6.5 Redis 版本:redis-3.0 (考慮到Redis3.0 在集群和性能提升方面的特性,rc 版為正式版的候選版

分布式架構實戰--ActiveMQ的安裝使用節點

解壓 rain fin admins blank 生產者 new 安裝配置 節點 具體內容請參考樣例代碼和視頻教程: http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 IP:192.16

Redis的安裝使用節點

做了 imp redis3.0 修改 .gz 環境 red redis配置 $1 IP:192.168.4.111 環境:CentOS 6.6 Redis版本:redis-3.0 (考慮到Redis3.0在集群和性能提升方面的特性,rc版為正式版的候選版,而且很快就出正

ActiveMQ 的安裝使用節點

環境:CentOS6.6、JDK8 1.下載:http://archive.apache.org/dist/activemq/5.11.1/apache-activemq-5.11.1-bin.tar.gz 2、 安裝 JDK 並配置環境變數(略) 3、 下載或上傳 Linux 版的 ActiveMQ(

FastDFS分散式檔案系統 -- 工作原理

FastDFS介紹 FastDFS分散式檔案管理系統,是用 c 語言編寫的一款開源的分散式檔案系統。FastDFS 為網際網路量身定製, 充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高效能等指標,使用 FastDFS 很容易搭建一套高效能的檔案伺服器叢集提供檔案上傳、

上傳圖片至fastdfs分散式檔案系統並回顯

事件,當我們瀏覽完圖片選中一張時,觸發onchange事件將圖片上傳到伺服器並回顯、 1 <img width="100" height="100" id="allUrl" src="${brand.imgUrl }"/> 2 <input type="hidden" name

IPFS(InterPlanetary File System,星際檔案系統)安裝環境配置

IPFS(InterPlanetary File System,星際檔案系統)是去中心化的,本文是介紹IPFS節點軟體的系統環境搭建安裝與使用方法的入門教程,並且介紹如何使用ipfs-api和Node.js訪問IPFS網路。 1.ipfs節點安裝與使用 1.1下

Linux下Elasticsearch-2.4.0的安裝簡單配置節點

下載地址: 傳到伺服器 ftp工具或者 rz指令,解壓檔案: tar -zxvf elasticsearch-2.4.0.tar.gz 建立使用者及授權 sudo useradd elsearch chown -R elsearch:elsearch /us