1. 程式人生 > >fastDFS 作為微服務檔案管理中心舉例

fastDFS 作為微服務檔案管理中心舉例

最近接收了公司裡面一個雲平臺專案,發現檔案儲存管理那塊太亂,也沒有用成熟框架去搞,就下很心把問題整改了。

目前選擇成熟的檔案管理框架有兩個,一個是fastdfs,一個是hdfs,我對兩個框架的選擇是基於需不需對檔案資料進行2次挖掘考慮的,(hdfs可以做並行化計算,屬於hadoop生態圈的),基於我們目前專案考慮,還是選擇了fastdfs。

首先講解下fastdfs的優點:

FastDFS主要用於大中網站,為檔案上傳和下載提供線上服務。所以在負載均衡、動態擴容等方面都支援得比較好,FastDFS不會對檔案進行分快(切分)儲存。

fastdfs 介紹:

FastDFS服務端有兩個角色:跟蹤器(tracker)和儲存

節點(storage),跟蹤器主要做排程工作,在訪問上起負載均衡的作用。

儲存節點儲存檔案,完成檔案管理的所有功能:就是這樣的儲存、同步和提供存取介面,FastDFS同時對檔案的metadata進行管理。所謂檔案的meta data就是檔案的相關屬性,以鍵值對(key value)方式表示,如:width=1024,其中的key為width,value為1024。檔案metadata是檔案屬性列表,可以包含多個鍵值對。

跟蹤器和儲存節點都可以由一臺或多臺伺服器構成。跟蹤器和儲存節點中的伺服器均可以隨時增加或下線而不會影響線上服務。其中跟蹤器中的所有伺服器都是對等的,可以根據伺服器的壓力情況隨時增加或減少。

為了支援大容量,儲存節點(伺服器)採用了分卷(或分組)的組織方式。儲存系統由一個或多個卷組成,卷與卷之間的檔案是相互獨立的,所有卷的檔案容量累加就是整個儲存系統中的檔案容量。一個卷可以由一臺或多臺儲存伺服器組成,一個卷下的儲存伺服器中的檔案都是相同的,卷中的多臺儲存伺服器起到了冗餘備份和負載均衡的作用。

在卷中增加伺服器時,同步已有的檔案由系統自動完成,同步完成後,系統自動將新增伺服器切換到線上提供服務。

當儲存空間不足或即將耗盡時,可以動態添加捲。只需要增加一臺或多臺伺服器,並將它們配置為一個新的卷,這樣就擴大了儲存系統的容量。

FastDFS中的檔案標識分為兩個部分:卷名和檔名,二者缺一不可。

1.安裝包

軟體包 版本
FastDFS v5.05
libfastcommon v1.0.7
fastdfs-nginx-module v1.16
nginx v1.12.1

2.安裝libevent

 #yum -y remove libevent //先解除安裝原始的libevent

#tar xvf libevent-2.0.20-stable.tar.gz

#cd libevent-2.0.20-stable/

#./configure –prefix=/usr

#make

#make install

2.安裝libfastcommon

 #tar xvf  libfastcommonV1.0.7.tar.gz

#./make.sh 
#./make.sh install 
3.安裝FastDFS

 #tar xvf  FastDFS_v5.05.tar.gz

#./make.sh 
#./make.sh install 

從這裡可以看見有個拷貝過程將目錄下的配置拷貝到 /etc/fdfs

#cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

將裡面的資訊改下

disabled=false              # 啟用配置檔案
port=22122                  # tracker伺服器埠(預設22122)
base_path=/fastdfs/tracker  # 儲存日誌和資料的根目錄 

storage安裝過程一樣

只需要改下storage的配置就可以

disabled=false # 啟用配置檔案

port=23000 # storage服務埠

base_path=/fastdfs/storage # 資料和日誌檔案儲存根目錄

store_path0=/fastdfs/storage # 第一個儲存目錄

tracker_server=192.100.139.121:22122 # tracker伺服器IP和埠

啟動如果報告

file /usr/local/bin/restart.sh does not exist!

手動在tracker節點將可執行檔案拷貝到固定目錄就可以了(真的挺坑,網上說是沒裝libevent,千萬別信)

參考:http://www.linuxidc.com/Linux/2016-09/135537.htm

稍後補充怎麼使用

  //////////////////////////////////////////////////////////////////////////

安裝的全命令:



