分散ファイルサーバーを実装するためのNginxとFastDFS

分散ファイルサーバーを実装するためのNginxとFastDFS

FastDFS は、ファイルを管理するオープンソースの軽量分散ファイル システムです。機能には、ファイルストレージ、ファイル同期、ファイルアクセス(ファイルのアップロード、ファイルのダウンロード)などがあり、大容量ストレージと負荷分散の問題を解決します。特に、フォトアルバム Web サイトやビデオ Web サイトなど、ファイルをキャリアとして使用するオンライン サービスに適しています。

FastDFS は、冗長バックアップ、負荷分散、線形拡張などのメカニズムを十分に考慮し、高可用性や高パフォーマンスなどの指標に重点を置いて、インターネット向けにカスタマイズされています。 FastDFS を使用すると、ファイルのアップロード、ダウンロード、その他のサービスを提供する高性能ファイル サーバー クラスターを簡単に構築できます。

1. libfastcommonをダウンロードしてインストールする

libfastcommon は、基本環境である FastDFS および FastDHT から抽出された共通 C 関数ライブラリであり、インストールできます。

1.1 ダウンロード:

  1. https://github.com/happyfish100/libfastcommon/archive/V1.0.7.ta​​r.gz を取得します。

1.2 解凍:

  1. tar -zxvf V1.0.7.ta​​r.gz

1.3 インストール:

  1. libfastcommon-1.0.7 をインストールします
  2.  
  3. ./make.sh
  4.  
  5. ./make.sh インストール

1.4 ファイルをコピーする:

FastDFS の lib 構成ファイル パスの問題を解決します。

  1. cp/usr/lib64/libfastcommon.so/usr/ローカル/lib/libfastcommon.so  
  2. cp/usr/lib64/libfastcommon.so/usr/lib/libfastcommon.so

2. FastDFSをダウンロードしてインストールする

2.1 ダウンロード:

  1. https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz をダウンロードしてください

2.2 減圧:

  1. tar -zxvf V5.05.tar.gz

2.3 インストール:

  1. cd fastdfs-5.05
  2. ./make.sh
  3. ./make.sh インストール

インストールが完了すると、デフォルトの設定ファイル ディレクトリは /etc/fdfs/ になり、デフォルトのコマンドは /usr/bin/ に配置され、fdfs_ で始まります。

3. FastDFSを構成する

まず、設定ファイルを /etc/fdfs ディレクトリにコピーします。

  1. cd/home/fantj/download/fastdfs-5.05/conf
  2.  
  3. cp*/etc/fdfs/
  4.  
  5. 次のように:
  6.  
  7. [root@s168 conf]#cd /etc/fdfs/
  8.  
  9. [root@s168 fdfs]#ls
  10.  
  11. anti-steal.jpg client.conf.sample mime.types storage.conf.sample tracker.conf
  12.  
  13. client.conf http.conf storage.conf storage_ids.conf tracker.conf.sample

3.1. tracker.conf の設定

FastDFSトラッカー

次の構成を変更します。

  1. #トラッカーデータとログディレクトリのアドレス(ルートディレクトリが存在する必要があり、サブディレクトリは自動的に作成されます)  
  2. ベースパス=/fastdfs/トラッカー 
  3. ポート=22122

3.1.1 ディレクトリを作成します。

mkdir-p /fastdfs/tracker3.1.2 開始/停止:

fdfs_trackerd/etc/fdfs/tracker.conf の start/stop は、デフォルトで /etc/fdfs の下の設定ファイルを使用します。特定の構成がある場合は、最後にパラメータを追加できます。ファイアウォールがある場合は、ファイアウォールのルールを開きます。

3.1.3 スタートアップを設定する:

  1. # systemctl で fdfs_trackerd を有効にする
  2.  
  3.  
  4. または:
  5.  
  6. # vim /etc/rc.d/rc.local  
  7.  
  8. 設定を追加します:
  9.  
  10. /etc/init.d/fdfs_trackerd 開始

3.1.4 トラッカーサーバーのディレクトリとファイル構造:

