1.1 前書き
FastDFSTaobaoのシニアアーキテクチャであるYuQingの作者である、この優れた軽量で分散型のファイルシステムオープンソースは、すぐに人気を博しました。 FastDFSは、インターネットアプリケーション向けに調整された分散[ファイルストレージ](https://cloud.tencent.com/product/cfs?from=10680)システムであり、ユーザーの写真、ビデオ、ドキュメント、およびその他のファイルの保存に非常に適しています。インターネットアプリケーションの場合、他の分散ファイルシステムと比較して、利点は非常に明白です。
1.2 詳細な紹介
FastDFSは、オープンソースの分散ファイルシステムであり、ファイルを管理します。その機能には、ファイルストレージ、ファイル同期、ファイルアクセス(ファイルアップロード、ファイルダウンロード)などがあり、大容量ストレージと[負荷分散]の問題を解決します(https://cloud.tencent.com/product/clb?from=10680)問題。フォトアルバムのWebサイト、ビデオのWebサイトなど、ファイルをキャリアとして使用するオンラインサービスに特に適しています。
FastDFSサーバーには、トラッカー(トラッカー)とストレージノード(ストレージ)の2つの役割があります。トラッカーは主にスケジューリング作業を行い、アクセスにおいて負荷分散の役割を果たします。
ストレージノードはファイルを保存し、ファイル管理のすべての機能(ストレージ、同期、アクセスインターフェイスの提供)を完了します。FastDFSはファイルのメタデータも管理します。ファイルのいわゆるメタデータは、ファイルの関連属性であり、width = 1024などのキーと値のペアで表されます。ここで、キーはwidthで、値は1024です。ファイルメタデータはファイル属性のリストであり、複数のキーと値のペアを含めることができます。
トラッカーとストレージノードの両方を1つ以上のサーバーで構成できます。トラッカーとストレージノードのサーバーは、オンラインサービスに影響を与えることなく、いつでも追加またはオフラインにすることができます。トラッカー内のすべてのサーバーはピアツーピアであり、サーバーの圧力に応じていつでも増減できます。
大容量をサポートするために、ストレージノード(サーバー)はボリューム(またはグループ)組織を採用します。ストレージシステムは1つ以上のボリュームで構成されています。ボリューム間のファイルは互いに独立しています。すべてのボリュームのファイル容量は、ストレージシステム全体のファイル容量です。ボリュームは、1つ以上のストレージサーバーで構成できます。ボリュームの下のストレージサーバー内のファイルは同じです。ボリューム内の複数のストレージサーバーは、冗長バックアップと負荷分散の役割を果たします。
ボリュームにサーバーが追加されると、システムは既存のファイルの同期を自動的に完了します。同期が完了すると、システムは新しく追加されたサーバーを自動的に切り替えてオンラインサービスを提供します。
ストレージスペースが不足している場合や不足しそうな場合は、動的にボリュームを追加できます。 1つ以上のサーバーを追加し、それらを新しいボリュームとして構成するだけで、ストレージシステムの容量が拡張されます。
FastDFSでのファイル識別は、ボリューム名とファイル名の2つの部分に分かれており、どちらも必須です。
1.3 FastDFSアーキテクチャ
FastDFSアーキテクチャには、トラッカーサーバーとストレージサーバーが含まれます。クライアントはトラッカーサーバーにファイルのアップロードとダウンロードを要求し、ストレージサーバーはトラッカーサーバーのスケジューリングを通じてファイルのアップロードとダウンロードを完了します。
Trackerserverの役割は、負荷分散とスケジューリングです。ファイルがアップロードされると、TrackerserverはStorageserverを見つけて、いくつかの戦略に従ってファイルアップロードサービスを提供できます。トラッカーは、追跡サーバーまたはディスパッチサーバーと呼ばれます。
Storageserverの役割はファイルストレージです。クライアントによってアップロードされたファイルは、最終的にStorageサーバーに保存されます。Storageサーバーは独自のファイルシステムを実装しませんが、オペレーティングシステムのファイルシステムを使用してファイルを管理します。ストレージはストレージサーバーと呼ぶことができます。
以下に示すように:
1.4 トラッカークラスター
ストレージクラスターは、グループ化されたストレージ方式を採用しています。ストレージクラスターは1つ以上のグループで構成され、クラスターの合計ストレージ容量は、クラスター内のすべてのグループのストレージ容量の合計です。グループは1つ以上のストレージサーバーで構成されます。グループ内のストレージサーバーは同じです。異なるグループ内のストレージサーバーは相互に通信しません。同じグループ内のストレージサーバーは、ファイルの同期のために相互に接続されます。同じグループ内の各ストレージ上のファイルはまったく同じです。グループのストレージ容量は、グループ内でストレージサーバーの容量が最も小さいものであるため、グループ内のストレージサーバーのソフトウェアとハードウェアの構成は一貫している必要があることがわかります。
ストレージクラスター
パケットストレージを使用する利点は、柔軟性と制御性です。たとえば、ファイルをアップロードするときに、クライアントがアップロード先のグループを直接指定したり、トラッカーがスケジュールして選択したりできます。ストレージサーバーのグループにアクセスの負荷が高い場合は、ストレージサーバーをグループに追加して、サービス機能を拡張できます(垂直拡張)。システム容量が不足している場合は、グループを増やしてストレージ容量を拡張することができます(水平拡張)。
1.5 アップロードファイルの相互作用プロセス
クライアントは、トラッカーにアップロードされたストレージを要求します。追加のパラメーターは必要ありません。
トラッカーは使用可能なストレージを返します。
クライアントはストレージと直接通信して、ファイルのアップロードを完了します。
1.6 ファイルの相互作用プロセスをダウンロードする
クライアントはトラッカーにファイルのストレージをダウンロードするように要求し、パラメーターはファイルID(ボリューム名とファイル名)です。
トラッカーは使用可能なストレージを返します。
クライアントはストレージと直接通信して、ファイルのダウンロードを完了します。
著者のGitHubアドレス:https://github.com/happyfish100
https://github.com/happyfish100/fastdfs/tree/V5.11
バージョン5.11は、fastdfs-nginx-moduleのバージョン1.20に対応します
バージョン5.10は、fastdfs-nginx-moduleのバージョン1.19に対応します
他のツールをダウンロードする:
libfastcommon
fastdfs-nginx-module
fastdfs-client-java
nginx
https://github.com/happyfish100/libfastcommon/archive/master.zip
https://github.com/happyfish100/fastdfs-nginx-module/archive/master.zip
https://github.com/happyfish100/fastdfs-client-java/archive/master.zip
http://nginx.org/download/nginx-1.13.11.tar.gz
最初に解凍ツールをインストールします。
[ root@docker-01 opt]# yum -y install unzip zip
インストールが成功したら、libfastcommon-master.zipを解凍します
[ root@docker-01 opt]# unzip libfastcommon-master.zip
新しく解凍したディレクトリを入力します。
[ root@docker-01 opt]# cd libfastcommon-master
[ root@docker-01 libfastcommon-master]# ls
doc HISTORY INSTALL libfastcommon.spec make.sh php-fastcommon README src
コンパイルする前に、gccをインストールします
[ root@docker-01 libfastcommon-master]# yum -y install gcc-c++
次に、以下を実行します。
[ root@docker-01 libfastcommon-master]#./make.sh
[ root@docker-01 libfastcommon-master]# ./make.sh install
Libfastcommonはデフォルトで/usr/lib64/libfastcommon.soにインストールされますが、FastDFSのメインプログラムは/ usr / local / libディレクトリにあります。この時点で、ソフトリンクを確立します。
[ root@docker-01 libfastcommon-master]# ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
[ root@docker-01 libfastcommon-master]# ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
[ root@docker-01 libfastcommon-master]# ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
[ root@docker-01 libfastcommon-master]# ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
4.1 FastDFSインストールパッケージを解凍します
[ root@docker-01 opt]# unzip fastdfs-master.zip
新しく解凍したディレクトリを入力します。
4.2 コンパイルしてインストール
[ root@docker-01 opt]# cd fastdfs-master/
[ root@docker-01 fastdfs-master]# ./make.sh
[ root@docker-01 fastdfs-master]# ./make.sh install
エラーがなければ成功しました。
インストールログは、FastDFSが/ etc / fdfsディレクトリにインストールされていることを示します。
成功したら、インストールディレクトリを確認します。
[ root@docker-01 fastdfs-master]# cd /etc/fdfs/
[ root@docker-01 fdfs]# ll
合計金額24
rw-r--r-。1ルートルート14618月31日23:27client.conf.sample
rw-r--r-。1ルートルート79788月31日23:27storage.conf.sample
rw-r--r-。1ルートルート1058月31日23:27storage_ids.conf.sample
rw-r--r-。1ルートルート74438月31日23:27tracker.conf.sample
これら3つのサンプルファイルのコピーを作成し、.sampleを削除する必要があります。
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
FastDFSのインストールが完了しました。
5.1 トラッカー作業ディレクトリを作成します
このディレクトリは、トラッカーデータとログを保存するようにカスタマイズできます
以下に作成されたディレクトリ:
[ root@docker-01 fdfs]# cd /usr/
[ root@docker-01 usr]# mkdir yunweimao
[ root@docker-01 usr]# cd yunweimao/
[ root@docker-01 yunweimao]# mkdir fastdfs
[ root@docker-01 yunweimao]# cd fastdfs/
[ root@docker-01 fastdfs]# mkdir fastdfs_tracker
[ root@docker-01 fastdfs]# cd fastdfs_tracker/
[ root@docker-01 fastdfs_tracker]# pwd
/usr/yunweimao/fastdfs/fastdfs_tracker
/ usr / yunweimao / fastdfs / fastdfs_tracker#これは私が最終的に作成したディレクトリです
5.2 トラッカーを構成する
[ root@docker-01 fastdfs_tracker]# cd /etc/fdfs
[ root@docker-01 fdfs]# vim tracker.conf
開いた後、次の4つの構成に注意してください。
disable = false#デフォルトで有効
port = 22122#デフォルトのポート番号
base_path = / usr / yunweimao / fastdfs / fastdfs_tracker#作成したばかりのディレクトリ
http.server_port = 6666#デフォルトのポートは8080です
5.3 トラッカーを開始
構成を保存した後、トラッカーを開始します。
[ root@docker-01 fdfs]# service fdfs_trackerd start
開始できない場合、またはsystemctlを使用するように求められた場合は、次のコマンドを使用できます。
systemctl start fdfs_trackerd
成功した後、あなたは見ることができます:
[ root@docker-01 fdfs]# service fdfs_trackerd start
Reloading systemd: [ OK ]
Starting fdfs_trackerd (via systemctl): [ OK ]
作成したトラッカーディレクトリを入力すると、データとログの2つのディレクトリがあることがわかります。
[ root@docker-01 fdfs]# cd /usr/yunweimao/fastdfs/fastdfs_tracker/
[ root@docker-01 fastdfs_tracker]# ll
合計金額0
drwxr-xr-x。2ルートルート608月31日23:35データ
drwxr-xr-x。2ルートルート268月31日23:35ログ
5.4 起動するトラッカーを追加する
[ root@docker-01 fastdfs_tracker]# ll /etc/rc.d/rc.local
実行権限がないことが判明したため、権限が必要です。
[ root@docker-01 fastdfs_tracker]# chmod +x /etc/rc.d/rc.local
追加は次のようになります。
rc.localを変更する
vim /etc/rc.d/rc.local
#! /bin/bash
touch /var/lock/subsys/local
service fdfs_trackerd start
トラッカーのポート監視を確認してください
[ root@docker-01 fastdfs_tracker]# netstat -unltp|grep fdfs
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 14234/fdfs_trackerd
ポート22122は正常に監視されました
ストレージのインストールは、トラッカーと非常によく似ています。
6.1 ストレージ用の作業ディレクトリを構成する
トラッカーとの違いは、ストレージにはデータを格納するためのディレクトリも必要なため、別のfasdfs_storage_dataを作成したことです。
以下は私のディレクトリ構造です:
[ root@docker-01 fastdfs]# ls
fastdfs_storage fastdfs_storage_data fastdfs_tracker
6.2 ストレージ構成ファイルを変更する
storage.confを変更します
vim /etc/fdfs/storage.conf
disabled=false
group_name = group1#グループ名、実際の状況に応じて変更
port = 23000#ストレージポート番号を設定します。デフォルトは23000で、同じグループのストレージポート番号は一貫している必要があります
base_path = / usr / yunweimao / fastdfs / fastdfs_storage#ストレージデータファイルとログディレクトリを設定します
store_path_count = 1#store_pathの数と一致する必要があるストレージパスの数
store_path0 = / usr / yunweimao / fastdfs / fastdfs_storage_data#実際のファイルストレージパス
tracker_server = 172.17.120.50:22122 #My CentOS7ipアドレス
http.server_port = 8888#httpポート番号を設定
変更後にソフトリンクを作成して保存します。
[ root@docker-01 fastdfs]# ln -s /usr/bin/fdfs_storaged /usr/local/bin
6.3 ストレージを開始します
[ root@docker-01 fastdfs]# service fdfs_storaged start
開始できない場合、またはsystemctlを使用するように求められた場合は、代わりに次のコマンドを使用できます。
systemctl start fdfs_storaged
成功すると、次のように表示されます。
[ root@docker-01 fastdfs]# service fdfs_storaged start
Starting fdfs_storaged (via systemctl): [ OK ]
6.4 起動を設定する
rc.localを変更する
vim /etc/rc.d/rc.local
#! /bin/bash
touch /var/lock/subsys/local
service fdfs_trackerd start
service fdfs_storaged start
サービスが開始されているかどうかを確認します。
[ root@docker-01 fastdfs]# netstat -unltp | grep fdfs
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 14234/fdfs_trackerd
tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 14311/fdfs_storaged
サービスは正常に開始されました。
この時点でfastdfsがインストールされており、最後にストレージがトラッカーに登録されているかどうかを確認する必要があります。
表示コマンド:
[ root@docker-01 fastdfs]# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
成功した後、あなたは見ることができます:
ip_addr = 172.17.120.50 (localhost.localdomain) ACTIVE
運用と保守の学習、共有、コミュニケーションに関して、著者はWeChatパブリックアカウント[O&M Cat]を開設しました。興味のある友人はそれをフォローし、参加を歓迎し、運用と保守の知識を一緒に学ぶための独自の小さなサークルを設立できます。
Recommended Posts