CentOS7下分布式文件系統FastDFS的安裝 配置 (單節點)

背景

FastDFS是一個開源的輕量級分布式文件系統,為互聯網量身定制,充分考慮了冗余備份、負載均衡、線性擴容等機制,并注重高可用、高性能等指標,解決了大容量存儲和負載均衡的問題,特別適合以文件為載體的在線服務,如相冊網站、視頻網站等等。對于互聯網應用,和其他分布式文件系統相比,優勢非常明顯。
出于簡潔考慮,FastDFS沒有對文件做分塊存儲,因此不太適合分布式計算場景。
在此再次感謝淘寶資深架構師余慶大神開源了如此優秀的輕量級分布式文件系統,本篇文章就記錄一下FastDFS的最新版本5.11在CentOS7中的安裝與配置。

相關鏈接

源碼地址: https://github.com/happyfish100/
下載地址: http://sourceforge.net/projects/fastdfs/files/
官方論壇: http://bbs.chinaunix.net/forum-240-1.html

環境準備

操作系統:CentOS7
兩臺服務器:192.168.53.141、192.168.53.142
安裝包:

fastdfs-5.11.tar.gz
libfastcommon-1.0.36.tar.gz
fastdfs-nginx-module-master.zip
nginx-1.14.0.tar.gz

服務器規劃:
tracker服務器:192.168.53.141
storage服務器: 192.168.53.142

安裝包獲取

本次安裝為目前更新的最新版本,所用到的安裝包均來自github上作者最后的releases。
獲取FastDFS安裝包
目前作者最后一次releases的時間的17年6月3號,對應的最新版本是5.11,直接在余大的GitHub上下載:
https://github.com/happyfish100/fastdfs/releases
CentOS7下分布式文件系統FastDFS的安裝 配置 (單節點)
獲取libfastcommon安裝包
目前作者最后一次releases的時間的17年4月5號,對應的最新版本是1.0.36,直接在余大的GitHub上下載:
https://github.com/happyfish100/libfastcommon/releases
CentOS7下分布式文件系統FastDFS的安裝 配置 (單節點)
獲取fastdfs-nginx-module安裝包
從github上獲取最新的代碼
https://github.com/happyfish100/fastdfs-nginx-module
CentOS7下分布式文件系統FastDFS的安裝 配置 (單節點)
獲取nginx安裝包
http://nginx.org/en/download.html
CentOS7下分布式文件系統FastDFS的安裝 配置 (單節點)
獲取完成最新安裝包之后,上傳到/usr/local/src/目錄下。

安裝說明

FastDFS分為tracker(跟蹤器)和storage(存儲器);
tracker跟蹤器主要做調度工作,在訪問上起負載均衡的作用。
storage存儲器,文件和meta data都保存到存儲服務器上。
group組、卷,組外可橫向拓展,組內服務器上文件相互備份,是完全相同的。
兩臺服務器全部需要安裝libfastcommon和FastDFS,不同點為tracker和storage配置不同。

安裝FastDFS(全部)

我們準備的兩臺服務器需要全部安裝FastDFS基礎環境
安裝依賴

#安裝依賴
yum -y install gcc-c++ perl

安裝libfastcommon類庫
FastDFS 5.x 取消了對 libevent 的依賴,添加了對 libfastcommon 的依賴,安裝FastDFS必須安裝libfastcommon類庫

tar -zxvf libfastcommon-1.0.36.tar.gz
cd libfastcommon-1.0.36
./make.sh
./make.sh install

執行./make.sh命令進行編譯,沒有error信息的話就說明編譯成功了,最后再執行./make.sh install進行安裝,看到類似如下提示信息就說明libfastcommon已安裝成功:
CentOS7下分布式文件系統FastDFS的安裝 配置 (單節點)
創建軟連接
因為 FastDFS 主程序設置的 lib 目錄是/usr/local/lib, 所以需要創建軟鏈接(FastDFS主程序安裝需要依賴此類庫,若不創建軟連接會安裝失敗)
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
安裝FastDFS

tar -zxvf fastdfs-5.11.tar.gz
cd fastdfs-5.11
./make.sh
./make.sh install

