Nginx && FastDFS實現分佈式文件服務器

作者:微笑面對生活
來源:https://www.javazhiyin.com/28761.html
Nginx && FastDFS實現分佈式文件服務器

FastDFS是一個開源的輕量級分佈式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件為載體的在線服務,如相冊網站、視頻網站等等。
FastDFS為互聯網量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用FastDFS很容易搭建一套高性能的文件服務器集群提供文件上傳、下載等服務。
1. 下載安裝 libfastcommon
libfastcommon是從 FastDFS 和 FastDHT 中提取出來的公共 C 函數庫,基礎環境,安裝即可 。

1.1 下載:

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

1.2 解壓:

tar -zxvf V1.0.7.tar.gz

1.3 安裝:

cd libfastcommon-1.0.7
./make.sh
./make.sh install

1.4 複製文件:

解決FastDFS中lib配置文件路徑問題。

cp /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
cp /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so

2. 下載安裝FastDFS

2.1 下載:

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

2.2 解壓:

tar -zxvf V5.05.tar.gz

2.3 安裝:

cd fastdfs-5.05
./make.sh
./make.sh install

安裝完成後,默認配置文件目錄為:/etc/fdfs/,默認命令放在/usr/bin/中,以fdfs_開頭。

3. 配置FastDFS

首先將配置文件複製到/etc/fdfs目錄下。

cd /home/fantj/download/fastdfs-5.05/conf
cp * /etc/fdfs/

如下:
[root@s168 conf]# cd /etc/fdfs/
[root@s168 fdfs]# ls
anti-steal.jpg client.conf.sample mime.types storage.conf.sample tracker.conf
client.conf http.conf storage.conf storage_ids.conf tracker.conf.sample

3.1. 配置tracker.conf

FastDFS跟蹤器

修改如下配置:

#Tracker 數據和日誌目錄地址(根目錄必須存在,子目錄會自動創建)
base_path=/fastdfs/tracker
port=22122

3.1.1 創建該目錄:

mkdir -p /fastdfs/tracker

3.1.2 啟動/關閉:

fdfs_trackerd /etc/fdfs/tracker.conf start/stop

默認使用/etc/fdfs下的配置文件,如有指定配置可在後面追加參數。如有防火牆,開放防火牆規則。

3.1.3 設置開機啟動:

# systemctl enable fdfs_trackerd

或者:
# vim /etc/rc.d/rc.local
加入配置:
/etc/init.d/fdfs_trackerd start

3.1.4 tracker server 目錄及文件結構 :

Tracker服務啟動成功後,會在base_path下創建data、logs兩個目錄。目錄結構如下:

${base_path}
|__data
| |__storage_groups.dat:存儲分組信息
| |__storage_servers.dat:存儲服務器列表

|__logs
| |__trackerd.log: tracker server 日誌文件

3.2. 配置storage

下面只是基本配置,如有更細微的需要,則請查看所有配置。

group_name=fantj #組名
base_path=/fastdfs/storage #日誌目錄
store_path0=/fastdfs/storage #存儲目錄
tracker_server=192.168.27.168:22122 #tracker節點
http.server_port=8888 #端口

3.2.1 啟動

可以用這種方式啟動
fdfs_storaged /etc/fdfs/storage.conf start

也可以用這種方式,後面都用這種
# service fdfs_storaged start

3.2.2 檢查進程

netstat -unltp|grep fdfs

3.2.3 Storage 開機啟動

# systemctl enable fdfs_storaged

或者:
# vim /etc/rc.d/rc.local
加入配置:
/etc/init.d/fdfs_storaged start

3.2.4 Storage 目錄

Storage 啟動成功後,在base_path 下創建了data、logs目錄,記錄著 Storage Server 的信息。

在 store_path0 目錄下,創建了N*N個子目錄:

