Fastdfs介紹部署

      網友投稿 1114 2025-04-01

      FastDFS部署


      一、FastDFS tracker storage 的工作原理及流程

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

      FastDFS服務端有兩個角色:-(tracker)和存儲節點(storage)。-主要做調度工作,在訪問上起負載均衡的作用。 存儲節點存儲文件,完成文件管理的所有功能:存儲、同步和提供存取接口,FastDFS同時對文件的metadata進行管理。所謂文件的meta data就是文件的相關屬性,以鍵值對(key ? value pair)方式表示,如:width=1024,其中的key為width,value為1024。文件metadata是文件屬性列表,可以包含多個鍵值對。

      -和存儲節點都可以由一臺或多臺服務器構成。-和存儲節點中的服務器均可以隨時增加或下線而不會影響線上服務。其中-中的所有服務器都是對等的,可以根據服務器的壓力情況隨時增加或減少。

      為了支持大容量,存儲節點(服務器)采用了分卷(或分組)的組織方式。存儲系統由一個或多個卷組成,卷與卷之間的文件是相互獨立的,所有卷的文件容量累加就是整個存儲系統中的文件容量。一個卷可以由一臺或多臺存儲服務器組成,一個卷下的存儲服務器中的文件都是相同的,卷中的多臺存儲服務器起到了冗余備份和負載均衡的作用。在卷中增加服務器時,同步已有的文件由系統自動完成,同步完成后,系統自動將新增服務器切換到線上提供服務。

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

      FastDFS中的文件標識分為兩個部分:卷名和文件名,二者缺一不可。

      FastDFS file upload

      上傳文件交互過程:

      1. client詢問tracker上傳到的storage,不需要附加參數;

      2. tracker返回一臺可用的storage;

      3. client直接和storage通訊完成文件上傳。

      FastDFS file download

      下載文件交互過程:

      1. client詢問tracker下載文件的storage,參數為文件標識(卷名和文件名);

      2. tracker返回一臺可用的storage;

      3. client直接和storage通訊完成文件下載。

      group0/M00/00/02/Cs8b8lFJIIyAH841AAAbpQt7xVI4715674

      組名:group0 ? 磁盤:?M00 ? ? 目錄:00/02 ? 文件名:Cs8b8lFJIIyAH841AAAbpQt7xVI4715674

      文件名包含的信息: ? 采用Base64編碼, 包含的字段包括 :? 源storage server Ip 地址? 文件創建時間? 文件大小? 文件CRC32效驗碼?? 隨機數

      需要說明的是,client為使用FastDFS服務的調用方,client也應該是一臺服務器,它對tracker和storage的調用均為服務器間的調用。

      二、FastDFS 同步機制說明

      tracker server會在內存中保存storage分組及各個組下的storage server,并將連接過自己的storage server及其分組保存到文件中,以便下次重啟服務時能直接從本地磁盤中獲得storage相關信息。storage server會在內存中記錄本組的所有服務器,并將服務器信息記錄到文件中。tracker server和storage server之間相互同步storage server列表:

      1. 如果一個組內增加了新的storage

      server或者storage server的狀態發生了改變,tracker server都會將storage server列表同步給該組內的所有storage server。以新增storage server為例,因為新加入的storage

      server主動連接tracker ? server,tracker server發現有新的storage server加入,就會將該組內所有的storage server返回給新加入的storage server,并重新將該組的storage server列表返回給該組內的其他storage server;

      2. 如果新增加一臺tracker ? server,storage server連接該tracker server,發現該tracker server返回的本組storage server列表比本機記錄的要少,就會將該tracker server上沒有的storage server同步給該tracker server。同一組內的storage server之間是對等的,文件上傳、刪除等操作可以在任意一臺storage server上進行。文件同步只在同組內的storage server之間進行,采用push方式,即源服務器同步給目標服務器。以文件上傳為例,假設一個組內有3臺storage server A、B和C,文件F上傳到服務器B,由B將文件F同步到其余的兩臺服務器A和C。我們不妨把文件F上傳到服務器B的操作為源頭操作,在服務器B上的F文件為源頭數據;文件F被同步到服務器A和C的操作為備份操作,在A和C上的F文件為備份數據。同步規則總結如下:

      1. 只在本組內的storage ? server之間進行同步;

      2. 源頭數據才需要同步,備份數據不需要再次同步,否則就構成環路了;

      3. 上述第二條規則有個例外,就是新增加一臺storage ? server時,由已有的一臺storage ? server將已有的所有數據(包括源頭數據和備份數據)同步給該新增服務器。storage server有7個狀態,如下:

      # FDFS_STORAGE_STATUS_INIT :初始化,尚未得到同步已有數據的源服務器

      # FDFS_STORAGE_STATUS_WAIT_SYNC :等待同步,已得到同步已有數據的源服務器

      # FDFS_STORAGE_STATUS_SYNCING :同步中

      # FDFS_STORAGE_STATUS_DELETED :已刪除,該服務器從本組中摘除(注:本狀態的功能尚未實現)

      # FDFS_STORAGE_STATUS_OFFLINE :離線

      # FDFS_STORAGE_STATUS_ONLINE :在線,尚不能提供服務

      # FDFS_STORAGE_STATUS_ACTIVE :在線,可以提供服務

      當storage

      server的狀態為FDFS_STORAGE_STATUS_ONLINE時,當該storage server向tracker server發起一次heart beat時,tracker server將其狀態更改為FDFS_STORAGE_STATUS_ACTIVE。

      組內新增加一臺storage server A時,由系統自動完成已有數據同步,處理邏輯如下:

      1. storage server A連接tracker server,tracker server將storage server A的狀態設置為FDFS_STORAGE_STATUS_INIT。storage server A詢問追加同步的源服務器和追加同步截至時間點,如果該組內只有storage server A或該組內已成功上傳的文件數為0,則沒有數據需要同步,storage server A就可以提供在線服務,此時tracker將其狀態設置為FDFS_STORAGE_STATUS_ONLINE,否則tracker server將其狀態設置為FDFS_STORAGE_STATUS_WAIT_SYNC,進入第二步的處理;

      2. 假設tracker server分配向storage server A同步已有數據的源storage server為B。同組的storage server和tracker server通訊得知新增了storage server A,將啟動同步線程,并向tracker server詢問向storage server A追加同步的源服務器和截至時間點。storage server B將把截至時間點之前的所有數據同步給storage server A;而其余的storage server從截至時間點之后進行正常同步,只把源頭數據同步給storage server A。到了截至時間點之后,storage server B對storage server A的同步將由追加同步切換為正常同步,只同步源頭數據;

      3. storage server B向storage server A同步完所有數據,暫時沒有數據要同步時,storage server B請求tracker server將storage server A的狀態設置為FDFS_STORAGE_STATUS_ONLINE;

      4 當storage server ? A向tracker server發起heart beat時,tracker server將其狀態更改為FDFS_STORAGE_STATUS_ACTIVE。

      三、部署

      1.部署fastdfs

      wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz

      wget ? https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz

      tar –zxvf? ? V1.0.7

      tar –zxvf? ? V5.05

      cp -r libfastcommon-1.0.7 ? /usr/local/libfastcommom

      cd /usr/local/libfastcommom/

      yum install gcc -y

      ./make.sh

      ./make.sh? ? install

      ln -s /usr/lib64/libfastcommon.so ? /usr/local/lib/libfastcommon.so

      ln -s /usr/lib64/libfastcommon.so ? /usr/lib/libfastcommon.so

      ln -s /usr/lib64/libfdfsclient.so ? /usr/local/lib/libfdfsclient.so

      ln -s /usr/lib64/libfdfsclient.so ? /usr/lib/libfdfsclient.so

      find / -name libfdfsclient.so

      cp -r fastdfs-5.05/? /usr/local/fastdfs

      cd /usr/local/fastdfs

      ./make.sh

      ./make.sh install

      ll /etc/fdfs/

      cd /etc/fdfs

      2.配置文件設置

      cp tracker.conf.sample tracker.conf

      cp storage.conf.sample storage.conf

      cp client.conf.sample client.conf

      vim /etc/fdfs/tracker.conf (見附件1)

      一般只需改動以下幾個參數即可:

      disabled=false??????????? #啟用配置文件

      port=22122??????????????? #設置tracker的端口號

      base_path=/home/tracker/ ??#設置tracker的數據文件和日志目錄(需預先創建)

      http.server_port=8030???? #設置http端口號

      vim /etc/fdfs/ storage.conf (見附件2)

      一般只需改動以下幾個參數即可:

      disabled=false??????????? #啟用配置文件

      group_name=group1#組名,根據實際情況修改

      port=23000#設置storage的端口號

      base_path=/fdfs/storage#設置storage的日志目錄(需預先創建)

      store_path_count=1#存儲路徑個數,需要和store_path個數匹配

      store_path0=/fdfs/storage#存儲路徑

      tracker_server=172.16.1.202:22122 ? #tracker服務器的IP地址和端口號

      http.server_port=8080???? #設置http端口號

      3.啟動

      mkdir -p ?/home/fastdfs/tracker

      啟動tracker tracker.conf

      fdfs_trackerd ? /etc/fdfs/tracker.conf

      mkdir /home/fastdfs/storage

      啟動tracker storage.conf

      fdfs_storaged? /etc/fdfs/storage.conf

      四、安裝nginx及nginx插件

      1.部署nginx插件

      cd /usr/local/fastdfs/conf

      cp http.conf ???/etc/fdfs/

      cp mime.types? /etc/fdfs/

      tar -zxvf ? fastdfs-nginx-module_v1.16.tar.gz

      vi fastdfs-nginx-module/src/config

      第四行改為:

      CORE_INCS="$CORE_INCS ? /usr/include/fastdfs /usr/include/fastcommon/"

      cp ? /root/fastdfs-nginx-module/src/mod_fastdfs.conf ?/etc/fdfs/

      vi /etc/fdfs/mod_fastdfs.conf ?(見附件3)

      2.編譯安裝nginx

      cd /root

      tar -zxvf nginx-1.7.10.tar.gz

      cd? ? nginx-1.7.10

      Fastdfs介紹及部署

      yum install gcc gcc-c++ pcre-devel ? zlib-devel? openssl-devel?? -y

      ./configure --prefix=/usr/local/nginx/ ? --with-http_stub_status_module --with-http_ssl_module --with-http_sub_module ? --with-md5=/usr/lib --with-sha1=/usr/lib --with-http_gzip_static_module? --add-module=/root/fastdfs-nginx-module/src&& ? make&&make install

      vi /usr/local/nginx/conf/

      修改端口號為8030(任意)

      加入一組location

      location ~/group[1-3]/M00{

      root /home/fastdfs/data;

      ngx_fastdfs_module;

      }

      cd /root

      vi / nginx (見附件4)

      chmod a+x nginx

      cp nginx /etc/init.d

      chkconfig --add nginx

      chkconfig nginx on

      service nginx start

      netstat -antup |grep 8030

      3.配置軟連接

      ln -s /home/fastdfs/storage/data ?/home/fastdfs/storage/data/M00

      4.啟動nginx

      service nginx restart

      tail -400f /usr/local/nginx/logs/error.log

      五、測試

      echo "hello ccit" ?>test.txt

      /usr/bin/fdfs_test /etc/fdfs/client.conf upload test.txt

      瀏覽器訪問:

      http://192.168.10.17:8030/group1/M00/00/00/wKgKEVgRURyAM-kKAAAAC-QpJeQ227.txt

      六、常用命令

      上傳文件:/usr/local/bin/fdfs_upload_file?

      下載文件:/usr/local/bin/fdfs_download_file [local_filename]

      刪除文件:/usr/local/bin/fdfs_delete_file

      啟動、停止命令

      啟動:

      fdfs_trackerd /etc/fdfs/tracker.conf

      fdfs_storaged? /etc/fdfs/storage.conf

      停止:

      ps -aux|grep fdfs

      kill -9 進程號

      華為云APP 云市場

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:Flutter 壓縮圖像的最佳方式
      下一篇:定制家具衣柜訂單表格,為您的家居添彩的定制之選
      相關文章
      亚洲黄网站wwwwww| 亚洲夂夂婷婷色拍WW47| 亚洲网红精品大秀在线观看| 亚洲啪啪综合AV一区| 国产偷国产偷亚洲高清在线| 亚洲熟妇AV日韩熟妇在线| 亚洲va在线va天堂va手机| 亚洲成aⅴ人片在线观| 337p日本欧洲亚洲大胆艺术| 久久亚洲中文字幕精品有坂深雪| 亚洲成a人片77777kkkk| 久久亚洲精品视频| 亚洲国产AV无码专区亚洲AV| 在线亚洲精品福利网址导航| 国产黄色一级毛片亚洲黄片大全| 亚洲精品国产高清嫩草影院| 亚洲一卡2卡三卡4卡无卡下载| 亚洲成A∨人片在线观看无码| 亚洲黄网在线观看| 亚洲国产精品成人综合久久久 | 亚洲综合久久夜AV | 亚洲伦乱亚洲h视频| 国产精品亚洲产品一区二区三区| 国产成人精品亚洲精品| 亚洲线精品一区二区三区 | 亚洲AV一宅男色影视| 亚洲人成网站在线播放影院在线 | 亚洲精品乱码久久久久蜜桃| 亚洲国产无线乱码在线观看| 99亚洲男女激情在线观看| 亚洲av高清在线观看一区二区| 亚洲精品高清在线| 亚洲日韩av无码| 婷婷精品国产亚洲AV麻豆不片| 中文字幕亚洲色图| 77777午夜亚洲| 亚洲JIZZJIZZ妇女| 亚洲AV无码成H人在线观看| 国产亚洲精品不卡在线| 亚洲av色福利天堂| 亚洲人成网网址在线看|