沒有報錯信息一般就是安裝成功了,安裝日志為:CentOS7下分布式文件系統FastDFS的安裝 配置 (單節點)
相關文件和目錄
我們是采用默認安裝的方式安裝的,安裝完成對應的文件和目錄如下:

  1. 服務腳本:
    /etc/init.d/fdfs_storaged
    /etc/init.d/fdfs_tracker
  2. 配置文件(配置文件樣例):
    /etc/fdfs/client.conf.sample
    /etc/fdfs/storage.conf.sample
    /etc/fdfs/storage_ids.conf.sample
    /etc/fdfs/tracker.conf.sample
  3. 命令工具在/usr/bin/目錄下:
    fdfs_appender_test
    fdfs_appender_test1
    fdfs_append_file
    fdfs_crc32
    fdfs_delete_file
    fdfs_download_file
    fdfs_file_info
    fdfs_monitor
    fdfs_storaged
    fdfs_test
    fdfs_test1
    fdfs_trackerd
    fdfs_upload_appender
    fdfs_upload_file
    stop.sh
    restart.sh

    配置FastDFS跟蹤器(192.168.53.141)

    復制tracker.conf.sample并重命名為tracker.conf

    cd /etc/fdfs/
    cp tracker.conf.sample tracker.conf

    編輯配置文件
    vi /etc/fdfs/tracker.conf
    主要信息及改動情況如下:

    disabled=false #默認為false 此處不修改 不啟用=false就是啟用。設計如此,暫不吐槽。
    port=22122 #跟蹤器端口號,默認為22122,生產環境可自行修改,這里我暫用默認端口
    base_path=/fastdfs/tracker #目錄地址 依實際掛載的數據盤自行設置,根目錄必須存在,子目錄會自動創建

    其他參數保留默認配置即可,詳細的配置信息可參考官方的文檔說明
    http://bbs.chinaunix.net/thread-1941456-1-1.html
    創建基礎數據目錄(base_path對應的路徑)
    mkdir -p /fastdfs/tracker
    防火墻中打開跟蹤器端口(默認為 22122)

    firewall-cmd --permanent --zone=public --add-port=22122/tcp
    firewall-cmd --reload

    啟動tracker
    /etc/init.d/fdfs_trackerd start
    查看tracker是否啟動成功
    ps -ef | grep fdfs
    CentOS7下分布式文件系統FastDFS的安裝 配置 (單節點)
    下面的停止和設置開機啟動為非必須的操作,我是不想每次重啟服務器都手動啟動一遍,就加了開機啟動!
    停止tracker
    /etc/init.d/fdfs_trackerd stop
    設置開機啟動
    vi /etc/rc.d/rc.local
    添加以下內容:

    ## FastDFS Tracker
    /etc/init.d/fdfs_trackerd start

    由于在centos7中,/etc/rc.d/rc.local文件的權限被降低了,沒有執行權限,需要給它添加可執行權限。
    chmod +x /etc/rc.d/rc.local

    配置FastDFS存儲器(192.168.53.142)

    復制storage.conf.sample并重命名為storage.conf

    cd /etc/fdfs/
    cp storage.conf.sample storage.conf

    編輯配置文件
    vi /etc/fdfs/storage.conf
    主要信息及改動情況如下:

    disabled=false  #默認為false 此處不修改 不啟用=false就是啟用。設計如此,這里也暫不吐槽。
    port=23000 #存儲器端口號,默認為23000,生產環境可自行修改,這里我暫用默認端口
    base_path=/fastdfs/storage  #目錄地址 依實際掛載的數據盤自行設置,根目錄必須存在,子目錄會自動創建
    store_path0=/fastdfs/storage 
    #存放文件時storage server支持多個路徑,如果不配置base_path0,那邊它就和base_path對應的路徑一樣
    tracker_server=192.168.53.141:22122 # tracker_server 的列表 要寫端口的哦 (再次提醒是主動連接tracker_server )
    http.server_port=8888 # HTTP服務端口 默認為8888 生產環境可自行修改,這里我暫用默認端口

    其他參數保留默認配置即可,詳細的配置信息可參考官方的文檔說明
    http://bbs.chinaunix.net/thread-1941456-1-1.html
    創建基礎數據目錄(base_path對應的路徑)
    mkdir -p /fastdfs/storage
    防火墻中打開跟蹤器端口(默認為 23000)

    firewall-cmd --permanent --zone=public --add-port=23000/tcp
    firewall-cmd --reload

    啟動storaged
    /etc/init.d/fdfs_storaged start
    (初次啟動會在/fastdfs/storage目錄下生成data和logs目錄)
    查看storage是否啟動成功
    ps -ef | grep fdfs
    CentOS7下分布式文件系統FastDFS的安裝 配置 (單節點)
    下面的停止和設置開機啟動為非必須的操作,我是不想每次重啟服務器都手動啟動一遍,就加了開機啟動!
    停止storaged
    /etc/init.d/fdfs_storaged stop
    設置開機啟動
    vi /etc/rc.d/rc.local
    添加以下內容:

    ## FastDFS Storaged
    /etc/init.d/fdfs_storaged start

    由于在centos7中,/etc/rc.d/rc.local文件的權限被降低了,沒有執行權限,需要給它添加可執行權限。
    chmod +x /etc/rc.d/rc.local

    測試文件上傳(192.168.53.141)

    修改Tracker服務器中的客戶端配置文件

    cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
    vi /etc/fdfs/client.conf

    主要信息及改動情況如下:
    base_path=/fastdfs/tracker
    tracker_server=192.168.53.141:22122
    執行上傳命名
    /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/fastdfs-5.11.tar.gz
    返回 ID 號: group1/M00/00/00/wKg1jlrfY6-Ad3ssAAUkKwe5sE4.tar.gz
    (第一個參數為上傳配置文件,第二個參數為 需要上傳的文件。能返回以上文件 ID, 說明文件上傳成功)

    在存儲節點上安裝nginx

    安裝nginx和fastdfs-nginx-modulemok模塊
    解壓文件

    cd /usr/local/src/
    unzip fastdfs-nginx-module-master.zip
    tar -zxvf nginx-1.14.0.tar.gz

    安裝編譯 Nginx 所需的依賴包
    yum -y install pcre* zlib zlib-devel
    編譯安裝 Nginx(添加 fastdfs-nginx-module 模塊)

    ./configure --add-module=/usr/local/src/fastdfs-nginx-module-master/src
    make && make install

    復制 fastdfs-nginx-module 源碼中的配置文件到/etc/fdfs 目錄, 并修改

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

    修改以下配置:

    connect_timeout=10 #默認為2 改為10 2秒太少了
    base_path=/tmp
    tracker_server=192.168.53.141:22122 #tracker跟蹤器地址
    storage_server_port=23000 #storage存儲器的端口
    group_name=group1 #組名
    url_have_group_name = true #url hava group name 顧名思義 默認為false 改為true
    store_path0=/fastdfs/storage #存儲器存儲地址

    復制FastDFS 的部分配置文件到/etc/fdfs 目錄

    cd /usr/local/src/fastdfs-5.11/conf/
    cp http.conf mime.types /etc/fdfs/

    在/fastdfs/storage 文件存儲目錄下創建軟連接,將其鏈接到實際存放數據的目錄
    ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00
    配置nginx
    簡要配置樣例:

    user  root;
    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 {#alias /fastdfs/storage/data;ngx_fastdfs_module;}error_page 500 502 503 504 /50x.html;location = /50x.html {root html;}
    }
    }

    防火墻打開8888端口

    firewall-cmd --permanent --zone=public --add-port=8888/tcp
    firewall-cmd --reload

    啟動nginx后訪問剛剛測試上傳的文件地址
    http://192.168.53.142:8888/group1/M00/00/00/wKg1jlrfY6-Ad3ssAAUkKwe5sE4.tar.gz
    能正常下載文件,此時fdfs單節點的安裝和配置完成。

