fastdfs+nginxクラスタ構築の実装

fastdfs+nginxクラスタ構築の実装

1. fastdfs の紹介

1. fastdfsとは何か

  • Fastdfs は軽量のオープンソース分散ファイルシステムです。
  • Fastdfs は主に大容量のファイルストレージと高同時アクセスの問題を解決し、ファイルアクセス時の負荷分散を実現します。
  • Fastdfs はソフトウェア RAID を実装しており、ストレージに安価な IDE ハードディスクを使用し、ストレージ サーバーのオンライン拡張をサポートします。同じ内容のファイルのコピーを 1 つだけ保存できるため、ディスク領域を節約できます。
  • Fastdfs はクライアント API 経由でのみアクセスでき、POSIX アクセス メソッドはサポートされていません。
  • Fastdfs は、リソース ファイル (画像、ドキュメント、オーディオ、ビデオなど) を保存する大規模および中規模の Web サイトに特に適しています。

2.fastdfsフレームワーク図

著者(YuQing)はフレームワーク図を次のように示しています。

で:

トラッカー サーバー:トラッキング サーバーは主にスケジューリング作業を実行し、アクセスの負荷分散の役割を果たします。ストレージ サーバーのステータスを記録し、クライアントとストレージ サーバーを接続するハブとして機能します。
ストレージサーバー: ストレージサーバー、ファイルとメタデータはストレージサーバーに保存されます
グループ:グループ。ボリュームとも呼ばれます。同じグループ内のサーバー上のファイルは、まったく同じファイル識別子を持ちます。これは、グループ名とファイル名(パスを含む)の2つの部分で構成されます。
メタデータ:ファイル関連の属性。幅=1024、高さ=768 などのキーと値のペア形式

3. ファイルのアップロードプロセス

(1)クライアントは追加のパラメータなしでトラッカーにアップロード先のストレージを要求します。
(2)トラッカーは利用可能なストレージを返す。
(3)クライアントはストレージと直接通信してファイルのアップロードを完了します。

4. ファイルのダウンロードプロセス

(1)クライアントはトラッカーにダウンロードしたファイルの保存を要求し、パラメータはファイル識別子(グループ名とファイル名)である。
(2)トラッカーは利用可能なストレージを返す。
(3)クライアントはストレージと直接通信してファイルのダウンロードを完了します。

5. 同期メカニズム

(1)同一グループ内のストレージサーバはピアであり、ファイルのアップロード、削除等の操作はどのストレージサーバでも実行できる。
(2)ファイル同期は、プッシュ方式、つまりソースサーバがターゲットサーバに同期する方式を使用して、同じグループ内のストレージサーバ間でのみ実行されます。
(3)同期する必要があるのはソースデータのみであり、バックアップデータは再度同期する必要はありません。そうしないとループが形成されます。
(4)上記の2番目のルールには例外があります。新しいストレージサーバーが追加されると、既存のストレージサーバーは既存のすべてのデータ(ソースデータとバックアップデータを含む)を新しいサーバーに同期します。

6. トラッカーサーバーのディレクトリ構造

(1)データ

storage_groups.dat: ストレージグループ情報

storage_servers.dat: ストレージ サーバー リスト

(2)ログ

trackerd.log: トラッカーサーバーのログファイル

7. ストレージサーバーのディレクトリ構造

1) データ

.data_init_flag: 現在のストレージ サーバーの初期化情報

storage_stat.dat: 現在のストレージ サーバーの統計

同期: データ同期に関連するファイルを保存します

binlog.index: 現在の binlog ファイルのインデックス番号

binlog.###: 更新操作の記録(ログ)を保存します

${ip_addr}_${port}.mark: 同期の完了ステータスを保存します

(2)ログ

              storaged.log: ストレージ サーバーのログ ファイル

上記の理論的参照:

ChinaUnix フォーラム: http://bbs.chinaunix.net/forum-240-1.html

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

2. fastdfsのインストールとテスト

1. ダウンロード

ダウンロードが必要: libfastcommon fastdfs (2.0 より前のバージョンでは libevent に依存する必要があります)

2. インストール

(1)libfastcommonをインストールする

$ tar xzvf libfastcommon-1.0.38.tar.gz
$ cd libfastcommon-1.0.38
ビルド
$ sudo ./make.sh インストール

(2)fastdfsをインストールする

$ tar xzvf fastdfs-5.11.tar.gz
$ cd fastdfs-5.11
ビルド
$ sudo ./make.sh インストール

3. 構成

クラスタ構築トポロジ図(ハードディスク不足のため、192.168.31.4 と 192.168.31.14 は現在利用できません。容量拡張後に追加されます)

(1)トラッカーの設定(192.168.31.95/192.168.31.99)

$cd /etc/fdfs/

ディレクトリファイルは次のとおりです。

次に、次のように実行します。

$ sudo su
#cp トラッカー.conf.サンプル トラッカー.conf 

tracker.conf ファイルを設定します。

vim トラッカー.conf

変更: base_path=/home/fastdfs/tracker (注: このディレクトリは開始前に存在している必要があります。存在しない場合はエラーが報告され、パスが見つからないため、新しいトラッカー ディレクトリを手動で作成する必要があります)

起動する:

/etc/init.d/fdfs_trackerd 開始

(2)ストレージを構成する(192.168.31.2/192.168.31.12)

$ cd /etc/fdfs
$ sudo su
#cp ストレージ.conf.サンプルストレージ.conf

改訂:

グループ名 = グループ1 (192.168.31.2) または グループ2 (192.168.31.12)

ベースパス=/home/fastdfs/ストレージ

store_path0=/home/fastdfs/ストレージ

変更: トラッカー サービスの IP とポート:

tracker_server=192.168.31.95:22122 (注: ここで 31.2 tracker_server は 31.95 を構成し、31.12 tracker_server は 31.99 を構成します)

起動する:

/etc/init.d/fdfs_storaged 開始

fastdfsの対応する構成情報を表示します

# fdfs_monitor /etc/fdfs/storage.conf

次の情報が存在する場合、成功とみなされます。

アップロードをテストし、192.168.31.99 トラッカーマシンを fdfs_client として選択します。

$ cd /etc/fdfs

$ sudo su

# cp client.conf.sample クライアント.conf

# vim クライアント.conf

改訂:

ベースパス = /home/fastdfs

トラッカーサーバー=192.168.31.99:22122

net.png ファイルのアップロードをテストします。

fdfs_upload_file /etc/fdfs/client.conf net.png

3. nginxの設定

インストールする必要があるもの:

fastdfs-nginx-module-1.20 プラグインに似たもの

nginx-1.14.2.tar.gz

nginx をインストールするには、以下をインストールする必要があります。

openssl zlib pcre

astdfs-nginx-module を nginx に挿入します (configure および make&make install nginx を実行する必要があります)

./configure --add-module=../../fastdfs-nginx-module/src/

エラーが報告されます: fastdfs-nginx-module-1.20/src/config ファイルを変更する必要があります

ngx_addon_name=ngx_http_fastdfs_module

テスト -n "${ngx_module_link}" の場合、
  ngx_module_type=HTTP
  ngx_module_name=$ngx_addon_name
  ngx_module_incs="/usr/local/include"
  ngx_module_libs="-lfastcommon -lfdfsclient"
  ngx_module_srcs="$ngx_addon_dir/ngx_http_fastdfs_module.c"
  ngx_module_deps=
  CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
  .auto/モジュール
それ以外
  HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
  NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
  CORE_INCS="$CORE_INCS /usr/local/include"
  CORE_LIBS="$CORE_LIBS -lfastcommon -lfdfsclient"
  CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
フィ

変更後:

ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"

ngx_addon_name=ngx_http_fastdfs_module

テスト -n "${ngx_module_link}" の場合、
  ngx_module_type=HTTP
  ngx_module_name=$ngx_addon_name
  ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
  ngx_module_libs="-lfastcommon -lfdfsclient"
  ngx_module_srcs="$ngx_addon_dir/ngx_http_fastdfs_module.c"
  ngx_module_deps=
  CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
  .auto/モジュール
それ以外
  HTTP_MODULES="$HTTP_MODULES ngx_http_fastdfs_module"
  NGX_ADDON_SRCS="$NGX_ADDON_SRCS $ngx_addon_dir/ngx_http_fastdfs_module.c"
  CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
  CORE_LIBS="$CORE_LIBS -lfastcommon -lfdfsclient"
  CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/etc/fdfs/mod_fastdfs.conf\"'"
