分佈式文件服務器——圖片服務器FastDFS

分佈式圖片服務器——FastDFS

FastDFS由淘寶開發平臺部資深架構師餘慶開發。該開源項目的主頁是 http://code.google.com/p/fastdfs
github:https://github.com/happyfish100
  FastDFS 是用 c 語言編寫的一款開源的分佈式文件系統。FastDFS 爲互聯網量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用 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稱爲存儲服務器。
在這裏插入圖片描述

Tracker:管理集羣,tracker 也可以實現集羣。每個 tracker 節點地位平等。收集 Storage 集羣的狀態。
Storage:實際保存文件 Storage 分爲多個組,每個組之間保存的文件是不同的。每個組內部可以有多個成員,組成員內部保存的內容是一樣的,組成員的地位是一致的,沒有主從的概念。

安裝

安裝libfastcommon

  • 安裝gcc yum install gcc
  • 解壓libfastcommon-1.0.39.tar
  • 進入到解壓好的目錄編譯 ./make.sh
  • 安裝編譯好的庫 ./make.sh install

libfastcommon默認會被安裝到/usr/lib64/libfastcommon.so,且安裝完後,會建立軟鏈接到:/usr/lib/libfastcommon.so
可以查看,ll /usr/lib目錄下:
在這裏插入圖片描述
安裝FastDFS

  • 解壓fastdfs-5.11.tar
  • 進入解壓好的目錄 ./make.sh 進行編譯
  • 安裝編譯好的類庫 ./make.sh install(如果有錯誤信息就刪除重新安裝或者重啓,最好安裝在usr目錄下)
  • 修改配置文件格式(把/etc/fdfs下的.sample的配置文件修改爲.conf)
    在這裏插入圖片描述
cd /etc/fdfs/
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf

安裝tracker

  • 創建tracker工作目錄(用來保存tracker的data和log),這個目錄可以根據個人習慣來創建目錄的位置
mkdir -p  /usr/fdfs/tracker
  • 配置tracker

cd /etc/fdfs
vi tracker.conf

1.disabled=false     #默認開啓 
2.port=22122       #默認端口號 
3.base_path=/usr/fdfs/tracker       #我剛剛創建的目錄 
4.http.server_port=6666            #默認端口是8080,容易衝突
  • 啓動tracker:service fdfs_trackerd start
  • 如果不能啓動或提示用systemctl可改用命令:systemctl start fdfs_trackerd

啓動成功後可以看到Starting FastDFS tracker server:

進入創建的tracker目錄,發現目錄中多了data和log兩個目錄
查看進程:ps -ef | grep fdfs
查看一下tracker的端口監聽情況(需要先安裝net-tools網絡工具包:yum install net-tools -y)
netstat -antp|grep fdfs
端口22122是否成功監聽

設置tracker開機啓動
1、查看開啓啓動文件權限:ll /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 220 11月 23 2013 /etc/rc.d/rc.local
2、有x執行權限(如果沒有,需要加一下:chmod +x /etc/rc.d/rc.local)
3、修改rc.local
vi /etc/rc.d/rc.local
service fdfs_trackerd start

安裝storage

  • 創建storage工作目錄(一個storage和一個storage_data用來存儲數據),可以根據個人習慣來創建目錄的位置
mkdir -p /usr/fdfs/storage
mkdir -p  /usr/fdfs/storage_data
  • 配置storage

vi /etc/fdfs/storage.conf

1.disabled=false         #默認
2.group_name=group1    #組名,根據實際情況修改 
3.port=23000   #設置storage的端口號,默認是23000,同一個組的storage端口號必須一致 
4.base_path=/usr/fdfs/storage    #設置storage數據文件和日誌目錄 
5.store_path_count=1              #存儲路徑個數,需要和store_path個數匹配 
6.store_path0=/usr/fdfs/storage_data    #實際文件存儲路徑 
7.tracker_server=192.168.188.138:22122      #我虛擬機的ip地址 
8.http.server_port=8888                    #設置 http 端口號
  • 啓動storage:service fdfs_storaged start
  • 如果不能啓動或提示用systemctl可改用命令:systemctl start fdfs_storaged

啓動成功後可以看到Starting FastDFS storage server:

進入創建的tracker目錄,發現目錄中多了data和log兩個目錄
查看進程:ps -ef | grep fdfs
查看一下tracker的端口監聽情況(需要先安裝net-tools網絡工具包:yum install net-tools -y)
netstat -antp|grep fdfs
端口22122是否成功監聽

設置storage開機啓動
1、查看開啓啓動文件權限:ll /etc/rc.d/rc.local
-rwxr-xr-x. 1 root root 220 11月 23 2013 /etc/rc.d/rc.local
2、有x執行權限(如果沒有,需要加一下:chmod +x /etc/rc.d/rc.local)
3、修改rc.local
vi /etc/rc.d/rc.local
service fdfs_storaged start

校驗整合
fastdfs的東西都已安裝完成,最後我們還要確定一下,storage是否註冊到了tracker中去
查看命令:/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
如果輸出截圖所示,則整合成功
在這裏插入圖片描述

測試文件上傳

