分散ファイルサーバーを実装するための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 オープンソースのリアルタイムコンピューティングプラットフォーム

推薦する

外部リンクに関する私の経験

数日前、Lu Songsong のブログで非常に良い記事をいくつか見ました。その 1 つは、Ganj...

公共部門の IT が「主権」クラウドに移行する理由

現在、英国の公共部門は毎年多額の資金を費やしており、そのため大きな責任を負っています。英国国民全員に...

クラウド停止の原因と損失、クラウド停止による損失を減らす方法について詳しく説明します。

クラウド コンピューティングは、効率性を高め、データのセキュリティを強化し、利益を増やす機会を提供し...

たった1行のコードで、Pandasは数秒で分散化され、テラバイトレベルのデータを素早く処理できる。

私は Pandas で数十 KB のデータの処理スクリプトのテストと作成を終えたばかりですが、今度は...

Baiduのニーズに最適な独自の更新方法

Baidu の 6 月 28 日のイベントの後、すべてのウェブマスターはオリジナル記事の価値を認識し...

armorshark-1.5G メモリ/50g SSD/3.5T トラフィック/月額 7 ドル

armorshark は今回、特大 SSD ハードドライブと 3.5T の月間トラフィックを特徴とす...

Kubernetes を導入する際の重要なポイントは何ですか?

Kubernetes が人気トレンドとなった理由は、インフラストラクチャの柔軟な拡張機能を実現できる...

Oracle Marketing Cloudは、精密なトラフィックの迂回と重要なインキュベーションを利用して、シスコの新しい効率的なカスタマージャーニーを実現します。

MarTech エコシステムは日々拡大しています。市場に存在するさまざまなマーケティング理論やソリュ...

シンプルで本格的なソフト記事執筆スキル

簡単本格ソフトコピーライティング法!3つのポイント1: あなたのユーザーは誰ですか? Google:...

ビッグデータ時代の化粧品業界の「美の真実」を読み解く

ビッグデータは良いものであり、またビッグデータは悪いものです。メイクは良いことであり、メイクは悪いこ...

インターネットの逆思考:携帯電話を解体して販売する新しい携帯電話マーケティング戦略

【スマートフォンの急速な普及と携帯電話メーカーの継続的な拡大により、世界の携帯電話販売は徐々に飽和状...

ウェブマスターネットワークからの毎日のレポート:新浪が微博大会を発表、Twitterアカウントが流出

1. 新浪が「微博コミュニティ憲章(試行版)」を発表新浪は昨日、「微博コミュニティ規約(試行)」(以...

COVID-19パンデミックにより分散化の傾向が強まり、ブロックチェーン技術はまだ完全に実現されていない。

COVID-19パンデミックはブロックチェーン技術の応用を促進する大惨事となると予測する人もいるが、...

ネット上の化粧品に関する3つの大きな噂:並行輸入、偽造、高品質の模造品

「ネットで売られている化粧品の80%は偽物」という噂が広まり、消費者は化粧品のネット販売に疑問を抱き...