FastDFS 專為互聯網場景設計,支持冗余備份、負載均衡、線性擴容。本文記錄 Tracker/Storage 雙節點部署、Nginx 反向代理整合與 Java 客戶端測試。
| 角色 | IP | 說明 |
|---|---|---|
| Tracker | 192.168.241.137 | 調度中心,管理 Storage 組 |
| Storage (Group1) | 192.168.241.138 | 存儲節點,組名 group1 |
| Storage (Group2) | 192.168.241.139 | 存儲節點,組名 group2(演示負載均衡) |
所有節點關閉防火牆:service iptables stop; setenforce 0。
yum -y install gcc-c++ libevent tar -zxvf libfastcommonV1.0.7.tar.gz -C /usr/local cd /usr/local/libfastcommon-1.0.7 && ./make.sh && ./make.sh install cp /usr/lib64/libfastcommon.so /usr/lib/ tar -zxvf FastDFS_v5.05.tar.gz -C /usr/local cd /usr/local/FastDFS && ./make.sh && ./make.sh install cp /usr/local/FastDFS/conf/http.conf /etc/fdfs/ cp /usr/local/FastDFS/conf/mime.types /etc/fdfs/ cd /etc/fdfs cp tracker.conf.sample tracker.conf mkdir -p /home/FastDFS vim tracker.conf # 關鍵配置 base_path=/home/FastDFS http.server_port=8080 # port=22122 (默認) /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
# 依賴安裝同 Tracker # 修改 storage.conf vim storage.conf group_name=group1 # 節點2改為 group2 base_path=/home/FastDFS store_path0=/home/FastDFS/fdfs_storage tracker_server=192.168.241.137:22122 http.server_port=8888 mkdir -p /home/FastDFS/fdfs_storage /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
cd /etc/fdfs cp client.conf.sample client.conf vim client.conf base_path=/home/FastDFS tracker_server=192.168.241.137:22122 # 上傳 /usr/bin/fdfs_test /etc/fdfs/client.conf upload /home/567.png
成功返回文件 ID,如 group1/M00/00/00/wKgBg1xxxx.jpg。
yum install -y pcre pcre-devel zlib zlib-devel openssl openssl-devel
tar -zxvf nginx-1.8.0.tar.gz -C /usr/local
cd /usr/local/nginx-1.8.0
./configure --prefix=/usr/local/nginx \
--with-http_gzip_static_module \
--http-client-body-temp-path=/var/temp/nginx/client \
--http-proxy-temp-path=/var/temp/nginx/proxy \
--http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
--http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
--http-scgi-temp-path=/var/temp/nginx/scgi
make && make install
# nginx.conf
upstream storage_server_group1 { server 192.168.241.138:8888 weight=10; }
upstream storage_server_group2 { server 192.168.241.139:8888 weight=10; }
server {
listen 8080; server_name ccc.test.com;
location /group1 { proxy_pass https://storage_server_group1; proxy_set_header Host $host; ... }
location /group2 { proxy_pass https://storage_server_group2; proxy_set_header Host $host; ... }
}
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz -C /usr/local
cd /usr/local/fastdfs-nginx-module/src
vim config # 將 /usr/local/ 改為 /usr/
cp /usr/local/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
vim /etc/fdfs/mod_fastdfs.conf
base_path=/home/FastDFS
tracker_server=192.168.241.137:22122
url_have_group_name=true
store_path0=/home/FastDFS/fdfs_storage
cp /usr/lib64/libfdfsclient.so /usr/lib/
# 編譯 Nginx 並加載模塊
cd /usr/local/nginx-1.8.0
./configure --prefix=/usr/local/nginx --add-module=/usr/local/fastdfs-nginx-module/src ...
make && make install
# nginx.conf
server {
listen 8888; server_name 192.168.241.138;
location /group1/M00/ {
root /home/FastDFS/fdfs_storage/data;
ngx_fastdfs_module;
}
}
https://192.168.241.137:8080/group1/M00/.../xxx.jpg → Tracker Nginx 代理到 Storage 組 → 返回圖片。TrackerClient 上傳下載,依賴 fastdfs-client-java。至此,FastDFS 高可用集群部署完成。