[root@s168 data]# pwd
/fastdfs/storage/data
[root@s168 data]# ls
00 07 0E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69 70 77 7E 85 8C 93 9A A1 A8 AF B6 BD C4 CB D2 D9 E0 E7 EE F5 FC
01 08 0F 16 1D 24 2B 32 39 40 47 4E 55 5C 63 6A 71 78 7F 86 8D 94 9B A2 A9 B0 B7 BE C5 CC D3 DA E1 E8 EF F6 FD
02 09 10 17 1E 25 2C 33 3A 41 48 4F 56 5D 64 6B 72 79 80 87 8E 95 9C A3 AA B1 B8 BF C6 CD D4 DB E2 E9 F0 F7 fdfs_storaged.pid
03 0A 11 18 1F 26 2D 34 3B 42 49 50 57 5E 65 6C 73 7A 81 88 8F 96 9D A4 AB B2 B9 C0 C7 CE D5 DC E3 EA F1 F8 FE
04 0B 12 19 20 27 2E 35 3C 43 4A 51 58 5F 66 6D 74 7B 82 89 90 97 9E A5 AC B3 BA C1 C8 CF D6 DD E4 EB F2 F9 FF
05 0C 13 1A 21 28 2F 36 3D 44 4B 52 59 60 67 6E 75 7C 83 8A 91 98 9F A6 AD B4 BB C2 C9 D0 D7 DE E5 EC F3 FA storage_stat.dat
06 0D 14 1B 22 29 30 37 3E 45 4C 53 5A 61 68 6F 76 7D 84 8B 92 99 A0 A7 AE B5 BC C3 CA D1 D8 DF E6 ED F4 FB sync

3.3. 配置client

vim client.conf

tracker_server=192.168.27.168:22122 #tracker節點
base_path=/fastdfs/client #日誌路徑

3.4. 本地圖片上傳測試

[root@s168 fdfs]# fdfs_upload_file /etc/fdfs/client.conf /home/test.png 
fantj/M00/00/00/wKgbqFu7T7iAJh7lAABDYbhAMC4812.png

或者:
[root@s168 fdfs]# fdfs_test /etc/fdfs/client.conf /home/test.png
This is FastDFS client test program v5.05

Copyright (C) 2008, Happy Fish / YuQing

FastDFS may be copied only under the terms of the GNU General
Public License V3, which may be found in the FastDFS source kit.
Please visit the FastDFS Home Page http://www.csource.org/
for more detail.

[2018-5-08 20:41:15] DEBUG - base_path=/fastdfs/client, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0

invalid operation: /home/test.png

4. 安裝nginx

之前有寫過nginx的安裝文章,在這裡不重複。沒有安裝過的請點擊:

點擊查看我的文章:nginx安裝

5. FastDFS 配置 Nginx 模塊

fastdfs-nginx-module 可以重定向文件鏈接到源服務器取文件,避免客戶端由於複製延遲導致的文件無法訪問錯誤。

5.1 下載安裝

wget https://github.com/happyfish100/fastdfs-nginx-module/archive/5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip
unzip 5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip
mv fastdfs-nginx-module-5e5f3566bbfa57418b5506aaefbe107a42c9fcb1/ fastdfs-nginx-module

5.2 配置Nginx

ngix -s stop
cd nginx-1.12.1
#添加模塊
./configure --add-module=../fastdfs-nginx-module/src
(如果你是yum安裝的nginx,我暫時還沒找到解決辦法,目前的方法是nginx -V 查看nginx版本,然後下載一個同版本的nginx,
然後將/etc/nginx 下數據整體備份,make && make install 完成後再做恢復)
#重新編譯和安裝
make
make install

#拷貝配置文件
[root@s168 src]# pwd
/home/fantj/download/fastdfs-nginx-module/src
[root@s168 src]# cp mod_fastdfs.conf /etc/fdfs/

配置 /etc/fdfs/mod_fastdfs.conf文件

#配置 /etc/fdfs/mod_fastdfs.conf文件

base_path=/fastdfs/tmp #日誌目錄
store_path0=/fastdfs/storage
tracker_server=192.168.27.168:22122
# the group name of the local storage server
group_name=fantj #和storage的groupname一一對應
url_have_group_name = true #開啟url中附帶group_name

配置nginx

# 配置nginx
[root@s168 fdfs]# cd /usr/local/nginx/conf/
[root@s168 conf]# vim nginx.conf
#添加如下配置
server {
listen 88;
server_name 192.168.27.168;

location /fantj/M00{
ngx_fastdfs_module;
}
}

# 進入/usr/local/nginx/sbin目錄執行配置檢測
[root@s168 sbin]# ./nginx -t
ngx_http_fastdfs_set pid=6431
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
# 啟動nginx
[root@s168 sbin]# ./nginx
ngx_http_fastdfs_set pid=6436

服務重啟並測試

[root@s168 fdfs]# fdfs_trackerd tracker.conf restart
waiting for pid [1202] exit ...
starting ...
[root@s168 fdfs]# fdfs_storaged storage.conf restart
waiting for pid [1211] exit ...

starting ...
[root@s168 fdfs]# /usr/local/nginx/sbin/nginx -s reload
ngx_http_fastdfs_set pid=6463

6. 配置成功測試

Nginx && FastDFS實現分佈式文件服務器


分享到:


相關文章: