Githubの紹介: [https://github.com/happyfish100/fastdfs](https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2Fhappyfish100%2Ffastdfs)
Githubドキュメント: [https://github.com/happyfish100/fastdfs/wiki](https://links.jianshu.com/go?to=https%3A%2F%2Fgithub.com%2Fhappyfish100%2Ffastdfs%2Fwiki)
FastDFSは、c言語で記述されたオープンソースの分散ファイルシステムです。 FastDFSは、冗長バックアップ、[ロードバランシング](https://cloud.tencent.com/product/clb?from=10680)、線形拡張などのメカニズムを十分に考慮し、高可用性や高性能などの指標に注意を払いながら、インターネット向けに調整されています。FastDFSを使用すると、高性能のファイルサーバークラスターを簡単に構築できます。ファイルのアップロードおよびダウンロードサービスを提供します。
FastDFSアーキテクチャには、トラッカーサーバーとストレージサーバーが含まれます。クライアントはトラッカーサーバーにファイルのアップロードとダウンロードを要求し、ストレージサーバーはトラッカーサーバーのスケジューリングを通じてファイルのアップロードとダウンロードを完了します。
トラッカーサーバーは、負荷分散とスケジューリングに使用されます。トラッカーサーバーは、ファイルをアップロードする際のいくつかの戦略に従って、ファイルアップロードサービスを提供するストレージサーバーを見つけることができます。トラッカーは、追跡サーバーまたはディスパッチサーバーと呼ばれます。
ストレージサーバーの機能は[ファイルストレージ](https://cloud.tencent.com/product/cfs?from=10680)です。クライアントによってアップロードされたファイルは最終的にストレージサーバーに保存されます。ストレージサーバーは独自のファイルシステムを実装しませんが、オペレーティングシステムのファイルシステムを使用してファイルを管理します。ストレージをストレージサーバーと呼ぶことができます。
サーバー側の2つの役割:
クライアントがファイルをアップロードした後、ストレージサーバーはファイルIDをクライアントに返します。このファイルIDは、将来、ファイルのインデックス情報にアクセスするために使用されます。ファイルインデックス情報には、グループ名、仮想ディスクパス、データ2レベルディレクトリ、およびファイル名が含まれます。
group1/M00/00/00/wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz
group1
グループ名:**ファイルがアップロードされたストレージグループの名前。ファイルが正常にアップロードされた後、ストレージサーバーはそれを返し、クライアントはそれを自分で保存する必要があります。 / M00
: store_path0はM00、store_path1が構成されている場合はM01、というように続きます。 / 00 / 00
:**データ2レベルディレクトリ:データファイルを格納するために、各仮想ディスクパスの下にストレージサーバーによって作成された2レベルディレクトリ。 / wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz
ファイル名:**ファイルがアップロードされたときとは異なります。これは、特定の情報に基づいてストレージサーバーによって生成され、ファイル名には、ソースストレージサーバーのIPアドレス、ファイル作成タイムスタンプ、ファイルサイズ、ランダム番号、ファイル拡張子、およびその他の情報が含まれます。名前 | 説明 |
---|---|
centos | 7.x |
libfatscommon | FastDFSで区切られたいくつかの一般的な関数パッケージ |
FastDFS | FastDFS本体 |
fastdfs-nginx-module | FastDFSとnginxの関連モジュール |
nginx | nginx1.15.4 |
yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y
説明 | 場所 |
---|---|
すべてのインストールパッケージ | / usr / local / src |
データの保存場所 | / home / dfs / |
# ここでは、便宜上、すべてのログをdfsに入れています |
# データストレージディレクトリを作成します
[ root@server01 ~]# mkdir -p /home/dfs
# インストールディレクトリに切り替えて、インストールパッケージをダウンロードする準備をします
[ root@server01 ~]# cd /usr/local/src
次の手順では、インストールをインストールディレクトリ cd / usr / local / src
に切り替えて開始します。
git clone https://github.com/happyfish100/libfastcommon.git --depth 1
cd libfastcommon/./make.sh &&./make.sh install #コンパイルしてインストール
cd ../ #前のディレクトリに戻る
git clone https://github.com/happyfish100/fastdfs.git --depth 1
cd fastdfs/./make.sh &&./make.sh install #コンパイルしてインストール
# 構成ファイルの準備
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf #テスト用のクライアントファイル
cp /usr/local/src/fastdfs/conf/http.conf /etc/fdfs/ #nginxアクセスの場合
cp /usr/local/src/fastdfs/conf/mime.types /etc/fdfs/ #nginxアクセスの場合
cd ../ #前のディレクトリに戻る
git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1
cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
wget http://nginx.org/download/nginx-1.15.4.tar.gz #nginx圧縮パッケージをダウンロードする
tar -zxvf nginx-1.15.4.tar.gz #解凍する
cd nginx-1.15.4/
# fastdfsを追加します-nginx-モジュールモジュール
. /configure --add-module=/usr/local/src/fastdfs-nginx-module/src/
make && make install #コンパイルしてインストール
上記のコマンドに従って、対応するコンポーネントをインストールしてから、スタンドアロン展開の構成を以下で実行します。
service firewalld stop
# サーバーIPは192です.168.43.128
vim /etc/fdfs/tracker.conf
# 変更が必要な内容は以下のとおりです
port=22122 #トラッカーサーバーポート(デフォルトは22122,通常は変更されません)
base_path=/home/dfs #ログとデータを保存するためのルートディレクトリ
/etc/init.d/fdfs_trackerd start #トラッカーサービスを開始する
/etc/init.d/fdfs_trackerd restart #トラッカーサービスを再起動します
/etc/init.d/fdfs_trackerd stop #トラッカーサービスを停止する
chkconfig fdfs_trackerd on #セルフスタートトラッカーサービス
[ root@server01 src]# /etc/init.d/fdfs_trackerd start
Reloading systemd:[ OK ]
Starting fdfs_trackerd(via systemctl):[ OK ][root@server01 src]#
vim /etc/fdfs/storage.conf
# 変更が必要な内容は以下のとおりです
port=23000 #ストレージサービスポート(デフォルトは23000,通常は変更されません)
base_path=/home/dfs #データおよびログファイルのストレージルートディレクトリ
store_path0=/home/dfs #最初のストレージディレクトリ
tracker_server=192.168.43.128:22122 #トラッカーサーバーのIPとポート
http.server_port=8888 #httpアクセスファイルポート(デフォルト8888,状況に応じて変更する,nginxと一貫性を保つ)
/etc/init.d/fdfs_storaged start #ストレージサービスを開始します
/etc/init.d/fdfs_storaged restart #ストレージサービスを再起動します
/etc/init.d/fdfs_storaged stop #ストレージサービスを停止します
chkconfig fdfs_storaged on #セルフスタートストレージサービス
[ root@server01 src]# /etc/init.d/fdfs_storaged start
Starting fdfs_storaged(via systemctl):[ OK ][root@server01 src]#
vim /etc/fdfs/client.conf
# 変更が必要な内容は以下のとおりです
base_path=/home/dfs
tracker_server=192.168.43.128:22122 #トラッカーサーバーのIPとポート
# 保存後にテストする,戻りIDは、次のように成功を示します。group1/M00/00/00/xx.tar.gz
fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz
実行は次のとおりです。
vim /etc/fdfs/mod_fastdfs.conf
# 変更が必要な内容は以下のとおりです
tracker_server=192.168.43.128:22122 #トラッカーサーバーのIPとポート
url_have_group_name=true
store_path0=/home/dfs
# nginxを構成する.config
vim /usr/local/nginx/conf/nginx.conf
# 次の構成を追加します
server {
listen 8888; ##ポートはストレージです.confのhttp.server_同じポート
server_name localhost;
location ~/group[0-9]/{
ngx_fastdfs_module;}
error_page 500502503504/50x.html;
location =/50x.html {
root html;}}
# nginxサービスを開始します
/usr/local/nginx/sbin/nginx #nginxを開始します
/usr/local/nginx/sbin/nginx -s reload #nginxを再起動します
# テストダウンロード
wget http://192.168.43.128:8888/group1/M00/00/00/wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz
[ root@server01 src]# /usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=4818[root@server01 src]# wget http://192.168.43.128:8888/group1/M00/00/00/wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz
- - 2019- 08- 1214:03:36- - http://192.168.43.128:8888/group1/M00/00/00/wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz
Connecting to 192.168.43.128:8888... connected.
HTTP request sent, awaiting response...200 OK
Length:1024694(1001K)[application/octet-stream]
Saving to: ‘wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz’
100 %[=================================================================================================================================>]1,024,694--.-K/s in0.02s
2019- 08- 1214:03:36(40.9 MB/s)- ‘wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz’ saved [1024694/1024694][root@server01 src]#
[ root@server01 src]# ls
fastdfs fastdfs-nginx-module libfastcommon nginx-1.15.4 nginx-1.15.4.tar.gz wKgrgF1Rp8uAeU2IAA-itrfn0m4.tar.gz
[ root@server01 src]#
ダウンロードが成功し、FastDFSの単一マシン展開が完了したことがわかります。
TackerサービスとStorageサービスをそれぞれ両方のサーバーにインストールし、最初のサーバーにNginxをインストールして、ダウンロードサービスのリバースプロキシを実行します。
前の手順に従って2つのサーバーをインストールします。インストールが完了したら、分散構成に進みます。
次の構成に従って、各サーバーのトラッカー構成を構成します。
# サーバーIPは192です.168.196.132,192.168.196.133
vim /etc/fdfs/tracker.conf
# 変更が必要な内容は以下のとおりです
port=22122 #トラッカーサーバーポート(デフォルトは22122,通常は変更されません)
base_path=/home/dfs #ログとデータを保存するためのルートディレクトリ
# サービス開始
/etc/init.d/fdfs_trackerd start
以下の構成に従って、各サーバーのストレージ構成を構成します。
vim /etc/fdfs/storage.conf
# 変更が必要な内容は以下のとおりです
port=23000 #ストレージサービスポート(デフォルトは23000,通常は変更されません)
base_path=/home/dfs #データおよびログファイルのストレージルートディレクトリ
store_path0=/home/dfs #最初のストレージディレクトリ
tracker_server=192.168.196.132:22122 #サーバー1
tracker_server=192.168.196.133:22122 #サーバー2
http.server_port=8888 #httpアクセスファイルポート(デフォルト8888,状況に応じて変更する,nginxと一貫性を保つ)
# サービス開始
/etc/init.d/fdfs_storaged start
両方のサーバーは、テスト用のクライアントで構成されています。
vim /etc/fdfs/client.conf
# 変更が必要な内容は以下のとおりです
base_path=/home/dfs
tracker_server=192.168.196.132:22122 #サーバー1
tracker_server=192.168.196.133:22122 #サーバー2
# 保存後にテストする,成功を示すIDを返す
fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz
アップロードされたファイルを実行した結果:
[ root@centos7-server02 nginx-1.15.4]# fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/nginx-1.15.4.tar.gz
group1/M00/00/00/wKjEhF1SQHKAEN6aAA-itrfn0m4.tar.gz
[ root@centos7-server02 nginx-1.15.4]#
[ root@server03 src]# fdfs_upload_file /etc/fdfs/client.conf 1.txt
group1/M00/00/00/wKjEhV1SQLCAbAWtAAAABFqC_Qg891.txt
[ root@server03 src]#
どちらか一方にnginxを設定します。負荷を分散する場合は、両方にnginxを設定してから、F5またはhaproxyの負荷分散を構成できます。
vim /etc/fdfs/mod_fastdfs.conf
# 変更が必要な内容は以下のとおりです
tracker_server=192.168.196.132:22122 #サーバー1
tracker_server=192.168.196.133:22122 #サーバー2
url_have_group_name=true
store_path0=/home/dfs
# nginxを構成する.config
vim /usr/local/nginx/conf/nginx.conf
# 上記の構成を追加します
server {
listen 8888; ##ポートはストレージです.confのhttp.server_同じポート
server_name localhost;
location ~/group[0-9]/{
ngx_fastdfs_module;}
error_page 500502503504/50x.html;
location =/50x.html {
root html;}}
# nginxサービスを開始します
/usr/local/nginx/sbin/nginx #nginxを開始します
/usr/local/nginx/sbin/nginx -s reload #nginxを再起動します
wget http://192.168.196.132:8888/group1/M00/00/00/wKjEhF1SQHKAEN6aAA-itrfn0m4.tar.gz
wget http://192.168.196.132:8888/group1/M00/00/00/wKjEhV1SQLCAbAWtAAAABFqC_Qg891.txt
これらは、現在テストでアップロードされている2つのファイルです。nginxポート8888 +ファイルIDを介してダウンロードされます。ダウンロードが成功すると、インストールは完了です。
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
# 2つのストレージ1があるサーバーの数が表示されます-ストレージ2の詳細
tracker_server #いくつのサーバーがいくつかを書き込みます
group_name #住所名
bind_addr #サーバーIPバインディング
store_path_count #store_path(デジタル)何人が数を書く
store_path(デジタル) #複数のストレージアドレスを設定し、0から始まるいくつかを書き込みます
rootユーザーでない場合は、cdコマンド以外のすべてにsudoを追加する必要があります
ルートユーザーでない場合は、個別にコンパイルしてインストールし、最初にコンパイルしてからインストールします
アップロードは成功したがnginxがエラー404を報告した場合は、最初にmodを確認してください_fastdfs.confファイルに保存_path0は一貫していますか
nginxにアクセスできない場合は、最初にファイアウォールとmodを確認してください_fastdfs.confファイルトラッカー_サーバーは一貫していますか
ない場合/usr/local/srcフォルダーにインストールすると、コンパイルエラーが発生する可能性があります
Recommended Posts