FastDFS分散ファイルシステムのインストールと使用

1.はじめに

FastDFS(最速の分散ファイルシステム)は、淘宝網によって開発された軽量の分散ファイルシステムであり、C言語で開発されており、現在、C、java、PHP、およびその他の言語のAPIのみを提供しています。

主にファイルの管理に使用され、大容量ストレージや負荷分散の問題を解決するファイル同期やファイルアクセス(アップロード・ダウンロード)などの機能があります。

同様の分散ファイルシステムには、GoogleのGFS、HDFS(Hadoop)、TFS(Taobao)などがあります。

第二に、全体的な構造

FastDFSサーバーには、トラッカー(トラッカー)とストレージノード(ストレージ)の2つの役割があります。

トラッカーは主にスケジューリング(クラスター管理に使用されます
トラッカーはレジストリに似ており、サーバーのストレージスペース、ステータス、負荷などを記録します。画像のアップロードとアクセスがトラッカーによって決定される場合、トラッカーはクラスタリングを実装することもできます。各トラッカーノードのステータスは同じです。
ストレージ:ストレージ、同期、およびアクセスインターフェイス
ストレージは複数のグループに分割され、各グループ間で保存されるファイルは異なります。各グループには複数のメンバーが存在できます。グループメンバーに格納される内容は同じです。グループメンバーのステータスは同じであり、マスターとスレーブの概念はありません。

全体:FastDFSには2つの特徴があります。

  1. 高い信頼性:単一障害点なし
  2. 高スループット:十分なグループがある限り、データトラフィックは十分に分散されます。

3、ファイルのアップロード

写真を共有する技術

クライアントがファイルをアップロードした後、ストレージサーバーはファイルIDをクライアントに返します。このファイルIDは、将来、ファイルのインデックス情報にアクセスするために使用されます。ファイルインデックス情報には、グループ名、仮想ディスクパス、データ2レベルディレクトリ、およびファイル名が含まれます。

  写真を共有する技術

  • グループ名:ファイルがアップロードされたストレージグループの名前。ファイルが正常にアップロードされた後、ストレージサーバーはファイルを返し、クライアントはそれを自分で保存する必要があります。
  • 仮想ディスクパス:ディスクオプションstore_path *に対応する、ストレージによって構成された仮想パス。store_path0が構成されている場合はM00、store_path1が構成されている場合はM01というようになります。
  • データ2レベルディレクトリ:各仮想ディスクパスの下にストレージサーバーによって作成された2レベルディレクトリは、データファイルを格納するために使用されます。
  • ファイル名:ファイルがアップロードされたときとは異なります。特定の情報に基づいてストレージサーバーによって生成されます。ファイル名には、ソースストレージサーバーのIPアドレス、ファイル作成タイムスタンプ、ファイルサイズ、乱数、およびファイル拡張子が含まれます。

4、ファイルのダウンロード

写真を共有する技術

 

5、ビルドサービス

fastDFSはnginxおよびnginx-fastdfsプラグインで使用する必要があります

(1)fastDFSファイルサービスを構築する

1.インストールに依存する環境

yum -y install gcc-c ++ libevent

2.libfastcommonをインストールします

ダウンロードリンク:https//github.com/happyfish100/libfastcommon

解凍後、実行するディレクトリに入ります

1、。/ make.sh

2、。/ make.shインストール

libfastcommon.soが/ usr / libの下に存在するかどうかを確認します。存在しない場合は、lib64からコピーする必要があります。

cp /usr/lib64/libfastcommon.so / usr / lib /

3. fastDFS(トラッカーサービス)をインストールします

fastDFSダウンロードアドレス:https//github.com/happyfish100/fastdfs

解凍後、実行するディレクトリに入ります

1、。/ make.sh

2、。/ make.shインストール

3. cp / conf / * / etc / fdfs /構成ファイルをコピーします

4. vim / etc / fdfs / tracker.conf   が構成ファイルを変更します

主にbase_pathのパスを変更します(ストアデータとログファイルの保存に使用されます

フォルダが存在することを確認するように注意してください

デフォルトのポートは22122です

5. /usr/bin/fdfs_trackerd/etc/fdfs/tracker.confサービスを開始します

/usr/bin/fdfs_trackerd/etc/fdfs/tracker.conf再起動サービスを再起動します

必要に応じて、スタートアップとファイアウォールのポート開口部を構成します

 

4. fastDFS(ストレージサービス)をインストールします

上記がインストールされているので、直接使用できます

1、vim / etc / fdfs / tracker.conf   は設定ファイルを変更します

主にbase_path、store_path0、tracker_serverの3つの場所を変更します

フォルダが存在することを確認するように注意してください

デフォルトのポートは23000です

5. /usr/bin/fdfs_storaged/etc/fdfs/storage.confがサービスを開始します

必要に応じて、スタートアップとファイアウォールのポート開口部を構成します

 

添付ファイル:fastDFSコマンド:

5.テスト

1.libfdfsclient.soが/ usr / lib /に存在するかどうかを確認し、存在しない場合はコピーします。

cp fastdfs-6.07 / client / libfdfsclient.so / usr / lib /

2.アップロードテストを実行します:/ usr / bin / fdfs_test /etc/fdfs/client.conf upload /home/sumengnan/woniu.jpeg     

結果は次のとおりです。

[root@210server sumengnan]# /usr/bin/fdfs_test /etc/fdfs/client.conf upload /home/sumengnan/woniu.jpeg 
This is FastDFS client test program v6.07

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.fastken.com/ 
for more detail.

[2021-03-21 12:18:43] DEBUG - base_path=/mnt/fastdfsStore, connect_timeout=5, 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=192.168.1.210, port=23000

group_name=group1, ip_addr=192.168.1.210, port=23000
storage_upload_by_filename
group_name=group1, remote_filename=M00/00/00/wKgB0mBWySOAXnWGAAEVpA8CyVA26.jpeg
source ip address: 192.168.1.210
file timestamp=2021-03-21 12:18:43
file size=71076
file crc32=251840848
example file url: http://192.168.1.210/group1/M00/00/00/wKgB0mBWySOAXnWGAAEVpA8CyVA26.jpeg
storage_upload_slave_by_filename
group_name=group1, remote_filename=M00/00/00/wKgB0mBWySOAXnWGAAEVpA8CyVA26_big.jpeg
source ip address: 192.168.1.210
file timestamp=2021-03-21 12:18:43
file size=71076
file crc32=251840848
example file url: http://192.168.1.210/group1/M00/00/00/wKgB0mBWySOAXnWGAAEVpA8CyVA26_big.jpeg
[root@210server sumengnan]# 

最後のステップは、ファイルのURLを返します。http//192.168.1.210/group1/M00/00/00/wKgB0mBWySOAXnWGAAEVpA8CyVA26_big.jpeg  は、アップロードが成功したことを示し、ファイルはサーバーフォルダーに直接あります。

このhttpリクエストのため、fastDFSはhttpリクエストを処理できず、nginxで使用する必要があるため、現在はアクセスできません。

 

(2)nginxプラグインをインストールします

Nginxプラグインのダウンロード:https//github.com/happyfish100/fastdfs-nginx-module

1.プラグインを解凍し、fastdfs-nginx-module-1.22 / src / configファイル内のすべてのローカルを削除します

2. cp fastdfs-nginx-module-1.22 / src / mod_fastdfs.conf / etc / fdfs /構成ファイルをコピーします

3. Vim  / etc / fdfs / mod_fastdfs.confが構成ファイルを変更します

主にtracker_server、url_have_group_name、store_path0情報を変更します

 

(3)nginxサービスをインストールします

参照:https//blog.csdn.net/sumengnan/article/details/108747737

1.違いはステップ3にあります(nginxをコンパイルしてインストールします)

使用されるのは./configure--prefix = / usr / local / nginx --add-module = / home / sumengnan / fastdfs-nginx-module-1.22 / src(プラグインの場所を指定)です。

以下のようにエラーが報告された場合

あなたが必要です

a、vim objs / Makefile remove -Werror

b。vimsrc/ os / unix / ngx_user.cこの行をコメントアウトし、make&makeinstallを再実行します

 

2.インストールが完了したら、構成ファイルvim /usr/local/nginx/conf/nginx.confを変更し、以下を変更します。

    server {
        listen       80;
        server_name  localhost;

        location /group1 {
            ngx_fastdfs_module;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

3、启PIN:/ usr / local / nginx / sbin / nginx

 

(4)テスト

ブラウザは以前に返されたファイルhttpリクエストURLにアクセスし、画像は正常に返されます。

 

6、スプリングブーツ統合使用

(1)依存関係を導入する

        <dependency>
            <groupId>com.github.tobato</groupId>
            <artifactId>fastdfs-client</artifactId>
            <version>1.26.1-RELEASE</version>
        </dependency>

(2)構成ファイルの構成


#读取超时时间
fdfs.so-timeout=1500
#连接超时时间
fdfs.connect-timeout=600
fdfs.pool.jmx-enabled=false
#生成缩略图的大小
fdfs.thumb-image.width=100
fdfs.thumb-image.height=100
#tracker跟踪服务器的地址(关键)
fdfs.tracker-list[0]=192.168.1.210:22122

(3)スタートアップ構成

@SpringBootApplication
@Import(FdfsClientConfig.class)
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

(4)サンプルコードをアップロードする

@RestController
public class TestController {

    @Autowired
    private FastFileStorageClient fastFileStorageClient;


    @RequestMapping("/upload")
    public void upload() throws FileNotFoundException {
        File file = new File("/Users/sumengnan/woniu.jpeg");
        String fileName=file.getName();//获取文件名
        String extName=fileName.substring(fileName.lastIndexOf(".")-1);//获取文件扩展名
        FileInputStream fileInputStream = new FileInputStream(file);//获取文件输入流
        //上传文件
        StorePath storePath = fastFileStorageClient.uploadFile(fileInputStream, file.length(), extName, null);
        //返回上传结果
        System.out.println(storePath.getGroup());
        System.out.println(storePath.getPath());
        System.out.println(storePath.getFullPath());
    }

}

fastFileStorageClientインターフェイスのメソッドは次のとおりです。

(5)テスト

正常にアップロードされました:

 

 

おすすめ

転載: blog.csdn.net/sumengnan/article/details/115045526