Centos7 搭建FastDFS文件管理系統及簡單的遷移方法

1、簡介
FastDFS 是一個開源的高性能分佈式文件系統(DFS)。 它的主要功能包括:文件存儲,文件同步和文件訪問,以及高容量和負載平衡。主要解決了海量數據存儲問題,特別適合以中小文件(建議範圍:4KB < file_size <500MB)爲載體的在線服務。
Centos7  搭建FastDFS文件管理系統及簡單的遷移方法

FastDFS 系統有三個角色:跟蹤服務器(Tracker Server)、存儲服務器(Storage Server)和客戶端(Client)。

  Tracker Server:跟蹤服務器,主要做調度工作,起到均衡的作用;負責管理所有的 storage server和 group,每個 storage 在啓動後會連接 Tracker,告知自己所屬 group 等信息,並保持週期性心跳。

  Storage Server:存儲服務器,主要提供容量和備份服務;以 group 爲單位,每個 group 內可以有多臺 storage server,數據互爲備份。

  Client:客戶端,上傳下載數據的服務器,也就是我們自己的項目所部署在的服務器。

Centos7  搭建FastDFS文件管理系統及簡單的遷移方法

2、FastDFS的存儲策略

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

在卷中增加服務器時,同步已有的文件由系統自動完成,同步完成後,系統自動將新增服務器切換到線上提供服務。當存儲空間不足或即將耗盡時,可以動態添加捲。只需要增加一臺或多臺服務器,並將它們配置爲一個新的卷,這樣就擴大了存儲系統的容量。
Centos7  搭建FastDFS文件管理系統及簡單的遷移方法
3、FastDFS的上傳過程
FastDFS向使用者提供基本文件訪問接口,比如upload、download、append、delete等,以客戶端庫的方式提供給用戶使用。

Storage Server會定期的向Tracker Server發送自己的存儲信息。當Tracker Server Cluster中的Tracker Server不止一個時,各個Tracker之間的關係是對等的,所以客戶端上傳時可以選擇任意一個Tracker。

#
Centos7  搭建FastDFS文件管理系統及簡單的遷移方法
#

當Tracker收到客戶端上傳文件的請求時,會爲該文件分配一個可以存儲文件的group,當選定了group後就要決定給客戶端分配group中的哪一個storage server。當分配好storage server後,客戶端向storage發送寫文件請求,storage將會爲文件分配一個數據存儲目錄。然後爲文件分配一個fileid,最後根據以上的信息生成文件名存儲文件。

4、FastDFS的文件同步

寫文件時,客戶端將文件寫至group內一個storage server即認爲寫文件成功,storage server寫完文件後,會由後臺線程將文件同步至同group內其他的storage server。

每個storage寫文件後,同時會寫一份binlog,binlog裏不包含文件數據,只包含文件名等元信息,這份binlog用於後臺同步,storage會記錄向group內其他storage同步的進度,以便重啓後能接上次的進度繼續同步;進度以時間戳的方式進行記錄,所以最好能保證集羣內所有server的時鐘保持同步。

storage的同步進度會作爲元數據的一部分彙報到tracker上,tracke在選擇讀storage的時候會以同步進度作爲參考。

5、FastDFS的文件下載
客戶端uploadfile成功後,會拿到一個storage生成的文件名,接下來客戶端根據這個文件名即可訪問到該文件。
#
Centos7  搭建FastDFS文件管理系統及簡單的遷移方法
#

1、下載安裝 libfastcommon

libfastcommon是從 FastDFS 和 FastDHT 中提取出來的公共 C 函數庫,基礎環境,安裝即可 。

① 下載libfastcommon

# wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz
② 解壓

# tar -zxvf V1.0.7.tar.gz
# cd libfastcommon-1.0.7

③ 編譯、安裝

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

④ libfastcommon.so 安裝到了/usr/lib64/libfastcommon.so,但是FastDFS主程序設置的lib目錄是/usr/local/lib,所以需要創建軟鏈接。

# 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 

2、下載安裝FastDFS
① 下載FastDFS

# wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz
② 解壓

# tar -zxvf V5.05.tar.gz
# cd fastdfs-5.05

③ 編譯、安裝

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

④ FastDFS 服務腳本設置的 bin 目錄是 /usr/local/bin, 但實際命令安裝在 /usr/bin/ 下。