fastdfs執行./make.sh install後,一些執行命令會被安裝到/usr/bin/下
在這裏插入圖片描述
查看/usr/bin下的fastdfs執行命令:ls -la /usr/bin/fdfs*
在這裏插入圖片描述
配置客戶端
修改客戶端的配置文件:vi /etc/fdfs/client.conf
修改內容:

base_path=/usr/fdfs/tracker        #tracker服務器文件路徑
tracker_server=192.168.2.123:22122    #tracker服務器IP地址和端口號
http.tracker_server_port=6666           # tracker 服務器的http端口號,必須和tracker的設置對應起來

模擬上傳
上傳一張本地圖片到usr目錄
確定圖片位置後,我們輸入上傳圖片命令把圖片上傳到FastDFS服務器

/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /usr/test.jpg

成功後會返回圖片的路徑:group1/M00/00/00/wKgCe162rfuAQjZfAADFbi0oR0A946.jpg
組名:group1
虛擬磁盤:M00
目錄:00/00
文件名稱:wKgCe162rfuAQjZfAADFbi0oR0A946.jpg
在這裏插入圖片描述
我們上傳的圖片會被上傳到我們創建的storage_data目錄的data目錄下
在這裏插入圖片描述

fastdfs的nginx模塊安裝

安裝nginx之前的準備:安裝nginx所需的依賴lib(yum安裝存在就覆蓋,沒有進行安裝)

yum -y install pcre pcre-devel
yum -y install zlib zlib-devel
yum -y install openssl openssl-devel

安裝nginx並添加fastdfs-nginx-module
準備工作

  • 上傳nginx、fastdfs-nginx-module至usr:
  • 分別解壓:tar -xvf
  • 將nginx額外複製一份,形成nginx-1.14.2-1和nginx-1.14.2-2(因爲tracker和storage各需一個nginx)
  • 通過fastdfs-nginx-module將nginx-1.14.2-1和nginx-1.14.2-2粘合在一起

在這裏插入圖片描述
開始整合

  • 修改fastdfs-nginx-module中的錯誤(路徑)
  • 配置storage-nginx
  • 配置tracker-nginx
  • 測試
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

上述路徑是我們安裝fastdfs自動配置好的路徑,而fastdfs-nginx-module中配置文件的這兩項路徑與我們安裝好後自動生成的路徑不一致,如果不修改會造成整合錯誤
修改之前
在這裏插入圖片描述
修改好之後進入nginx-1.14.2-1,重新configure(配置,前綴內容爲輸出路徑):

./configure --prefix=/usr/nginx-1 --add-module=/usr/fastdfs-nginx-module-1.20/src

配置完成後進行編譯make:make
編譯完成後進行安裝:make install
回到usr目錄下ls查看,可以看到nginx-1目錄,說明第一個nginx和fastdfs-nginx-module粘合編譯完成
在這裏插入圖片描述
配置storage-nginx
修改 vim /usr/nginx-1/conf/nginx.conf
  修改監聽端口 listen 9999, 新增location

server {
        listen       9999;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location ~/group1/M00 {
            root /usr/fdfs/storage_data/data;
            ngx_fastdfs_module;
        }

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

然後進入FastDFS安裝時解壓的目錄,將http.conf和mime.types拷貝到/etc/fdfs目錄下:

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

把fastdfs-nginx-module安裝目錄中src目錄下的mod_fastdfs.conf也拷貝到/etc/fdfs目錄下:

cd /usr/fastdfs-nginx-module-1.20/src
cp mod_fastdfs.conf /etc/fdfs/

在/etc/fdfs/下 對mod_fastdfs.conf文件進行修改

vim /etc/fdfs/mod_fastdfs.conf
 base_path=/usr/fdfs/storage            #保存日誌目錄
 tracker_server=192.168.188.138:22122   #tracker服務器的IP地址以及端口號
 storage_server_port=23000            #storage服務器的端口號,默認即可
 url_have_group_name = true           #文件 url 中是否有 group 名,改爲true
 store_path0=/usr/fdfs/storage_data      #存儲路徑
 group_count = 1        #設置組的個數,事實上這次只使用了group1

在文件的最後,設置group

[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/usr/fdfs/storage_data

啓動nginx-1:/usr/nginx-1/sbin/nginx
在這裏插入圖片描述
設置開機自動啓動nginx:
修改rc.local
vim /etc/rc.d/rc.local
在最後增加:/usrl/nginx-1/sbin/nginx
配置tracker-nginx
進入nginx-1.14.2-1-2,配置:

./configure --prefix=/usr/nginx-2 --add-module=/usr/fastdfs-nginx-module-1.20/src

配置完成後進行編譯make:make
編譯完成後進行安裝:make install
修改nginx-2的nginx.conf,在http中做修改

    upstream fdfs_group1 {
        server 127.0.0.1:9999;
    }
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location /group1/M00 {
            proxy_pass http://fdfs_group1;
        }
        #location / {
        #    root   html;
        #    index  index.html index.htm;
        #}

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
}

啓動測試,訪問默認端口80
在這裏插入圖片描述
設置開機自啓
修改rc.local
vim /etc/rc.d/rc.local
在最後增加:/usrl/nginx-2/sbin/nginx

測試訪問tracker拿到storage中存儲的數據
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章