前言
FastDFS(Fast Distributed File System) 是一款使用 c 語言編寫的開源輕量級分布式檔案系統,它為網際網路量身定制,充分考慮了備援備份、負載均衡、線性擴容等機制,并注重高可用、高性能等名額,使用 FastDFS 很容易搭建一套高性能的檔案伺服器叢集。本文不講解原理和架構,隻描述我在學習過程中搭建單機版FastDFS的安裝和測試過程,并将其總結成一篇詳細的部署文檔分享給大家。
一、邏輯規劃
(1)部署架構
FastDFS由Tracker、Storage和Client三個元件構成,Tracker跟蹤伺服器,主要做排程工作,起到均衡的作用,存儲伺服器;Storage存儲伺服器,主要提供容量和備份服務;Client用戶端,上傳下載下傳資料的伺服器。本次部署目标為單機結構,由一個Tracker跟蹤器和一個Group存儲組構成。該架構使用三台機器,其中一台機器部署Tracker,另兩台機器暫且稱之為A和B,都部署Storage并構成一個邏輯組或稱為卷,其中B是A的備份。搭建完成後在Ttracker機器上運作Client程式測試上傳、下載下傳。
(2)伺服器環境
作業系統版本 | FastDFS版本 |
CentOS | 7.4.1708 (Core) |
perl | v5.32.0 |
gcc | 4.8.5 20150623 |
libfastcommon | 1.0.43 |
fastdfs | 6.06 |
二、安裝FastDFS
FastDFS源檔案安裝包,同時包含Tracker、Storage、Client(僅用于測試)三個元件,而Tracker和Storage的安裝完全一緻僅在配置檔案上作出區分,啟動時加載哪個配置檔案就扮演哪個角色,是以本文僅描述一遍安裝過程但會分别重點描述兩種配置檔案的配置和啟動。以下描述A、B兩台機器的安裝過程。
2.1 檢查環境
FastDFS需要gcc環境和perl環境,是以在安裝之前需要用指令檢查一下系統中是否安裝有這兩個環境。
gcc -v
perl -v
# 阿裡雲伺服器需要執行如下指令安裝gcc
sed -i 's/^exclude/#exclude/' /etc/yum.conf && yum -y install gcc gcc-c++ && sed -i 's/^#exclude/exclude/' /etc/yum.conf
# 普通伺服器
yum -y install gcc gcc-c++
補充:
- perl下載下傳位址 https://www.perl.org/ ,安裝教程參見https://www.runoob.com/perl/perl-environment.html
- 安裝過程如果因缺少環境報錯,則可先清除編譯./make.sh clean後安裝環境,然後再次編譯
2.2. 安裝libfastcommon依賴庫
将下載下傳的庫檔案統一放到/home/user中便于查找,我使用wget直接下載下傳,然後解壓編譯安裝。
wget https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz
tar -zxvf V1.0.43.tar.gz
cd libfastcommon-1.0.43
./make.sh
./make.sh install
配置環境變量和軟連結
配置環境變量,64位系統會安裝在/usr/lib64下
export LD_LIBRARY_PATH=/usr/lib64/
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
2.3. 安裝FastDFS
(1)下載下傳安裝包
wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz
tar -zxf V6.06.tar.gz
cd fastdfs-6.06
./make.sh
./make.sh install
安裝完成後檢視可執行指令 ls -la /usr/bin/fdfs*
三、配置Tracker服務
安裝完成之後預設安裝在/etc/fdfs目錄,并會生成這四個配置檔案
[[email protected] fdfs]# cd /etc/fdfs/
[[email protected] fdfs]# ll
total 24
-rw-r--r-- 1 root root 1461 Aug 10 14:50 client.conf.sample
-rw-r--r-- 1 root root 7927 Aug 10 14:50 storage.conf.sample
-rw-r--r-- 1 root root 105 Aug 10 14:50 storage_ids.conf.sample
-rw-r--r-- 1 root root 7389 Aug 10 14:50 tracker.conf.sample
(1)配置tracker.conf檔案
删除tracker.conf.sample檔案的.sample擴充名,編輯檔案
mv tracker.conf.sample tracker.conf
vi tracker.conf
以下列出的内容為必須配置項
# the base path to store data and log files
base_path=/home/user/fastdfs/tracker # tracker存儲data和log的跟路徑,必須提前建立好
# HTTP port on this tracker server
http.server_port=22122 # 預設端口可以不修改
(2)啟動tracker(支援start|stop|restart)
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
(3)檢視日志
檢視tracker啟動日志,進入剛剛指定的base_path(/home/user/fastdfs/tracker)中有個logs目錄,檢視tracker.log檔案
四、配置Storage服務
Storage的安裝和tracker安裝完全一緻,實質上二者僅差一個配置檔案
(1)配置storage.conf檔案
安裝完成之後預設安裝在/etc/fdfs中,找到storage.conf.sample删除.sample擴充名,并編輯檔案
mv storage.conf.sample storag.conf
vi storage.conf
以下列出的為必須配置項
base_path=/home/user/fastdfs/storage #storage存儲data和log的跟路徑,必須提前建立好
port=23000 #storge預設23000,同一個組的storage端口号必須一緻
group_name=group1 #預設組名,根據實際情況修改
store_path_count=1 #存儲路徑個數,需要和store_path個數比對
store_path0=/home/user/fastdfs/storage #如果為空,則使用base_path
tracker_server=47.104.101.255:22122 #配置該storage監聽的tracker的ip和port
(2)啟動storage(支援start|stop|restart)
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
(3)檢視日志
進入/home/user/fastdfs/logs目錄檢視啟動日志
五、配置Client測試存儲服務
單機版FastDFS搭建好後,在A伺服器安裝的FastDFS程式基礎上配置一個client測試程式。
(1)配置client.conf檔案
進入/ect/fdfs/目錄去掉client.conf.sample檔案的.sample擴充名,編輯檔案配置如下内容。
# the base path to store log files
base_path=/home/user/fastdfs/client # 存放日志目錄須事先建立好
# tracker_server can ocur more than once, and tracker_server format is
# "host:port", host can be hostname or ip address
tracker_server=47.104.101.255:22122 # tracker伺服器ip位址+端口
(2)上傳測試
[[email protected] app]# fdfs_upload_file /etc/fdfs/client.conf test.jpg
group1/M00/00/00/rBEu4l8yAG-AclEfAAA8vWLrRnk890.jpg
- group1:組名或稱卷
- M00:虛拟驅動器名,對應storage配置檔案中的 store_path0=/home/user/fastdfs/storage/data(data為程式自動建立)
- /00/00/:生成的存儲目錄
- rBEu4l8yAG-AclEfAAA8vWLrRnk890.jpg:檔案名
(3)下載下傳測試
[[email protected] app]# /usr/bin/fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/rBEu4l8yAG-AclEfAAA8vWLrRnk890.jpg
[[email protected] app]# ls
rBEu4l8yAG-AclEfAAA8vWLrRnk890.jpg
檢視存儲狀态
fdfs_monitor /etc/fdfs/client.conf
到此在liunx伺服器上搭建單機版FastDFS工作已經全部完成,并通過了上傳、下載下傳測試,但這個demo是單機版的在實際生産環境中不實用,是以下一篇文章我計劃在此基礎上搭建分布式叢集模拟生産環境。