這裏寫目錄標題
- 1. 什麼是分佈式文件系統
- 2. 爲什麼要使用分佈式文件系統
- 3. FastDFS 與 HDFS比較
- 4. 什麼是FastDFS
- 5. 常見術語
- 6. FastDFS架構
- 7. FastDFS上傳過程
- 8. FastDFS下載過程
- 9. Linux上FastDFS安裝
- 9.1 基礎環境安裝
- 1.下載安裝包:
- 2. 安裝基礎環境
- 3. 安裝libfatscommon函數庫
- 4. 進入libfastcommon文件夾,編譯並且安裝
- 5. 安裝fastdfs主程序文件
- 6. 安裝fastdfs
- 7. 拷貝配置文件
- 9.2 配置tracker服務
- 9.3 配置storage服務
- 9.4 利用client測試上傳
- 9.5 配置 nginx fastdfs 實現文件服務器
- 注:fastdfs安裝好以後是無法通過http訪問的,這個時候就需要藉助nginx了,所以需要安裝fastdfs的第三方模塊到nginx中,就能使用了。
- 注:nginx需要和storage在同一個節點。
- 1. 解壓nginx的fastdfs壓縮包
- 2. 複製配置文件:
- 3. 修改/fastdfs-nginx-module/src/config文件,主要是修改路徑,把local刪除,因爲fastdfs安裝的時候我們沒有修改路徑,原路徑是/usr:
- 4. 安裝nginx
- 5. 修改 mod_fastdfs.conf 配置文件
- 6. 創建工作空間
- 7. 修改nginx.conf,添加如下虛擬主機
- 8. 啓動nginx
- 9. 瀏覽器訪問
1. 什麼是分佈式文件系統
- 隨着文件數據的越來越多,通過tomcat或nginx虛擬化的靜態資源文件在單一的一個服務器節點內是存不下的,如果用多個節點來存儲也可以,但是不利於管理和維護,所以我們需要一個系統來管理多臺計算機節點上的文件數據,這就是分佈式文件系統。
- 分佈式文件系統是一個允許文件通過網絡在多臺節點上分享的文件系統,多臺計算機節點共同組成一個整體,爲更多的用戶提供分享文件和存儲空間。比如常見的網盤,本質就是一個分佈式的文件存儲系統。雖然我們是一個分佈式的文件系統,但是對用戶來說是透明的,用戶使用的時候,就像是訪問本地磁盤一樣。
- 分佈式文件系統可以提供冗餘備份,所以容錯能力很高。 系統中有某些節點宕機,但是整體文件服務不會停止,還是能夠爲用戶提供服務,整體還是運作的,數據也不會丟失。分佈式文件系統的可擴展性強,增加或減少節點都很簡單,不會影響線上服務,增加完畢後會發佈到線上,加入到集羣中爲用戶提供服務。
- 分佈式文件系統可以提供負載均衡能力,在讀取文件副本的時候可以由多個節點共同提供服務,而且可以通過橫向擴展來確保性能的提升與負載。
2. 爲什麼要使用分佈式文件系統
- 海量文件數據存儲
- 文件數據高可用(冗餘備份)
- 讀寫性能和負載均衡
以上3點都是我們之前使用tomcat或nginx所不能夠實現的,這也是我們爲什麼要使用分佈式文件系統的原因
3. FastDFS 與 HDFS比較
說到分佈式文件存儲,肯定會有人想到HDFS,他們兩者主要定位和應用場景是不一樣的。
- Hadoop中的文件系統HDFS主要解決並行計算中分佈式存儲數據的問題。其單個數據文件通常很大,採用了分塊(切分)存儲的方式,所以是大數據大文件存儲來使用的場景。
- FastDFS主要用於互聯網網站,爲文件上傳和下載提供在線服務。所以在負載均衡、動態擴容等方面都支持得比較好,FastDFS不會對文件進行分快存儲。FastDFS用於存儲中小文件都是不錯的,比如用戶頭像啊,一些較小的音視頻文件啊等等都行。
4. 什麼是FastDFS
FastDFS是一個開源的輕量級分佈式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。
特別適合以文件爲載體的在線服務,如相冊網站、視頻網站等等。FastDFS爲互聯網量身定製,充分考慮了冗餘備份、負載均衡、線性擴容等機制,並注重高可用、高性能等指標,使用FastDFS很容易搭建一套高性能的文件服務器集羣提供文件上傳、下載等服務。
FastDFS服務端有兩個角色:跟蹤器(tracker)和存儲節點(storage)。跟蹤器主要做調度工作,在訪問上起負載均衡的作用。
存儲節點存儲文件,完成文件管理的所有功能:就是這樣的存儲、同步和提供存取接口,FastDFS同時對文件的metadata進行管理。所謂文件的meta data就是文件的相關屬性,以鍵值對(key value)方式表示,如:width=1024,其中的key爲width,value爲1024。文件metadata是文件屬性列表,可以包含多個鍵值對。
跟蹤器和存儲節點都可以由一臺或多臺服務器構成。跟蹤器和存儲節點中的服務器均可以隨時增加或下線而不會影響線上服務。其中跟蹤器中的所有服務器都是對等的,可以根據服務器的壓力情況隨時增加或減少。
爲了支持大容量,存儲節點(服務器)採用了分卷(或分組)的組織方式。存儲系統由一個或多個卷組成,卷與卷之間的文件是相互獨立的,所有卷的文件容量累加就是整個存儲系統中的文件容量。一個卷可以由一臺或多臺存儲服務器組成,一個卷下的存儲服務器中的文件都是相同的,卷中的多臺存儲服務器起到了冗餘備份和負載均衡的作用。
在卷中增加服務器時,同步已有的文件由系統自動完成,同步完成後,系統自動將新增服務器切換到線上提供服務。
當存儲空間不足或即將耗盡時,可以動態添加捲。只需要增加一臺或多臺服務器,並將它們配置爲一個新的卷,這樣就擴大了存儲系統的容量。
FastDFS中的文件標識分爲兩個部分:卷名和文件名,二者缺一不可。
– 摘自<百度百科>
5. 常見術語
- tracker:追蹤者服務器,主要用於協調調度,可以起到負載均衡的作用,記錄storage的相關狀態信息。
- storage:存儲服務器,用於保存文件以及文件的元數據信息。
- group:組,同組節點提供冗餘備份,不同組用於擴容。
- mata data:文件的元數據信息,比如長寬信息,圖片後綴,視頻的幀數等。
6. FastDFS架構
7. FastDFS上傳過程
- Storage會定時的向Tracker發送心跳,告訴Tracker自己還還活着,這樣Fastdfs就可以工作了
- 客戶端發送上傳請求給Tracker,Tracker會檢查是否有可用Storage
- 如果有可用的,客戶端就可以上傳文件數據到Storage上
- Storage將文件寫入磁盤後,會返回路徑信息給客戶端
- 客戶端就可以根據這個路徑信息找到上傳的文件
8. FastDFS下載過程
- Storage會定時的向Tracker安裝發送心跳,告訴Tracker自己還還活着,這樣Fastdfs就可以工作了
- 客戶端發送下載請求到Tracker上,Tracker查找到存儲的Storage地址後返回給客戶端
- 客戶端拿到Storage地址後,去Storage上找到文件
- 把文件返回給客戶端
9. Linux上FastDFS安裝
注:一定要先啓動Tracker,在啓動Storage
9.1 基礎環境安裝
注:如果Tracker和Storage是配置在不同的服務器上,那麼基礎環境要在兩個服務器上都安裝。
1.下載安裝包:
- libfatscommon:FastDFS分離出的一些公用函數包
- FastDFS:FastDFS本體
- fastdfs-nginx-module:FastDFS和nginx的關聯模塊
- nginx:發佈訪問服務
2. 安裝基礎環境
yum install -y gcc gcc-c++
yum -y install libevent
yum -y install zlib zlib-devel pcre pcre-devel gcc gcc-c++ openssl openssl-devel libevent libevent-devel perl unzip net-tools wget
3. 安裝libfatscommon函數庫
tar -zxvf libfastcommon-1.0.42.tar.gz
4. 進入libfastcommon文件夾,編譯並且安裝
./make.sh
./make.sh install
5. 安裝fastdfs主程序文件
tar -zxvf fastdfs-6.04.tar.gz
6. 安裝fastdfs
./make.sh
./make.sh install
7. 拷貝配置文件
cp /home/software/FastDFS/fastdfs-6.04/conf/* /etc/fdfs/
停止tracker
/usr/bin/stop.sh /etc/fdfs/tracker.conf
9.2 配置tracker服務
注:tracker和storage都是同一個fastdfs的主程序的兩個不同概念,配置不同的配置文件就可以設定爲tracker或者storage
1. 進入到配置文件目錄
cd /etc/fdfs
2. 修改tracker配置文件
vim tracker.conf
#修改tracker配置文件,此爲tracker的工作目錄,保存數據以及日誌
base_path=/usr/local/fastdfs/tracker
3. 創建工作目錄
mkdir /usr/local/fastdfs/tracker -p
4. 啓動進程
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
9.3 配置storage服務
1. 進入到配置文件目錄
cd /etc/fdfs
2. 修改storage配置文件
vim storage.conf
# 修改組名 可以不修改
group_name=test
# 修改storage的工作空間
base_path=/usr/local/fastdfs/storage
# 修改storage的存儲空間
store_path0=/usr/local/fastdfs/storage
# 修改tracker的地址和端口號,用於心跳
tracker_server=192.168.1.153:22122
# 後續結合nginx的一個對外服務端口號
http.server_port=8888
3. 創建工作目錄
mkdir /usr/local/fastdfs/storage -p
4. 啓動進程
前提:必須首先啓動tracker
/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
9.4 利用client測試上傳
1. 進入到配置文件目錄
cd /etc/fdfs
2. 修改client配置文件
vim client.conf
# 修改client的工作空間
base_path=/usr/local/fastdfs/client
# 修改tracker的地址和端口號,用於心跳
tracker_server=192.168.1.153:22122
3. 創建工作目錄
mkdir /usr/local/fastdfs/client
4. 隨便找一張圖片測試測試
cd /usr/bin/
./fdfs_test /etc/fdfs/client.conf upload /home/logo.png
9.5 配置 nginx fastdfs 實現文件服務器
注:fastdfs安裝好以後是無法通過http訪問的,這個時候就需要藉助nginx了,所以需要安裝fastdfs的第三方模塊到nginx中,就能使用了。
注:nginx需要和storage在同一個節點。
1. 解壓nginx的fastdfs壓縮包
tar -zxvf fastdfs-nginx-module-1.22.tar.gz
2. 複製配置文件:
cd /fastdfs-nginx-module-1.22/src
cp mod_fastdfs.conf /etc/fdfs
3. 修改/fastdfs-nginx-module/src/config文件,主要是修改路徑,把local刪除,因爲fastdfs安裝的時候我們沒有修改路徑,原路徑是/usr:
4. 安裝nginx
- 安裝依賴環境
(1)安裝gcc環境
yum install gcc-c++
(2)安裝PCRE庫,用於解析正則表達式
yum install -y pcre pcre-devel
(3)zlib壓縮和解壓縮依賴,
yum install -y zlib zlib-devel
(4)SSL 安全的加密的套接字協議層,用於HTTP安全傳輸,也就是https
yum install -y openssl openssl-devel
2.解壓,需要注意,解壓後得到的是源碼,源碼需要編譯後才能安裝
tar -zxvf nginx-1.16.1.tar.gz
3.編譯之前,先創建nginx臨時目錄,如果不創建,在啓動nginx的過程中會報錯
mkdir /var/temp/nginx -p
- 配置改一下
./configure
–prefix=/usr/local/nginx
–pid-path=/var/run/nginx/nginx.pid
–lock-path=/var/lock/nginx.lock
–error-log-path=/var/log/nginx/error.log
–http-log-path=/var/log/nginx/access.log
–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
–add-module=/home/software/fdfs/fastdfs-nginx-module-1.22/src
5.make編譯
make
6.安裝
make install
7.進入sbin目錄啓動
nginx./nginx
5. 修改 mod_fastdfs.conf 配置文件
cd /etc/fdfs
# 修改mod_fastdfs的工作空間
base_path=/usr/local/fastdfs/tmp
# 修改tracker的地址和端口號,用於心跳
tracker_server=192.168.1.153:22122
# 修改組名 可以不修改
group_name=imooc
# 在url上拼接組名
url_have_group_name = true
# 文件存儲空間
store0_path=/usr/local/fastdfs/storage
6. 創建工作空間
mkdir /usr/local/fastdfs/tmp
7. 修改nginx.conf,添加如下虛擬主機
server {
listen 8888;
server_name localhost;
#如果自己修改組名了,這塊配自己修改的組名
location /group1/M00
{
ngx_fastdfs_module;
}
}