前言
FastDFS是一個開源的輕量級分布式文件系統(tǒng)蚂会,由跟蹤服務(wù)器(tracker server)唱逢、存儲服務(wù)器(storage server)和客戶端(client)三個部分組成慨仿,主要解決了海量數(shù)據(jù)存儲問題磕蛇,特別適合以中小文件(建議范圍:4KB < file_size <500MB)為載體的在線服務(wù)以政。
(1)每次上傳文件后都會返回一個地址项郊,用戶需要自己保存此地址。
(2)為了支持大容量锰镀,存儲節(jié)點(服務(wù)器)采用了分卷(或分組)的組織方式娘侍。存儲系統(tǒng)由一個或多個卷組成,卷與卷之間的文件是相互獨立的泳炉,所有卷的文件容量累加就是整個存儲系統(tǒng)中的文件容量憾筏。一個卷可以由一臺或多臺存儲服務(wù)器組成,一個卷下的存儲服務(wù)器中的文件都是相同的花鹅,卷中的多臺存儲服務(wù)器起到了冗余備份和負載均衡的作用氧腰。
安裝tracker服務(wù)
安裝依賴
yum -y install gcc-c++ libevent
安裝基礎(chǔ)模塊 libfas
# 進入編譯目錄
cd /usr/local/lib/fastdfs
# 克隆文件
git clone https://github.com/happyfish100/libfastcommon.git
# 編譯
cd libfastcommon/
./make.sh
./make.sh install
安裝fastdfs
cd /usr/local/lib/fastdfs
git clone https://github.com/happyfish100/fastdfs.git
cd fastdfs
./make.sh
./make.sh install
此時會在/etc/fdfs目錄下生成幾個文件
tracker.conf.sample //負責均衡調(diào)度服務(wù)器配置文件
client.conf.sample //客戶端上傳配置文件
storage.conf.sample//文件存儲服務(wù)器配置文件
storage_ids.conf.sample // 集群配置
還需要以下兩個文件
# http.conf //http服務(wù)器配置文件
# mime.types //文件類型配置文件
cp /usr/local/lib/fastdfs/fastdfs/conf/http.conf /etc/fdfs/http.conf
cp /usr/local/lib/fastdfs/fastdfs/conf/mime.types /etc/fdfs/mime.types
配置tracker 基本參數(shù)
cp tracker.conf.sample tracker.conf
vim tracker.conf
# 如果只能本機上傳 則改為本機ip如果允許所有IP 則不改
bind_addr=
# tracker 存放日志和數(shù)據(jù)的目錄
base_path=/home/yuqing/fastdfs
# tracker http 端口
http.server_port=8080 改為 http.server_port=80
啟動 tracker
fdfs_trackerd /etc/fdfs/tracker.conf
設(shè)置開機啟動
/sbin/chkconfig --add fdfs_trackerd
配置storage 基本配置
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
#修改storage server的配置文件:
vm /etc/fdfs/storage.conf
# 允許訪問的地址
bind_addr=
#base_path表示storage存放數(shù)據(jù)的目錄
base_path=/home/yuqing/fastdfs 改為 base_path=/data/fastdfs
#修改storage的資源存放路徑
store_path0=/home/yuqing/fastdfs 改為 store_path0=/data/fastdfs
#如果有多個掛載磁盤則定義多個store_path,如下
#store_path1=......
#store_path2=......
修改storage的對應(yīng)的tracker_server的ip地址和端口
tracker_server=192.168.209.121:22122
#如果有多個則配置多個tracker_server
tracker_server=......
tracker_server=......
# http 服務(wù)地址
http.server_port=8888
啟動 tracker
fdfs_storaged /etc/fdfs/storage.conf
設(shè)置開機啟動
/sbin/chkconfig --add fdfs_storaged
使用fastdfs 提供的測試工具上傳文件
修改配置
# 存放日志的目錄
base_path=...
# tracker 的配置 請與storage.conf 保持一致
tracker_server = 172.18.36.145:22122
# 請與tracker.conf保持一致
http.tracker_server_port = 8080
測試上傳
fdfs_test /etc/fdfs/client.conf upload fdfs_tracker.sh
如果成功則會返回以下結(jié)果
This is FastDFS client test program v6.06
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.fastken.com/
for more detail.
[2020-06-09 14:41:11] DEBUG - base_path=/usr/local/lib/fastdfs/runtime/client, connect_timeout=5, 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
tracker_query_storage_store_list_without_group:
server 1. group_name=, ip_addr=172.18.36.145, port=23000
group_name=group1, ip_addr=172.18.36.145, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/rBIkkV7fLweAJDyoAAAA7uq26lQ0731.sh
source ip address: 172.18.36.145
file timestamp=2020-06-09 14:41:11
file size=238
file crc32=3937856084
example file url: http://172.18.36.145:8080/group1/M00/00/00/rBIkkV7fLweAJDyoAAAA7uq26lQ0731.sh
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/rBIkkV7fLweAJDyoAAAA7uq26lQ0731_big.sh
source ip address: 172.18.36.145
file timestamp=2020-06-09 14:41:11
file size=238
file crc32=3937856084
example file url: http://172.18.36.145:8080/group1/M00/00/00/rBIkkV7fLweAJDyoAAAA7uq26lQ0731_big.sh
配置nginx 訪問文件 (需要在storage上配置)
nginx 本身沒有fastdfs 模塊 需要在編譯的時候加入fastdfs -nginx 模塊
下載fastdfs-nginx-module
git clone https://github.com/happyfish100/fastdfs-nginx-module.git
下載nginx 源碼及安裝編譯過程可參照
http://www.reibang.com/p/da8bc470836c
只需要在configure的時候加入?yún)?shù)
# 加入附加模塊
... --add-module=/usr/local/lib/fastdfs/fastdfs-nginx-module/src
然后按照nginx 正常流程make make install
復(fù)制并配置module 配置文件
cp /usr/local/lib/fastdfs/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/mod_fastdfs.conf
vim /etc/fdfs/mod_fastdfs.conf
# fastdfs-nginx 日志目錄
base_path=
# 跟storage.conf 里配置一樣
tracker_server=
# 跟storage.conf 的配置一樣
store_path0=
# http鏈接是否有g(shù)roupname
url_have_group_name = true
修改nginx 的配置
加入如下server
server {
listen 80;
server_name 192.168.5.72;
location /group1/M00 {
ngx_fastdfs_module;
}
}
集群與高可用
集群只需要部署多個tracker storage 服務(wù)就可以了