フィ

その後、再設定してmake && make install

次に、cp mod_fastdfs.conf /etc/fdfs/ を実行し、mod_fastdfs.conf ファイルを変更します。

$ cd fastdfs-nginx-module-1.20/src
$ cp mod_fastdfs.conf /etc/fdfs/

mod_fastdfs.conf を変更する

トラッカーサーバー=192.168.31.99:22122
store_path0=/home/fastdfs/ストレージ
グループ名=グループ1

[グループ1]
グループ名=グループ1
ストレージサーバーポート=23000
ストアパス数=1
store_path0=/home/fastdfs/ストレージ


[グループ2]
グループ名=グループ2
ストレージサーバーポート=23000
ストアパス数=1
store_path0=/home/fastdfs/ストレージ

fastdfs-5.11/conf/

$ cp http.conf /etc/fdfs/
$ cp mime.types /etc/fdfs/

変更: http.conf

トークンチェック失敗

nginx.confを変更する

/usr/local/nginx/sbin をコピーします
vim ../conf/nginx.conf

ポート番号8888は/etc/fdfs/storage.confのhttp.server_port=8888に対応します。

写真をアップロード

http://192.168.31.12:8888/group1/M00/00/00/wKgfDFzxVTyAM4suABWWvfB6x_k962.png

fastdfs+nginx クラスター構築の実装に関するこの記事はこれで終わりです。fastdfs+nginx クラスター構築の関連コンテンツについては、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • Nginx+FastDFSでイメージサーバーを構築

<<:  MySQLを水平から垂直に、垂直から水平に変換する方法

>>:  MySQLはフィールドからカンマ区切りの値を取り出して新しいフィールドを形成します

推薦する

HTML フォームとフォーム内部タグの使用

コードをコピーコードは次のとおりです。 <html> <ヘッド> <t...

HTML チュートリアル、optgroup 要素の理解

カテゴリ選択を選択します。テストの結果、IE と FF はこの要素を適切にサポートできることがわかり...

MySQL サーバー 5.7.20 のインストールと設定方法のグラフィック チュートリアル

この記事ではMySQL 5.7.20のインストールと設定方法を記録し、皆さんと共有します1. MyS...

ウェブデザインの初心者に役立つ学習教材をいくつかお勧めします

勉強中に読んだ本についてもよく聞かれます。以下は初心者におすすめの本です(私が勉強中に読んだ本です。...

JavaScript の高度なプログラミングの基本参照型

目次1. 日付2. 正規表現3. オリジナルパッケージタイプ序文:参照値(オブジェクト)は、 Dat...

Tomcat9 のダウンロード、インストール、設定 + Eclipse への統合に関する詳細なチュートリアル

トムキャット公式サイトtomcatはローカルサーバーと同等であり、Webページを開くことができます設...

JavaScript 定期検証パスワード強度実装方法

展示する デザインパスワード強度分析パスワードは数字、文字、特殊記号で構成されていますパスワード: ...

レンダリング関数と JSX の詳細

目次1. 基本2. ノード、ツリー、仮想DOM 1. 仮想DOM 3. createElementパ...

VMware 仮想化 KVM のインストールと展開のチュートリアルの概要

仮想化1. 環境セントオス7.3 selinuxとファイアウォールを無効にする2. 仮想化環境の構成...

MySQL のロックの仕組みと使用法の分析

この記事では、例を使用して MySQL のロック メカニズムと使用方法を説明します。ご参考までに、詳...

WindowsにJDK8をインストールする方法

1. ダウンロード: http://www.oracle.com/technetwork/java/...

Vue2.x および Vue3.x のカスタム命令の使用方法とフック関数の原理を理解する

目次Vue2.x の使用法グローバル登録部分登録使用フック機能フック関数のパラメータVue3.x の...

MySQL 30軍事ルールの詳細な説明

1. 基本仕様(1)InnoDBストレージエンジンを使用する必要があります。解釈:トランザクション、...

CentOS 8/RHEL 8 に Cockpit をインストールして使用する方法

Cockpit は、CentOS および RHEL システムで使用できる Web ベースのサーバー管...