?1,FastDFS基本介紹:
FastDFS 系統有三個角色,跟蹤服務器(Tracker Server)、存儲服務器(Storage Server)和客戶端(Client)。
Tracker Server: 跟蹤服務器,主要做調度工作,起到均衡的作用;負責管理所有的 storage server和 group,每個 storage 在啟動后會連接Tracker,告知自己所屬 group 等信息,并保持周期性心跳。
Storage Server:存儲服務器,主要提供容量和備份服務;以 group 為單位,每個 group 內可以有多臺 storage server,數據互為備份。
Client:客戶端,上傳下載數據的服務器,也就是我們自己的項目所部署在的服務器。這里免不了放一張余慶老師介紹 FastDFS 的 PPT 中的一張架構圖,清晰的說明了上述職責及關系:
這里免不了放一張余慶老師介紹 FastDFS 的 PPT 中的一張架構圖,清晰的說明了上述職責及關系:
上述架構優點:
1.高可靠性:無單點故障
?2.高吞吐性:只要 Group 足夠多,數據流量將足夠分散。
那么怎么上傳下載以及同步文件這么操作呢?我在這就不詳細說全部流程了,大概上傳流程就是客戶端發送上傳請求到Tracker Server服務器,接著Tracker Server服務器分配group和Storage Server,當然這是有一定規則的,選擇好Storage Server后再根據一定規則選擇存儲在這個服務器會生成一個file_id,這個file_id 包含字段包括:storage server ip、文件創建時間、文件大小、文件 CRC32 校驗碼和隨機數;每個存儲目錄下有兩個 256 * 256 個子目錄,后邊你會知道一個Storage Server存儲目錄下有好多個文件夾的,storage 會按文件file_id進行兩次 hash ,路由到其中一個子目錄,然后將文件存儲到該子目錄下,最后生成文件路徑:group 名稱、虛擬磁盤路徑、數據兩級目錄、file_id和文件后綴就是一個完整的文件地址。
2,FastDFS 在 CentOS 下配置安裝部署
一、安裝 libfastcommon 和 FastDFS
1,下載安裝 libfastcommon ,這里是通過wget下載:
?wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
解壓 libfastcommon,命令:
tar -zxvf V1.0.7.tar.gz
移動解壓目錄到/usr/local下:
mv libfastcommon-1.0.7/usr/local/
編譯,進入libfastcommon-1.0.7目錄,命令:
cd/usr/local/libfastcommon-1.0.7./make.sh
2安裝,命令:
./make.shinstall
顯示這樣的畫面,就是安裝 libfastcommon 成功啦。
2,下載安裝 FastDFS,這里也是通過wget下載
wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
解壓 FastDFS ,命令:
tar -zxvf V5.05.tar.gz
移動解壓目錄到/usr/local下:
mv fastdfs-5.05//usr/local/
編譯,進入fastfds-5.05目錄,命令:
cd /usr/local/fastdfs-5.05./make.sh
安裝,命令:
./make.sh install
顯示這樣的畫面,就是安裝 FastDFS 成功啦。
二、配置 Tracker 服務
上述安裝成功后,在/etc/目錄下會有一個fdfs的目錄,進入它。會看到三個.sample后綴的文件,這是作者給我們的示例文件,我們需要把其中的tracker.conf.sample文件改為tracker.conf配置文件并修改它。參照以下命令:
cd /etc/fdfs/
cp tracker.conf.sample tracker.conf
vim tracker.conf
// 編輯tracker.conf文件,找到你需要修改的兩個參數就可以了,我這里不做修改,用默認的
# thebasepathtostore dataandlog files// 數據和日志的存放目錄
base_path=/home/yuqing/fastdfs
# HTTP port on this tracker server// http服務端口
http.server_port=8070
修改完成后我們需要建立tracker的工作目錄,不然啟動報錯(上面base_path配置的目錄)
mkdir -p? /home/yuqing/fastdfs
啟動tracker服務:
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf start
查看監聽:
ps -ef|grep fdfs 或 netstat -lnpt|grep fdfs
看到trackerd服務正常啟動后,這時候就算 Tracker服務安裝成功啦!
三、配置 Storage 服務
現在開始配置 Storage 服務,由于我這是單機器測試,你把 Storage 服務放在多臺服務器也是可以的,它有 Group(組)的概念,同一組內服務器互備同步,這里不再演示。直接開始配置,依然是進入/etc/fdfs的目錄操作,首先進入它。會看到三個.sample后綴的文件,我們需要把其中的storage.conf.sample文件改為storage.conf配置文件并修改它。參照以下命令:
cd /etc/fdfs/
cp storage.conf.sample storage.conf
vim storage.conf
打開storage.conf文件后,找到下面參數進行修改:
# the base path to store data and log files // 數據和日志的存放目錄
base_path=/home/yuqing/fastdfs
# path(disk or mount point) count, default value is 1 // storage在存儲文件時支持多路徑,默認只設置一個(下面store_path0配置的數量個數)
store_path_count=1
# store_path#, based 0, if store_path0 not exists, it's value is base_path // 配置多個store_path路徑,從0開始,如果store_path0不存在,則base_path必須存在
# the paths must be exist
// 此處可以配置多個路徑,如:store_path0=xx, store_path1=xx,store_path2=xx
// 多個項目的文件按照文件夾分割,通過/usr/bin/fdfs_upload_file <config_file> <local_filename> [storage_ip:port] [store_path_index] 選擇storage服務器和store_path角標上傳到相應的項目下
store_path0=/home/yuqing/fastdfs
# tracker_server can ocur more than once, and tracker_server format is // 設置tracker_server
#? "host:port", host can be hostname or ip address
tracker_server=192.168.2.121:22122
修改完成后我們需要建立tracker的工作目錄,不然啟動報錯(上面base_path配置的目錄和store_path0配置的目錄)
mkdir-p /home/yuqing/fastdfs
啟動storage服務:
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf start
查看監聽:
ps -ef|grep fdfs 或 netstat -lnpt|grep fdfs
很好,22122 和 23000端口都在監聽了,這個時候你去/home/yuqing/fastdfs文件夾下看的話,會出現一大堆文件夾,而且進去還有一大堆,哈哈,這就是存放文件的啦!
到這里,我們安裝配置并啟動了 Tracker 和 Storage 服務,也沒有報錯了。那他倆是不是在通信呢?我們可以監視一下:
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
看到我紅線處ACTIVE這樣就 ok 啦!
四、配置 fdfs_upload_file 上傳文件
依然是進入/etc/fdfs的目錄操作,首先進入它。會看到三個.sample后綴的文件,我們需要把其中的client.conf.sample文件改為client.conf配置文件并修改它。參照以下命令:
cd /etc/fdfs/
cpclient.conf.sample client.conf?
vim client.conf
找到下面參數進行修改:
# the base path to store log files // 日志的存放目錄
base_path=/home/yuqing/fastdfs
# tracker_server can ocur more than once, and tracker_server format is // tracker_server服務的地址和端口號
#? "host:port", host can be hostname or ip address
tracker_server=192.168.2.121:22122
修改完成后我們就可以通過/usr/bin/fdfs_upload_file命令上傳文件了,/usr/bin/fdfs_upload_file 命令用法:
[root@localhost fdfs]# /usr/bin/fdfs_upload_file
Usage: /usr/bin/fdfs_upload_file <config_file> <local_filename> [storage_ip:port] [store_path_index]
// 命令 配置文件 上傳的文件 storage_ip和端口 store_path角標