轉載于:https://blog.51cto.com/zhaobotao/2107094

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:
http://www.pswp.cn/news/390606.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/390606.shtml
英文地址,請注明出處:http://en.pswp.cn/news/390606.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何修復會話固定漏洞_PHP安全漏洞:會話劫持,跨站點腳本,SQL注入以及如何修復它們...

如何修復會話固定漏洞PHP中的安全性 (Security in PHP) When writing PHP code it is very important to keep the following security vulnerabilities in mind to avoid writing insecure code.在編寫PHP代碼時,記住以下安全漏洞非常重要,以避免編寫不…

劍指 Offer 38. 字符串的排列

題目 輸入一個字符串,打印出該字符串中字符的所有排列。 你可以以任意順序返回這個字符串數組,但里面不能有重復元素。 示例: 輸入:s “abc” 輸出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”] 限制: 1…

前饋神經網絡中的前饋_前饋神經網絡在基于趨勢的交易中的有效性(1)

前饋神經網絡中的前饋This is a preliminary showcase of a collaborative research by Seouk Jun Kim (Daniel) and Sunmin Lee. You can find our contacts at the bottom of the article.這是 Seouk Jun Kim(Daniel) 和 Sunmin Lee 進行合作研究的初步展示 。 您可以在文章底…

解釋什么是快速排序算法?_解釋排序算法

解釋什么是快速排序算法?Sorting algorithms are a set of instructions that take an array or list as an input and arrange the items into a particular order.排序算法是一組指令,這些指令采用數組或列表作為輸入并將項目按特定順序排列。 Sorts are most c…

SpringBoot自動化配置的注解開關原理

我們以一個最簡單的例子來完成這個需求:定義一個注解EnableContentService,使用了這個注解的程序會自動注入ContentService這個bean。 Retention(RetentionPolicy.RUNTIME) Target(ElementType.TYPE) Import(ContentConfiguration.class) public interfa…

hadoop將消亡_數據科學家:適應還是消亡!