# ln -s /usr/bin/fdfs_trackerd   /usr/local/bin
# ln -s /usr/bin/fdfs_storaged   /usr/local/bin
# ln -s /usr/bin/stop.sh         /usr/local/bin
# ln -s /usr/bin/restart.sh      /usr/local/bin

Centos7  搭建FastDFS文件管理系統及簡單的遷移方法

**3、配置FastDFS跟蹤器(Tracker)**

配置文件詳細說明參考:FastDFS 配置文件詳解

① 進入 /etc/fdfs,複製 FastDFS 跟蹤器樣例配置文件 tracker.conf.sample,並重命名爲 tracker.conf。

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

② 編輯tracker.conf ,標紅的需要修改下,其它的默認即可。

disabled=false     //配置文件是否不生效,false 爲生效

port=22122                        //提供服務的端口

base_path=/data/fastdfs/tracker                            //Tracker 數據和日誌目錄地址(根目錄必須存在,子目錄會自動創建)

http.server_port=80       //  HTTP 服務端口

③ 創建tracker基礎數據目錄,即base_path對應的目錄

# mkdir -p /data/fastdfs/tracker
④ 防火牆中打開跟蹤端口(默認的22122)

⑤ 啓動Tracker

初次成功啓動,會在 /ljzsg/fdfsdfs/tracker/ (配置的base_path)下創建 data、logs 兩個目錄。

可以用這種方式啓動
# /etc/init.d/fdfs_trackerd start

查看 FastDFS Tracker 是否已成功啓動 ,22122端口正在被監聽,則算是Tracker服務安裝成功。

[root@localhost fdfs]# netstat -unltp|grep fdfs
tcp        0      0 0.0.0.0:22122           0.0.0.0:*               LISTEN      19106/fdfs_trackerd 

Centos7  搭建FastDFS文件管理系統及簡單的遷移方法
4、配置 FastDFS 存儲 (Storage)
① 進入 /etc/fdfs 目錄,複製 FastDFS 存儲器樣例配置文件 storage.conf.sample,並重命名爲 storage.conf

# cd /etc/fdfs
# cp storage.conf.sample storage.conf
# vim storage.conf

② 編輯storage.conf

如下的需要修改,其它的默認即可。

disabled=false                            // 配置文件是否不生效,false 爲生效

group_name=group1                    //指定此 storage server 所在 組(卷)

port=23000                                   // storage server 服務端口

heart_beat_interval=30                   //心跳間隔時間,單位爲秒 (這裏是指主動向 tracker server 發送心跳)

base_path=/ljzsg/fastdfs/storage                     //Storage 數據和日誌目錄地址(根目錄必須存在,子目錄會自動生成)

store_path_count=1          //存放文件時 storage server 支持多個路徑。這裏配置存放文件的基路徑數目,通常只配一個目錄。逐一配置 store_path_count 個路徑,索引號基於 0。
store_path0=/data/fastdfs/file                            //如果不配置 store_path0,那它就和 base_path 對應的路徑一樣。

 FastDFS 存儲文件時,採用了兩級目錄。這裏配置存放文件的目錄個數。 
如果本參數只爲 N(如: 256),那麼 storage server 在初次運行時,會在 store_path 下自動創建 N * N 個存放文件的子目錄。
subdir_count_per_path=256

 tracker_server 的列表 ,會主動連接 tracker_server
 有多個 tracker server 時,每個 tracker server 寫一行
tracker_server=192.168.120.17:22122

 允許系統同步的時間段 (默認是全天) 。一般用於避免高峯同步產生一些問題而設定。
sync_start_time=00:00
sync_end_time=23:59
 訪問端口
http.server_port=80

③ 創建Storage基礎數據目錄,對應base_path目錄

# mkdir -p /data/fastdfs/storage

這是配置的store_path0路徑
# mkdir -p /data/fastdfs/file //這是配置的store_path0路徑

④ 啓動 Storage

啓動Storage前確保Tracker是啓動的。初次啓動成功,會在 /ljzsg/fastdfs/storage 目錄下創建 data、 logs 兩個目錄。

可以用這種方式啓動
# /etc/init.d/fdfs_storaged start

查看 Storage 是否成功啓動,23000 端口正在被監聽,就算 Storage 啓動成功。