Tracker サービスが正常に開始されると、base_path の下に data と logs の 2 つのディレクトリが作成されます。ディレクトリ構造は次のとおりです。

  1. ${ベースパス}
  2.  
  3. |__データ
  4.  
  5. | |__storage_groups.dat: ストレージグループ情報
  6.  
  7. | |__storage_servers.dat: ストレージサーバーリスト
  8.  
  9. |__ログ
  10.  
  11. | |__trackerd.log: トラッカーサーバーのログファイル

3.2.ストレージの構成

以下は基本的な構成です。さらに詳細なニーズがある場合は、すべての構成を確認してください。

  1. group_name=fantj #グループ名
  2.  
  3. base_path=/fastdfs/storage #ログディレクトリ
  4.  
  5. store_path0=/fastdfs/storage #ストレージディレクトリ
  6.  
  7. tracker_server=192.168.27.168:22122 #トラッカーノード
  8.  
  9. http.server_port=8888 #ポート

3.2.1 起動

  1. こうやって始められます
  2.  
  3. fdfs_storaged/etc/fdfs/storage.conf 開始
  4.  
  5. この方法を使用して、後でこの方法を使用することもできます。
  6.  
  7. # サービス fdfs_storaged 開始

3.2.2 プロセスの確認

netstat-unltp|grep fdfs3.2.3 ストレージの起動

  1. # systemctl で fdfs_storaged を有効にする 
  2.  
  3. または:
  4.  
  5. # vim /etc/rc.d/rc.local  
  6.  
  7. 設定を追加します:
  8.  
  9. /etc/init.d/fdfs_storaged 開始

3.2.4 ストレージディレクトリ

ストレージが正常に起動すると、ストレージ サーバーの情報を記録するために、base_path の下にデータ ディレクトリとログ ディレクトリが作成されます。

store_path0 ディレクトリの下に、N*N 個のサブディレクトリが作成されます。

  1. [root@s168 データ]# pwd
  2.  
  3. /fastdfs/ストレージ/データ
  4.  
  5. [root@s168 データ]# ls
  6.  
  7. 00 07 0E 15 1C 23 2A 31 38 3F 46 4D 54 5B 62 69 70 77 7E 85 8C 93 9A A1 A8 AF B6 BD C4 CB D2 D9 E0 E7 EE F5 FC
  8.  
  9. 01 08 0F 16 1D 24 2B 32 39 40 47 4E 55 5C 63 6A 71 78 7F 86 8D 94 9B A2 A9 B0 B7 BE C5 CC D3 DA E1 E8 EF F6 FD
  10.  
  11. 02 09 10 17 1E 25 2C 33 3A 41 48 4F 56 5D 64 6B 72 79 80 87 8E 95 9C A3 AA B1 B8 BF C6 CD D4 DB E2 E9 F0 F7 fdfs_storated.pid
  12.  
  13. 03 0A 11 18 1F 26 2D 34 3B 42 49 50 57 5E 65 6C 73 7A 81 88 8F 96 9D A4 AB B2 B9 C0 C7 CE D5 DC E3 EA F1 F8 FE
  14.  
  15. 04 0B 12 19 20 27 2E 35 3C 43 4A 51 58 5F 66 6D 74 7B 82 89 90 97 9E A5 AC B3 BA C1 C8 CF D6 DD E4 EB F2 F9 FF
  16.  
  17. 05 0C 13 1A 21 28 2F 36 3D 44 4B 52 59 60 67 6E 75 7C 83 8A 91 98 9F A6 AD B4 BB C2 C9 D0 D7 DE E5 EC F3 FA storage_stat.dat
  18.  
  19. 06 0D 14 1B 22 29 30 37 3E 45 4C 53 5A 61 68 6F 76 7D 84 8B 92 99 A0 A7 AE B5 BC C3 CA D1 D8 DF E6 ED F4 FB同期

3.3.クライアントを構成する

  1. vimクライアント.conf
  2.  
  3. tracker_server=192.168.27.168:22122 #トラッカーノード
  4.  
  5. base_path=/fastdfs/client #ログパス