hadoop將消亡Harvard Business Review marked the boom of Data Scientists in their famous 2012 article “Data Scientist: Sexiest Job”, followed by untenable demand in the past decade. [3]《哈佛商業評論 》在2012年著名的文章“數據科學家:最性感的工作…

劍指 Offer 15. 二進制中1的個數 and leetcode 1905. 統計子島嶼

題目 請實現一個函數,輸入一個整數(以二進制串形式),輸出該數二進制表示中 1 的個數。例如,把 9 表示成二進制是 1001,有 2 位是 1。因此,如果輸入 9,則該函數輸出 2。 示例 1&…

[轉]kafka介紹

轉自 https://www.cnblogs.com/hei12138/p/7805475.html kafka介紹1.1. 主要功能 根據官網的介紹,ApacheKafka是一個分布式流媒體平臺,它主要有3種功能: 1:It lets you publish and subscribe to streams of records.發布和訂閱消…

如何開始android開發_如何開始進行Android開發

如何開始android開發Android開發簡介 (An intro to Android Development) Android apps can be a great, fun way to get into the world of programming. Officially programmers can use Java, Kotlin, or C to develop for Android. Though there may be API restrictions, …

httpd2.2的配置文件常見設置

目錄 1、啟動報錯:提示沒有名字fqdn2、顯示服務器版本信息3、修改監聽的IP和Port3、持久連接4 、MPM( Multi-Processing Module )多路處理模塊5 、DSO:Dynamic Shared Object6 、定義Main server (主站點) …

leetcode 149. 直線上最多的點數

題目 給你一個數組 points ,其中 points[i] [xi, yi] 表示 X-Y 平面上的一個點。求最多有多少個點在同一條直線上。 示例 1: 輸入:points [[1,1],[2,2],[3,3]] 輸出:3 示例 2: 輸入:points [[1,1],[3,…

solidity開發以太坊代幣智能合約

智能合約開發是以太坊編程的核心之一,而代幣是區塊鏈應用的關鍵環節,下面我們來用solidity語言開發一個代幣合約的實例,希望對大家有幫助。 以太坊的應用被稱為去中心化應用(DApp),DApp的開發主要包括兩大部…

2019大數據課程_根據數據,2019年最佳免費在線課程

2019大數據課程As we do each year, Class Central has tallied the best courses of the previous year, based on thousands of learner reviews. (Here are the rankings from 2015, 2016, 2017, and 2018.) 與我們每年一樣,根據數千名學習者的評論, …

2017-12-07 socket 讀取問題

1.用socke阻塞方式讀取服務端發送的數據時會出現讀取一直阻塞的情況,如果設置了超時時間會在超時時間后讀取到數據: 原因:在不確定服務器會不會發送 socket發送的數據不會返回null 或者-1 所以用常規的判斷方法是不行的。 解決辦法有兩個:1 …

靜態代理設計與動態代理設計

靜態代理設計模式 代理設計模式最本質的特質:一個真實業務主題只完成核心操作,而所有與之輔助的功能都由代理類來完成。 例如,在進行數據庫更新的過程之中,事務處理必須起作用,所以此時就可以編寫代理設計模式來完成。…

svm機器學習算法_SVM機器學習算法介紹

svm機器學習算法According to OpenCVs "Introduction to Support Vector Machines", a Support Vector Machine (SVM):根據OpenCV“支持向量機簡介”,支持向量機(SVM): ...is a discriminative classifier formally defined by a separating …

6.3 遍歷字典

遍歷所有的鍵—值對 遍歷字典時,鍵—值對的返回順序也與存儲順序不同。 6.3.2 遍歷字典中的所有鍵 在不需要使用字典中的值時,方法keys() 很有用。 6.3.3 按順序遍歷字典中的所有鍵 要以特定的順序返回元素,一種辦法是在for 循環中對返回的鍵…

Google Guava新手教程

以下資料整理自網絡 一、Google Guava入門介紹 引言 Guavaproject包括了若干被Google的 Java項目廣泛依賴 的核心庫,比如:集合 [collections] 、緩存 [caching] 、原生類型支持 [primitives support] 、并發庫 [concurrency libraries] 、通用注解 [comm…

HTML DOM方法

querySelector() (querySelector()) The Document method querySelector() returns the first element within the document that matches the specified selector, or group of selectors. If no matches are found, null is returned.Document方法querySelector()返回文檔中與…

leetcode 773. 滑動謎題

題目 在一個 2 x 3 的板上(board)有 5 塊磚瓦,用數字 1~5 來表示, 以及一塊空缺用 0 來表示. 一次移動定義為選擇 0 與一個相鄰的數字(上下左右)進行交換. 最終當板 board 的結果是 [[1,2,3],[4,5,0]] 謎板被解開。…