[root@localhost fdfs]# netstat -unltp|grep fdfs
tcp        0      0 0.0.0.0:22122           0.0.0.0:*               LISTEN      19106/fdfs_trackerd 
tcp        0      0 0.0.0.0:23000           0.0.0.0:*               LISTEN      19140/fdfs_storaged 

Centos7  搭建FastDFS文件管理系統及簡單的遷移方法
5、文件上傳測試
① 修改 Tracker 服務器中的客戶端配置文件

# cd /etc/fdfs
# cp client.conf.sample client.conf
# vim client.conf

修改如下配置即可,其它默認。

base_path=/ljzsg/fastdfs/client                     // Client 的數據和日誌目錄

tracker_server=file.ljzsg.com:22122

② 上傳測試

在linux內部執行如下命令上傳 namei.jpeg 圖片

[root@localhost test]# fdfs_upload_file /etc/fdfs/client.conf tmp0.jpg 
group1/M00/00/00/wKh4EVxmvueAUMxqAATas2N53bU850.jpg

Centos7  搭建FastDFS文件管理系統及簡單的遷移方法

安裝Nginx
上面將文件上傳成功了,但我們無法下載。因此安裝Nginx作爲服務器以支持Http方式訪問文件。同時,後面安裝FastDFS的Nginx模塊也需要Nginx環境。

Nginx只需要安裝到StorageServer所在的服務器即可,用於訪問文件。我這裏由於是單機,TrackerServer和StorageServer在一臺服務器上。
Centos7  搭建FastDFS文件管理系統及簡單的遷移方法
1、安裝nginx所需環境  
① gcc 安裝

# yum install gcc-c++
② PCRE pcre-devel 安裝

# yum install -y pcre pcre-devel
③ zlib 安裝

# yum install -y zlib zlib-devel
④ OpenSSL 安裝

# yum install -y openssl openssl-devel
2、安裝Nginx
① 下載nginx

# wget -c https://nginx.org/download/nginx-1.12.1.tar.gz
② 解壓

# tar -zxvf nginx-1.12.1.tar.gz
# cd nginx-1.12.1

③ 使用默認配置

# ./configure

Centos7  搭建FastDFS文件管理系統及簡單的遷移方法
④ 編譯、安裝

# make
# make install

⑤ 啓動nginx

# cd /usr/local/nginx/sbin/
# ./nginx 

其它命令

# ./nginx -s stop
# ./nginx -s quit
# ./nginx -s reload

⑥ 設置開機啓動

# vim /etc/rc.local

添加一行:
/usr/local/nginx/sbin/nginx

# 設置執行權限
# chmod 755 rc.local

⑦ 查看nginx的版本及模塊

/usr/local/nginx/sbin/nginx -V

Centos7  搭建FastDFS文件管理系統及簡單的遷移方法

3、訪問文件

簡單的測試訪問文件

① 修改nginx.conf

# vim /usr/local/nginx/conf/nginx.conf

添加如下行,將 /group1/M00 映射到 /ljzsg/fastdfs/file/data
location /group1/M00 {
    alias /ljzsg/fastdfs/file/data;
}

# 重啓nginx
# /usr/local/nginx/sbin/nginx -s reload

Centos7  搭建FastDFS文件管理系統及簡單的遷移方法

在瀏覽器裏輸入:http://192.168.120.17/group1/M00/00/00/wKh4EVxmvueAUMxqAATas2N53bU850.jpg

Centos7  搭建FastDFS文件管理系統及簡單的遷移方法

fastdfs文件遷移Plan-A
一、先將心要遷移的fastdfs環境配置好,並啓動起來

我是要將文件從舊的fastdfs 172.26.6.38服務器遷移到新的fastdfs文件192.168.120.17服務器上來(需要在192.168.120.17安裝一套新的fastdfs):

1、先將所有storage進程都停止:

/etc/init.d/fdfs_storaged stop (停止storage)
2、修改storage.conf文件
192.168.120.17:

vi /etc/fdfs/storage.conf
將tracker_server的IP設置成舊服務器IP 172.26.6.38

tracker_server=172.26.6.38:22122(原來的文件環境)

3、啓動storage進程:
192.168.120.17:

/usr/local/fastdfs/bin/fdfs_storaged /etc/fdfs/storage.conf
此時storage服務器開始同步;

