1. 程式人生 > >fastDFS架構解析和安裝測試教程

fastDFS架構解析和安裝測試教程

fastDFS虛擬機器配置教程

fastDFS工作原理和過程

  1. fastDFS架構
    FastDFS服務端有三個角色:跟蹤伺服器(tracker server)、儲存伺服器(storage server)和客戶端(client)。

    • tracker server:跟蹤伺服器,主要做排程工作,起負載均衡的作用。在記憶體中記錄叢集中所有儲存組和儲存伺服器的狀態資訊,是客戶端和資料伺服器互動的樞紐。相比GFS中的master更為精簡,不記錄檔案索引資訊,佔用的記憶體量很少。
    • storage server:儲存伺服器(又稱:儲存節點或資料伺服器),檔案和檔案屬性(meta data)都儲存到儲存伺服器上。Storage server直接利用OS的檔案系統呼叫管理檔案。
    • client:客戶端,作為業務請求的發起方,通過專有介面,使用TCP/IP協議與跟蹤器伺服器或儲存節點進行資料互動。
  2. 檔案上傳機制

    1)Client通過Tracker server將檔案上傳到Storage server。

    2)Tracker server向Client返回一臺可用的Storage server的IP地址和埠號。

    3)Client直接通過Tracker server返回的IP地址和埠與其中一臺Storage server建立連線並進行檔案上傳。

    4)上傳完成,Storage server返回Client一個檔案ID,檔案上傳結束。

  3. 檔案下載機制

    1)Client通過Tracker server下載指定Storage組中某個Storage server上的某個檔案(檔名包括Storage組名稱)。

    2)Tracker server向Client返回一臺可用的Storage server的IP地址和埠號。

    3)Client直接通過Tracker server返回的IP地址和埠與其中一臺Storage server建立連線並進行檔案下載。

安裝虛擬機器

  1. 安裝自己熟悉的虛擬機器軟體,建立一個Linux虛擬機器,我這裡使用的虛擬機器軟體時parallels Desktop,Linux發行版是Ubuntu。
  2. 通過虛擬機器軟體的額拷貝或者克隆功能複製虛擬機器。注意要保證每個虛擬機器有不同的ip地址,使用Parallels Desktop的童鞋可以在在建立的虛擬機器右鍵(如圖)!克隆的圖片
    來克隆虛擬機器。如果這幾載Finder中複製檔案會造成這幾個虛擬機器有同樣的IP地址。

安裝fastDFS

  1. 通過終端或者開啟虛擬機器內部的終端。
  2. 下載安裝libfastcommon

    git clone http://github.com/happyfish100/libfastcommon.git #獲取libfastcommon
    cd ./libfastcommon/ #轉到clone下來的目錄
    ./make.sh #編譯
    sudo ./make.sh install #安裝libfastcommon
    
  3. 下載安裝fastdfs

    cd ../FastDFS/ # 到fastDFS檔案目錄下
    ./make.sh #執行編譯指令碼
    sudo ./make.sh install #安裝fastDFS

    確認make沒有錯誤後,執行安裝,預設會安裝到/usr/bin中,並在/etc/fdfs中新增三個配置檔案。

  4. 建立資料夾

    sudo mkdir -p /home/yuqing/fastdfs #建立目錄(在client上,storage上,在tracker上)
  5. 修改配置檔案

    sudo mv /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf #將例子配置檔案改為配置檔案(在storage節點操作)
    sudo vim /etc/fdfs/storage.conf #修改配置檔案是指tracker_server為指定ip(在storage伺服器操作)
    sudo mv /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf#(在tracker伺服器操作)
    sudo mv /etc/fdfs/client.conf.sample /etc/fdfs/client.conf#(在client機器上操作)
    sudo vim /etc/fdfs/client.conf #(修改tracker_server的地址,在client機器上操作)
  6. 啟動tracker和storage

    sudo /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf #啟動tracker
    sudo /usr/bin/fdfs_storaged /etc/fdfs/storage.conf #啟動storage
  7. 測試上傳功能

    /usr/bin/fdfs_test /etc/fdfs/client.conf upload /home/jacob/FastDFS/testfile.txt #用client測試fastDFS

    如果上傳成功應該可以看到以下輸出

    This is FastDFS client test program v5.08
    
    Copyright (C) 2008, Happy Fish / YuQing
    
    FastDFS may be copied only under the terms of the GNU General
    Public License V3, which may be found in the FastDFS source kit.
    Please visit the FastDFS Home Page http://www.csource.org/ 
    for more detail.
    
    [2016-06-03 21:48:10] DEBUG - base_path=/home/yuqing/fastdfs, 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
    
    tracker_query_storage_store_list_without_group: 
        server 1. group_name=, ip_addr=10.211.55.17, port=23000
    
    group_name=group1, ip_addr=10.211.55.17, port=23000
    storage_upload_by_filename
    group_name=group1, remote_filename=M00/00/00/CtM3EVdRipqAXBnpAAAAHP1z660878.txt
    source ip address: 10.211.55.17
    file timestamp=2016-06-03 21:48:10
    file size=28
    file crc32=4252232621
    example file url: http://10.211.55.17/group1/M00/00/00/CtM3EVdRipqAXBnpAAAAHP1z660878.txt
    storage_upload_slave_by_filename
    group_name=group1, remote_filename=M00/00/00/CtM3EVdRipqAXBnpAAAAHP1z660878_big.txt
    source ip address: 10.211.55.17
    file timestamp=2016-06-03 21:48:10
    file size=28
    file crc32=4252232621
    example file url: http://10.211.55.17/group1/M00/00/00/CtM3EVdRipqAXBnpAAAAHP1z660878_big.txt
    
  8. 測試下載功能
    這裡需要用到剛才上傳時候用到的url,注意只需要group開始的部分
    /usr/bin/fdfs_download_file /etc/fdfs/client.conf group1/M00/00/00/CtM3EVdRipqAXBnpAAAAHP1z660878_big.txt testfileDownload.txt

    如果下載成功,就可以看到當前工作目錄下面有一個testfileDownload.txt檔案了!