3.4.ローカル画像アップロードテスト

  1. [root@s168 fdfs]#fdfs_upload_file/etc/fdfs/client.conf/home/test.png
  2. ファントj/M00/00/00/wKgbqFu7T7iAJh7lAABDYbhAMC4812.png
  3. または:
  4. [root@s168 fdfs]#fdfs_test/etc/fdfs/client.conf/home/test.png
  5.  
  6. ThisisFastDFSクライアントテストプログラムv5.05
  7. Copyright(C)2008,HappyFish/YuQing
  8. FastDFSはGNUGeneral条件に従ってのみコピーできます
  9.  
  10. PublicLicenseV3 は、FastDFSsource キットに含まれています。
  11.  
  12. FastDFSホームページhttp://www.csource.org/をご覧ください。
  13.  
  14. 詳細についてはこちらをご覧ください。
  15.  
  16. [2018-5-0820:41:15]DEBUG-base_path=/fastdfs/client、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、ストレージ サーバー ID:0
  17. 無効な操作:/home/test.png

4. nginxをインストールする

nginx のインストールについては以前に記事を書いたので、ここでは繰り返しません。まだインストールしていない場合は、以下をクリックしてください:

クリックして私の記事をご覧ください: nginx のインストール

5. FastDFS 構成 Nginx モジュール

fastdfs-nginx-module は、ファイル リンクをソース サーバーにリダイレクトしてファイルを取得し、クライアントのレプリケーション遅延によって発生するファイル アクセス不能エラーを回避できます。

5.1 ダウンロードとインストール

  1. https://github.com/happyfish100/fastdfs-nginx-module/archive/5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip を取得します。
  2.  
  3. unzip5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip
  4.  
  5. mv fastdfs-nginx-モジュール-5e5f3566bbfa57418b5506aaefbe107a42c9fcb1/fastdfs-nginx-モジュール

5.2 Nginxの設定

  1. ngix -s 停止
  2.  
  3. nginx-1.12.1をインストールします
  4.  
  5. #モジュールを追加
  6.  
  7. ./configure --add-module=../fastdfs-nginx-module/src  
  8.  
  9. (yum で nginx をインストールした場合、まだ解決策は見つかっていません。現在の方法は、nginx-V で nginx のバージョンを確認し、同じバージョンの nginx をダウンロードすることです。
  10.  
  11. その後、/etc/nginx の下にあるデータ全体をバックアップし、make&make install が完了した後に復元します)
  12.  
  13. #再コンパイルしてインストール
  14.  
  15. 作る
  16.  
  17. インストールする
  18.  
  19. #設定ファイルをコピーする
  20.  
  21. [root@s168 src]#pwd
  22.  
  23. /home/fantj/download/fastdfs-nginx-module/src
  24.  
  25. [root@s168 src]#cp mod_fastdfs.conf/etc/fdfs/

/etc/fdfs/mod_fastdfs.conf ファイルを設定する

  1. #/etc/fdfs/mod_fastdfs.conf ファイルを設定する
  2.  
  3. base_path=/fastdfs/tmp #ログディレクトリ
  4.  
  5. store_path0=/fastdfs/ストレージ
  6.  
  7. トラッカーサーバー=192.168.27.168:22122
  8.  
  9. #グループ 名前 ローカルストレージサーバー
  10.  
  11. group_name=fantj #ストレージグループ名と1対1に対応
  12.  
  13. url_have_group_name= true # URL で group_name を有効にする

nginxの設定

  1. # nginx を設定する
  2.  
  3. [root@s168 fdfs]#cd/usr/ローカル/nginx/conf/
  4.  
  5. [root@s168 conf]#vim nginx.conf
  6.  
  7. #次の設定を追加します
  8.  
  9. サーバ{
  10.  
  11. 聞く88;
  12.  
  13. サーバー名192.168.27.168;
  14.  
  15. 場所/ファントJ/M00{
  16.  
  17. ngx_fastdfs_モジュール;
  18.  
  19. }
  20.  
  21. }
  22.  
  23.  
  24. # 設定検出を実行するには、/usr/ local /nginx/sbin ディレクトリに入ります
  25.  
  26. [root@s168 sbin]#./nginx -t
  27.  
  28. ngx_http_fastdfs_set pid=6431
  29.  
  30. nginx:設定ファイル/usr/ local /nginx/conf/nginx.conf 構文isok
  31.  
  32. nginx:設定ファイル/usr/ local /nginx/conf/nginx.conf テストは成功しました
  33.  
  34. # nginxを起動する
  35.  
  36. [root@s168 sbin]#./nginx
  37.  
  38. ngx_http_fastdfs_set pid=6436