查看同步進程:

在舊tracker服務器執行:

fdfs_monitor /etc/fdfs/storage.conf
可以看到同步進度;

4、同步完成後,在新的fastdfs文件服務器192.168.120.17上停止storage進程:

/usr/local/fastdfs/bin/stop.sh /usr/local/fastdfs/bin/fdfs_storaged
5、修改storage.conf文件,將tracker修改成新的tracker IP
192.168.120.17:

vi /etc/fdfs/storage.conf

tracker_server=192.168.120.17:22122

Centos7  搭建FastDFS文件管理系統及簡單的遷移方法
6、修改.data_init_flag文件:

cd /usrdata/storage/data/

vi .data_init_flag
將sync_src_server配置項留空,其它配置項不變

sync_src_server=

7、啓動storage進程

/usr/local/fastdfs/bin/fdfs_storaged /etc/fdfs/storage.conf
查看storage進程狀態:

fdfs_monitor /etc/fdfs/storage.conf[root@localhost fdfs]# fdfs_monitor /etc/fdfs/storage.conf
[2019-02-15 19:23:39] DEBUG - base_path=/data/fastdfs/storage, connect_timeout=30, 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

server_count=1, server_index=0

tracker server is 192.168.120.17:22122

group count: 1

Group 1:
group name = group1
disk total space = 51175 MB
disk free space = 37759 MB
trunk free space = 0 MB
storage server count = 2
active server count = 1
storage server port = 23000
storage HTTP port = 80
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0

    Storage 1:
        id = 172.26.6.38
        ip_addr = 172.26.6.38  IP_CHANGED
        http domain = 
        version = 
        join time = 1970-01-01 08:00:00
        up time = 
        total storage = 0 MB
        free storage = 0 MB
        upload priority = 0
        store_path_count = 0
        subdir_count_per_path = 0
        .
        .
        .
        .

        last_heart_beat_time = 1970-01-01 08:00:00
        last_source_update = 1970-01-01 08:00:00
        last_sync_update = 1970-01-01 08:00:00
        last_synced_timestamp = 1970-01-01 08:00:00 (never synced)
    Storage 2:
        id = 192.168.120.17
        ip_addr = 192.168.120.17  ACTIVE
        http domain = 
        version = 5.05
        join time = 2019-01-30 21:37:00
        up time = 2019-02-14 22:55:37
        total storage = 51175 MB
        free storage = 37759 MB
        upload priority = 10
        store_path_count = 1
        subdir_count_per_path = 256

.
.
.

Centos7  搭建FastDFS文件管理系統及簡單的遷移方法
fastdfs文件遷移Plan-B

     仍然要將文件從舊的fastdfs  172.26.6.38服務器遷移到新的fastdfs文件192.168.120.17服務器上來(需要在192.168.120.17安裝一套新的fastdfs):
      當存在網絡不通的情況,通過tracker_server同步變得不太現實,這時候就直接拷貝數據文件即可
1.查詢數據文件目錄分別在兩臺機器上
[root@test003 ~]# grep base_path /etc/fdfs/client.conf
base_path=/data/fdfs/client
[root@test003 ~]# grep base_path /etc/fdfs/storage.conf
base_path=/data/fdfs/storage
# store_path#, based 0, if store_path0 not exists, it's value is base_path
[root@test003 ~]# grep base_path /etc/fdfs/tracker.conf
base_path=/data/fdfs/tracker
2.停止2臺機器的服務
/etc/init.d/fdfs_trackerd stop
/etc/init.d/fdfs_storaged stop

Centos7  搭建FastDFS文件管理系統及簡單的遷移方法
3.備份新fastdfs的數據文件,並且將需要的老數據放置相應目錄下並且啓動

Centos7  搭建FastDFS文件管理系統及簡單的遷移方法

/etc/init.d/fdfs_trackerd start
/etc/init.d/fdfs_storaged start 
上傳:/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/01.jpg
下載:/usr/bin/fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/wKh4EVxmvueAUMxqAATas2N53bU850.jpg
刪除:/usr/bin/fdfs_delete_file /etc/fdfs/client.conf group1/M00/00/00/wKh4EVxmvueAUMxqAATas2N53bU850.jpg

Centos7  搭建FastDFS文件管理系統及簡單的遷移方法

樓鎮圖
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章