安裝libfastcommon
unzip libfastcommon-master.zip
yum -y install unzip zip
yum -y install gcc-c++
./make.sh
./make.sh install
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
安裝 FastDFS
tar -zxvf fastdfs-5.05.tar.gz 
./make.sh
./make.sh install
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
安裝 Tracker 節點
mkdir /opt/fastdfs_tracker //建立資料檔案路徑
接下來就要重新編輯上一步準備好的/etc/fdfs目錄下的tracker.conf配置檔案,開啟檔案後依次做以下修改:


disabled=false #啟用配置檔案(預設啟用)
port=22122 #設定tracker的埠號,通常採用22122這個預設埠
base_path=/opt/fastdfs_tracker #設定tracker的資料檔案和日誌目錄
http.server_port=6666 #設定http埠號,預設為8080
ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin
service fdfs_trackerd start // 啟動trackerd
netstat -unltp|grep fdfs // 檢測主節點啟動情況
安裝 Storage 節點
mkdir /opt/fastdfs_storage // 建立儲存節點日誌和資料路徑
mkdir /opt/fastdfs_storage_data // 建立資料儲存路徑
接下來修改/etc/fdfs目錄下的storage.conf配置檔案,開啟檔案後依次做以下修改:


disabled=false #啟用配置檔案(預設啟用)
group_name=group1 #組名,根據實際情況修改
port=23000 #設定storage的埠號,預設是23000,同一個組的storage埠號必須一致
base_path=/opt/fastdfs_storage #設定storage資料檔案和日誌目錄
store_path_count=1 #儲存路徑個數,需要和store_path個數匹配
store_path0=/opt/fastdfs_storage_data #實際檔案儲存路徑
tracker_server=192.168.111.11:22122 #tracker 伺服器的 IP地址和埠號,如果是單機搭建,IP不要寫127.0.0.1,否則啟動不成功(此處的ip是我的CentOS虛擬機器ip)
http.server_port=8888 #設定 http 埠號




配置完成後同樣要為Storage伺服器的啟動指令碼設定軟引用:


ln -s /usr/bin/fdfs_storaged /usr/local/bin
接下來就可以啟動Storage服務了:


service fdfs_storaged start
netstat -unltp|grep fdfs // 檢測儲存接點啟動情況
到此基本完成所有環境搭建
測試storage 節點是否已經連線到Tracker節點
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
測試檔案上傳
在Storage 節點上配置編輯/etc/fdfs目錄下的client.conf 檔案
base_path=/opt/fastdfs_tracker #tracker伺服器檔案路徑
tracker_server=192.168.111.11:22122 #tracker伺服器IP地址和埠號
http.tracker_server_port=6666 # tracker 伺服器的 http 埠號,必須和tracker的設定對應起來
/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /opt/HRB0712001.jpg 測試命令
安裝 fastdfs-nginx-module
安裝nginx 依賴
yum -y install pcre pcre-devel  
yum -y install zlib zlib-devel  
yum -y install openssl openssl-devel
storage伺服器上 安裝nginx
tar -zxvf nginx-1.8.1.tar.gz
unzip fastdfs-nginx-module-master.zip
cd nginx-1.8.1/
vi /fastdfs-nginx-module/src/config,修改如下配置


我這裡原來是
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
改成
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
這個是很重要的,不然在nginx編譯的時候會報錯的,我看網上很多在安裝nginx的fastdfs的外掛報錯,都是這個原因,而不是版本不匹配。
./configure --prefix=/usr/local/nginx --add-module=/home/tools/fastdfs-nginx-module-master/src
接下來要修改一下nginx的配置檔案,進入conf目錄並開啟nginx.conf檔案加入以下配置:


listen       9999;


location ~/group1/M00 {
      root /opt/fastdfs_storage_data/data;
      ngx_fastdfs_module;
}
cp -r /home/tools/FastDFS/conf/http.conf /etc/fdfs/
cp -r /home/tools/FastDFS/conf/mime.types /etc/fdfs/
cp -r /home/tools/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/




沒什麼問題,接下來就需要編輯剛拷貝的這個mod_fastdfs.conf檔案了,開啟mod_fastdfs.conf並按順序依次編譯以下內容:


base_path=/opt/fastdfs_storage #儲存日誌目錄
tracker_server=192.168.111.11:22122 #tracker伺服器的IP地址以及埠號
storage_server_port=23000 #storage伺服器的埠號
url_have_group_name = true #檔案 url 中是否有 group 名
store_path0=/opt/fastdfs_storage_data # 儲存路徑
group_count = 3 #設定組的個數,事實上這次只使用了group1
設定了group_count = 3,接下來就需要在檔案尾部追加這3個group setting:


[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data


[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data


[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
接下來還需要建立 M00 至儲存目錄的符號連線:


ln  -s  /opt/fastdfs_storage_data/data  /opt/fastdfs_storage_data/data/M00
最後啟動nginx:


/usr/local/nginx/sbin/nginx
/////////////////////////////////////////////////////////////////////////////////
軟體包版本:
FastDFS_v5.05.tar.gz
libfastcommonV1.0.7
fastdfs-nginx-module_v1.16.tar
nginx-1.8.1.tar

安裝libfastcommon
unzip libfastcommon-master.zip
yum -y install unzip zip
yum -y install gcc-c++
./make.sh
./make.sh install
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
安裝 FastDFS
tar -zxvf fastdfs-5.05.tar.gz 
./make.sh
./make.sh install
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
安裝 Tracker 節點
mkdir /opt/fastdfs_tracker //建立資料檔案路徑
接下來就要重新編輯上一步準備好的/etc/fdfs目錄下的tracker.conf配置檔案,開啟檔案後依次做以下修改:


disabled=false #啟用配置檔案(預設啟用)
port=22122 #設定tracker的埠號,通常採用22122這個預設埠
base_path=/opt/fastdfs_tracker #設定tracker的資料檔案和日誌目錄
http.server_port=6666 #設定http埠號,預設為8080
ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin
service fdfs_trackerd start // 啟動trackerd
netstat -unltp|grep fdfs // 檢測主節點啟動情況
安裝 Storage 節點
mkdir /opt/fastdfs_storage // 建立儲存節點日誌和資料路徑
mkdir /opt/fastdfs_storage_data // 建立資料儲存路徑
接下來修改/etc/fdfs目錄下的storage.conf配置檔案,開啟檔案後依次做以下修改:


disabled=false #啟用配置檔案(預設啟用)
group_name=group1 #組名,根據實際情況修改
port=23000 #設定storage的埠號,預設是23000,同一個組的storage埠號必須一致
base_path=/opt/fastdfs_storage #設定storage資料檔案和日誌目錄
store_path_count=1 #儲存路徑個數,需要和store_path個數匹配
store_path0=/opt/fastdfs_storage_data #實際檔案儲存路徑
tracker_server=192.168.111.11:22122 #tracker 伺服器的 IP地址和埠號,如果是單機搭建,IP不要寫127.0.0.1,否則啟動不成功(此處的ip是我的CentOS虛擬機器ip)
http.server_port=8888 #設定 http 埠號




配置完成後同樣要為Storage伺服器的啟動指令碼設定軟引用:


ln -s /usr/bin/fdfs_storaged /usr/local/bin
接下來就可以啟動Storage服務了:


service fdfs_storaged start
netstat -unltp|grep fdfs // 檢測儲存接點啟動情況
到此基本完成所有環境搭建
測試storage 節點是否已經連線到Tracker節點
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
測試檔案上傳
在Storage 節點上配置編輯/etc/fdfs目錄下的client.conf 檔案
base_path=/opt/fastdfs_tracker #tracker伺服器檔案路徑
tracker_server=192.168.111.11:22122 #tracker伺服器IP地址和埠號
http.tracker_server_port=6666 # tracker 伺服器的 http 埠號,必須和tracker的設定對應起來
/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /opt/HRB0712001.jpg 測試命令
安裝 fastdfs-nginx-module
安裝nginx 依賴
yum -y install pcre pcre-devel  
yum -y install zlib zlib-devel  
yum -y install openssl openssl-devel
storage伺服器上 安裝nginx
tar -zxvf nginx-1.8.1.tar.gz
unzip fastdfs-nginx-module-master.zip
cd nginx-1.8.1/
vi /fastdfs-nginx-module/src/config,修改如下配置


我這裡原來是
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
改成
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
這個是很重要的,不然在nginx編譯的時候會報錯的,我看網上很多在安裝nginx的fastdfs的外掛報錯,都是這個原因,而不是版本不匹配。
./configure --prefix=/usr/local/nginx --add-module=/home/tools/fastdfs-nginx-module-master/src
接下來要修改一下nginx的配置檔案,進入conf目錄並開啟nginx.conf檔案加入以下配置:


listen       9999;


location ~/group1/M00 {
      root /opt/fastdfs_storage_data/data;
      ngx_fastdfs_module;
}
cp -r /home/tools/FastDFS/conf/http.conf /etc/fdfs/
cp -r /home/tools/FastDFS/conf/mime.types /etc/fdfs/
cp -r /home/tools/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/




沒什麼問題,接下來就需要編輯剛拷貝的這個mod_fastdfs.conf檔案了,開啟mod_fastdfs.conf並按順序依次編譯以下內容:


base_path=/opt/fastdfs_storage #儲存日誌目錄
tracker_server=192.168.111.11:22122 #tracker伺服器的IP地址以及埠號
storage_server_port=23000 #storage伺服器的埠號
url_have_group_name = true #檔案 url 中是否有 group 名
store_path0=/opt/fastdfs_storage_data # 儲存路徑
group_count = 3 #設定組的個數,事實上這次只使用了group1
設定了group_count = 3,接下來就需要在檔案尾部追加這3個group setting:


[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data


[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data


[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/opt/fastdfs_storage_data
接下來還需要建立 M00 至儲存目錄的符號連線:


ln  -s  /opt/fastdfs_storage_data/data  /opt/fastdfs_storage_data/data/M00
最後啟動nginx:


/usr/local/nginx/sbin/nginx
/////////////////////////////////////////////////////////////////////////////////
軟體包版本:
FastDFS_v5.05.tar.gz
libfastcommonV1.0.7
fastdfs-nginx-module_v1.16.tar
nginx-1.8.1.tar

相關推薦

fastDFS 作為服務檔案管理中心舉例

最近接收了公司裡面一個雲平臺專案,發現檔案儲存管理那塊太亂,也沒有用成熟框架去搞,就下很心把問題整改了。 目前選擇成熟的檔案管理框架有兩個,一個是fastdfs,一個是hdfs,我對兩個框架的選擇是基於需不需對檔案資料進行2次挖掘考慮的,(hdfs可以做並行化計算,屬於ha

SpringCloud 使用consul作為服務註冊中心

eureka宣佈閉源,使用consul作為服務註冊中心。 1、parent pom檔案 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"

springCloud服務系列——配置中心第一篇——配置管理策略

目錄 一、簡介 二、策略 不同的專案 版本管理 一、簡介        從這篇開始總結配置中心,打算分以下內容總結完成 二、策略        springCloud給我們提供了一套管理配置的技術方案,我們需要有自己的管理思路,才能很好

Nacos作為服務註冊中心,愛不釋手的感覺

我覺得Nacos用起來還不錯 在使用SpringCloud做分散式微服務架構時,註冊中心是必不可少的一個元件。目前可以用的主要有:Eureka、Consul、Zookeeper。今天,我們就來說一下Alibaba的Nacos怎麼樣? 下載與安裝 下載地址https://github.com/alibaba/

.NET快速資訊化系統開發框架 V3.2-&gt;Web版本新增“檔案管理中心”集上傳、下載、檔案共享等一身,非常實用的功能

  檔案中心是3.2版本開始新增的一個非常實用功能,可以歸檔自己平時所需要的檔案,也可以把檔案分享給別人,更像一個知識中心。檔案中心主介面如下圖所示,左側“我的網盤”展示了使用者對檔案的分類,只能自己看到,“公共盤”中的檔案所有使用者都可以看到。選擇一個分類,右側列出了當前分類的所有檔案(第一列

服務 - Eureka註冊中心

我們來解決微服務的第一問題,服務的管理。 服務中心對外提供服務,需要對外暴露自己的地址。而consumer(呼叫者)需要記錄服務提供者的地址。將來地址出現變更,還需要及時更新。這在服務較少的時候並不覺得有什麼,但是在現在日益複雜的網際網路環境,一個專案肯定會拆分出十幾,甚至數十個微服務。此時如果還人為管理地

隨行付服務之配置中心ConfigKeeper

在微服務架構中,配置中心是必不可少的基礎服務。ConfigKeeper已開源,本文將深度分析配置中心的核心內容,錯過「Spring Cloud中國社群北京沙龍-2018.10.28 」的同學將從本篇文章中收穫現場的分享內容。 背景 微服務+容器架構後,為了方便動態更新應用配置,需要把配置檔案放到應用執行包

Spring Cloud與服務之註冊中心Eureka

文章目錄 Eureka Eureka Service Eureka Client 微服務註冊與發現 Eureka註冊中心原始碼 springcloud-eureka註冊中心 spring

FastDFS一步步搭建檔案管理系統

一、FastDFS介紹 1、簡介 FastDFS 是一個開源的高效能分散式檔案系統(DFS)。 它的主要功能包括:檔案儲存,檔案同步和檔案訪問,以及高容量和負載平衡。主要解決了海量資料儲存問題,特別適合以中小檔案(建議範圍:4KB < file_s

Google、IBM和Lyft開源其大型服務系統管理工具Istio

谷歌、IBM 與 Lyft 三方已經共同公佈了 Istio 專案的首次公開發行版。Istio 是一個開源專案,旨在提供一種統一化的微服務連線、安全保障、管理與監控方式。我們目前的發行版主要面向 Kubernetes 環境 ; 當然,在後續的升級當中,我們還將逐步實現對虛擬機器以及 Cloud Fou

springCloud服務系列——配置中心第五篇——自動重新整理

目錄 一、簡介 一、簡介             上一篇文章總結了手動重新整理,我們希望在配置檔案被提交到伺服器以後能自動觸發重新整理,讓所有的客戶端獲得最新的配置資訊。這裡提供一個使用github管理配置檔案,進行自動重新整理的解決方案。 二、github we

.NET快速資訊化系統開發框架 V3.2->Web版本新增“檔案管理中心”集上傳、下載、檔案共享等一身,非常實用的功能

  檔案中心是3.2版本開始新增的一個非常實用功能,可以歸檔自己平時所需要的檔案,也可以把檔案分享給別人,更像一個知識中心。檔案中心主介面如下圖所示,左側“我的網盤”展示了使用者對檔案的分類,只能自己看到,“公共盤”中的檔案所有使用者都可以看到。選擇一個分類,右側列出了當前分類的所有檔案(第一列會根據檔案的型

SpringCloud 服務統一註冊中心 Config Client( 二 )

一、環境配置 給專案新增依賴 <dependency> <groupId>org.springframework.cloud</groupId

springCloud服務系列——註冊中心——新增認證功能

簡介        註冊中心介面新增使用者名稱密碼才能訪問 服務端        引入spring-security <dependency> <groupId>org.springframework.boot</groupId&

系列6-springCloud服務-config配置中心

config配置中心分為服務端和客戶端,服務端根據檔案儲存位置分為三種設定方式:git\githupSVN本地儲存其中git\githup,SVN的設定方式基本一樣。此處僅記錄git的設定,githup與git的設定完全一樣。1.config Server基於git步驟1:本

FastDFS一步步搭建檔案管理系統

1、環境virtualBox+CentOs7,前提必須確保主機和虛擬機器網路可以互通,並且虛擬機器可以訪問網路 2、centos下建立目錄/softpackages 3、下載安裝 libfastcommon,libfastcommon是從 FastDFS 和 Fa

springcloud-服務日誌管理(logback-spring)

     原來的日誌在伺服器上採用的是cronolog元件按天分割的日誌,沒什麼大問題,因為本地也就控制檯看下;到服務端才需要正在的日誌檔案來核查問題。但是介於spring本來自帶不用,用第三方的外掛太麻煩(測試嫌麻煩)。所以優化原始碼採用logback-spring.xml

服務】之二:從零開始,輕鬆搞定SpringCloud服務系列--註冊中心(一)

微服務體系,有效解決專案龐大、互相依賴的問題。目前SpringCloud體系有強大的一整套針對微服務的解決方案。本文中,重點對微服務體系中的服務發現註冊中心進行詳細說明。本篇中的註冊中心,採用Netflix 公司的Eureka。 註冊中心簡介 Netflix Eureka:雲端負載均衡,一個基於 RES

NET(C#)接入Dubbo服務,Zookeeper作為Dubbo服務的註冊中心,實現thrift協議訪問介面(1)

專案要接入thrift,面對完全陌生的東西,學習的過程記錄。 開發環境: 系統:Windows 工具:VS2012 最新版thrift 下載:http://thrift.apache.org/download 點選下載thrift-0.9.3.exe,放在某個目錄下。我

springCloud服務系列——配置中心第四篇——手動重新整理

目錄 一、簡介     端點配置     安全配置     重新整理     端點配置     安全配置              重新整理 一、簡介        配置檔案如果改變了,已經啟動的服務如何獲得最新的配置,當然可以重新啟動服務,但是