CentOS7ビルドFastDFS分散ファイルシステム(オン)

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(ボリューム名とファイル名)です。

トラッカーは使用可能なストレージを返します。

クライアントはストレージと直接通信して、ファイルのダウンロードを完了します。

  1. FastDFSインストールの準備

著者の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

  1. libfastcommonをインストールします

最初に解凍ツールをインストールします。

[ 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

  1. FastDFSをインストールする

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

これら3つのサンプルファイルのコピーを作成し、.sampleを削除する必要があります。

cp client.conf.sample client.conf

cp storage.conf.sample storage.conf

cp tracker.conf.sample tracker.conf

FastDFSのインストールが完了しました。

  1. トラッカーをインストールする

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

THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES

It is highly advisable to create own systemd services or udev rules

to run scripts during boot instead of using this file.

In contrast to previous versions due to parallel execution during boot

this script will NOT be run after all other services.

Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure

that this script will be executed during boot.

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は正常に監視されました

  1. ストレージをインストールする

ストレージのインストールは、トラッカーと非常によく似ています。

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

THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES

It is highly advisable to create own systemd services or udev rules

to run scripts during boot instead of using this file.

In contrast to previous versions due to parallel execution during boot

this script will NOT be run after all other services.

Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure

that this script will be executed during boot.

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

サービスは正常に開始されました。

  1. 検証の統合

この時点で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

CentOS7ビルドFastDFS分散ファイルシステム(オン)
CentOS7ビルドFastDFS分散ファイルシステム(下記)
centos7でk8s1.9.9をビルドする
ジェンキンスはセントスに基づいて構築されています
CentOSでMariaDBレプリケーションを構築する
Centosシステムにdockerをインストールします
dockerに基づいてElasticsearch6.2.4(centos)を構築する
LinuxでNginx環境を構築する(CentOS)
ubuntuでファイルサーバーを構築する
CentOSに基づいてDiscuzフォーラムを構築する
CentOSに基づいてWeChatアップルトサービスを構築する
CentOSに基づいてWeChatアップルトサービスを構築する
Centos 7(仮想ホストを含む)に基づいてNginxを構築する
jira7.8レポートサービスはcentos7.4システムでは利用できません
CentOS7でScaleIO分散ストレージクラスターを構築する
Centos6.9システムのいくつかの基本的な最適化(2018/04/19更新)
セントスシステム管理
CentOS7ビルドジェンキンス
Centosビルドlnmp
Centos7ビルドpython3.8.5 + scrapy + gerapy
CentOS8はfastdfs6.06をインストールします
centos7.2でLAMP環境を構築する方法
Centosサーバーでgiteaをセットアップする方法を教える3分
Centos7でのLVMによるファイルシステムのオンライン拡張
LinuxシステムへのJDK8のインストールに関する詳細なチュートリアル(CentOS7のインストール)
CentOS7.3 64ビット、ビルドZabbix3.4
Centos7にDockerをインストールする
01 CentOS7.6スイッチシステム言語
CentOSビルドプライベートgit
Centos7.4はLNMPをインストールします
Linux(centos7)ビルドgitlab
CentOS7.5-1804システムカーネルのアップグレード
CentOS6でOcservを構成する
Centos6.9ビルドrabbitmq3.6.8クラスター
Nodejsはcentos7にインストールされます
CentOS8にFFmpegをインストールします
Centos7.6ビルドLNMP環境
CentOS7にRabbitMQをインストールします
CentosにNode.jsをインストールします
CentOSシステムの起動プロセス
Centos7ビルドKubernetesクラスター
VirtualBoxはCentOSシステムをインストールします
Mavenはcentos7にインストールします
CentOS7にMongoDBをインストールします
CentOS8にSurelogをインストールする
CentOSでHadoopを構築する
centos7にvuepressをデプロイする
centos7へのOpenjdkのインストール
Centos7ビルドDNSサービス
Jenkinsをcentos7にインストールします
CentOS7でRapidSVNを使用する
セントスにRabbitMQをインストールする
CentOS7にRabbitMQをインストールします
centos6.5にDockerをインストールします
セントスにオラクルをインストールする
Centos7にElasticsearch6をインストールします
CentOS7にRabbitMQをインストールします
Jenkinをcentos7にデプロイします
CentOS7ビルドLNMP環境
Centos7.2システム最適化オリジナル
Centosシステムプロセス管理