サービスを再起動してテストする

  1. [root@s168 fdfs]#fdfs_trackerd tracker.conf を再起動
  2.  
  3. waitforpid[1202]終了...
  4.  
  5. 起動...
  6.  
  7. [root@s168 fdfs]#fdfs_storaged storage.conf を再起動
  8.  
  9. waitforpid[1211]終了...
  10.  
  11. 起動...
  12.  
  13. [root@s168 fdfs]#/usr/ローカル/nginx/sbin/nginx-s をリロード
  14.  
  15. ngx_http_fastdfs_set pid=6463

6. 構成成功テスト

<<:  60 個の DevOps「武器」、どれを使っていますか?

>>:  瞬きする間に、情報は 17 億回更新されます。 Alibaba Cloud オープンソースのリアルタイムコンピューティングプラットフォーム

推薦する

A5 Webmaster Networkのセカンドサーバーウェブサイトセキュリティトレーニングの申し込み受付を開始しました

サーバー Web サイト セキュリティ トレーニングに参加する必要があるのはなぜですか?最新の統計に...

国内Serverless Summit新記録樹立!第2回Techo TVP開発者サミットが北京で開催

サーバーレスは、将来のインフラストラクチャと運用に影響を与える上位 10 の技術トレンドの 1 つで...

Java仮想マシン、これは進歩する価値のある方向です

時間が経つにつれて、誰もが徐々に中級プログラマーのレベルに入ります。同時に、学習しないことは立ち止ま...

キーワード最適化のヒントを共有する

検索業界全体を見てみると、トラフィックの多いキーワードは、一部の大手の古いサイトが占めています。これ...

SEO 業界でウェブサイトをフレーム化する 2 つの恥知らずな方法を明らかにする

どの業界でも、競合他社を陥れるために恥ずべき方法を使う人が必ず存在しますが、SEO 業界でも同じこと...

リンクの価値指向を利用してウェブサイトのリンクを最適化する

みなさんこんにちは。私はMuzi Chengzhouです。皆さんは Li Jianzhong 氏の記...

Ant Financial副CTO胡曦氏がATECで発表:Alipayの技術は完全にオープン

複数の Alipay コンピューター ルームの光ケーブルが同時に引き抜かれ、サーバーの 40% が突...

クラウド コンピューティングから価値を引き出すために CEO が実行できる 3 つのアクション

企業の CEO として、あなたは、この流行が終わった後にクラウド コンピューティング テクノロジーが...

高速ビジネス環境下でITアーキテクチャーにおいて最小限の労力で高いパフォーマンスを達成する方法

[51CTO.comよりオリジナル記事] デジタルトランスフォーメーションが深まり続ける中、クラウド...

美麗碩と莫口街のブランドワード戦略の分析

みなさんこんにちは。私は徐子宇です。過去1年間、MeilishuoとMogujieがあまりにも多く私...

2018 年のクラウド コンピューティング市場を振り返ると、変化は需要よりも大きいのでしょうか?

今年、徐々に成熟し、導入に向けて順調に進んでいるように見えるクラウドコンピューティングも、実は内部的...

量子コンピュータの二重の省エネの可能性

量子コンピュータは、従来のコンピュータよりも少ないエネルギーで、より効率的な技術を開発する方法を提供...

Weiboマーケティングの6つのヒント: 楽しいだけじゃない

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスWeiboマーケティング...

Python で Apache Kafka を使いこなすために知っておくべき 3 つのライブラリ

データは世界に力を与えます。私たちは毎秒大量の情報を取得し、それを整理して分析し、ログ ファイル、ユ...