[[344018]] 著者は、正確にスケジュールされたタスクと遅延キュー処理機能を備えた、高同時実行シナリオ向けのシンプルで安定したスケーラブルな遅延メッセージ キュー フレームワークを個人的に開発しました。半年以上前にオープンソース化されて以来、10 社を超える中小企業に正確でタイムリーなスケジューリング ソリューションを提供することに成功し、実稼働環境でのテストにも耐えてきました。より多くの人々の利益のために、オープンソース フレームワークのアドレスが次のように提供されます。 https://github.com/sunshinelyz/mykit-delay 序文 実稼働環境では、FastDFS の高可用性を実現し、大規模なファイルの分散ストレージを実現することが必要になることがよくあります。では、FastDFS の高可用性を実現するにはどうすればよいでしょうか?今日は、CentOS 8 サーバーをベースに FastDFS 高可用性クラスター環境を構築します。 サーバーバージョン サーバーのカーネル バージョンを表示するには、サーバーのコマンド ラインに次のコマンドを入力します。 - [root@localhost lib]# cat /etc/redhat-release
- CentOS Linux リリース 8.1.1911 (コア)
クラスター内の各サーバーのカーネル バージョンはリリース 8.1.1911 (コア) であることがわかります。 サーバー計画 ここでは、合計 6 台のサーバー、つまり 2 台のトラッカー サーバー、4 台のストレージ サーバー (そのうち 2 台のストレージ サーバーはグループ 1、2 台のストレージ サーバーはグループ 2) を計画しています。詳細は以下の通りです。 トランカー1: 192.168.175.101 トラッカー2:192.168.175.102 ストレージ1:192.168.175.103 グループ1 ストレージ2:192.168.175.104 グループ1 ストレージ3:192.168.175.105 グループ2 ストレージ4:192.168.175.106 グループ2 環境の準備 FastDFSをダウンロード FastDFS をダウンロードするには、各サーバーで次のコマンドを実行します。 - [root@localhost ソース]# wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz
- [root@localhost ソース]# wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz
- [root@localhost ソース]# wget https://github.com/happyfish100/libfastcommon/archive/V1.0.43.tar.gz
インストール環境の依存関係 各サーバーで次のコマンドを実行して、FastDFS が依存する環境をインストールします。 - [root@localhost dest]# yum install gcc gcc-c++
- [root@localhost dest]# yum install libtool zlib zlib-devel openssl openssl-devel
- [root@localhost dest]# yum -y install pcre pcre-devel libevent libevent-devel perl unzip net-tools wget
FastDFSをインストールする libfastcommonをインストールする 各サーバーで以下のコマンドを順番に実行します。 (1)libfastcommonの圧縮パッケージを解凍する - [root@localhost ソース]# tar -zxvf V1.0.43.tar.gz
(2)コンパイルとインストール - [root@localhost ソース]# cd libfastcommon-1.0.43/
- [root@localhost libfastcommon-1.0.43]# ./make.sh && ./make.sh インストール
(3)実行結果を確認し、インストールが成功したか確認する - [root@localhost libfastcommon-1.0.43]# ls /usr/lib64|grep libfastcommon
- libfastcommon.so
-
- [root@localhost libfastcommon-1.0.43]# ls /usr/lib|grep libfastcommon
- libfastcommon.so
fastdfsをインストールする 各サーバーで以下のコマンドを順番に実行します。 (1)fastdfsを解凍する - [root@localhost ソース]# tar -zxvf V6.06.tar.gz
(2)fastdfsをインストールする - [root@localhost ソース]# cd fastdfs-6.06/
- [root@localhost fastdfs-6.06]# ./make.sh && ./make.sh インストール
(3)fastdfsが正常にインストールされているか確認する - [root@localhost fastdfs-6.06]# ls /usr/bin|grep fdfs
- fdfs_appender_テスト
- fdfs_appender_test1
- fdfs_append_file
- cfs_crc32 は、
- fdfs_delete_file
- fdfs_ダウンロードファイル
- fdfs_ファイル情報
- fdfs_モニター
- fdfs_regenerate_ファイル名
- fdfs_ストレージ
- fdfs_テスト
- 翻訳:
- fdfs_trackerd
- fdfs_アップロードアペンダー
- fdfs_アップロードファイル
トラッカーサービスをインストールして展開する トラッカー設定ファイルをコピーする 2 つのトラッカー サーバーで、次のコマンドを順番に実行します。 - [root@localhost fastdfs-6.06]# cd /etc/fdfs/
- [root@localhost fdfs]# cp client.conf.sample client.conf
- [root@localhost fdfs]# cp tracker.conf.sample tracker.conf
注: これら 2 つのトラッカーはストレージとして使用されないため、storage.conf ファイルを生成する必要はありません。 Nginxをインストールする 2 つのトラッカー サーバーで、次のコマンドを順番に実行します。 注: fastdfs-nginx-module をトラッカーにインストールする必要はありません。 (1) Nginxを解凍する - [root@localhost ソース]# tar -zxvf nginx-1.17.8.tar.gz
(2)nginx設定、http_stub_status_moduleモジュール - [root@localhost fdfs]# cd /usr/ local /source/nginx-1.17.8/
- [root@localhost nginx-1.17.8]# ./configure
(3)Nginxをコンパイルしてインストールする - [root@localhost nginx-1.17.8]# make && make install
(4)インストールが成功したか確認する - [root@localhost nginx-1.17.8]# ls /usr/ local /soft/ | nginxをgrep
- nginx
(5)指定されたコンパイルパラメータが有効かどうかを確認する - [root@localhost fdfs]# /usr/ local /soft/nginx/sbin/nginx -V
- nginx バージョン: nginx/1.17.8
- gcc 8.3.1 20190507 (Red Hat 8.3.1-4) (GCC)でビルド
- 設定引数:
FastDFSの設定と起動 両方のトラッカーで FastDFS を構成して起動します。 (1)トラッカーサービスに必要なディレクトリを作成する - [root@localhost fdfs]# mkdir /data/fastdfs
- [root@localhost fdfs]# mkdir /data/fastdfs/tracker
- [root@localhost fdfs]# chmod 777 /data/fastdfs/tracker
(2)トラッカーサービスを設定し、tracker.confファイルを変更する - [root@localhost fdfs]# vi /etc/fdfs/tracker.conf
base_path の値を上記で作成したディレクトリに変更するだけです。 - ベースパス = /data/fastdfs/tracker
(3)トラッカーサービスを開始する - [root@localhost fdfs]# /etc/init.d/fdfs_trackerd 開始
(4)トラッカーサービスが正常に起動されているか確認する - [root@localhost fdfs]# ps auxfww | grep fdfs
- ルート 15067 0.0 0.0 12320 964 ポイント/0 S+ 15:14 0:00 | | \_ grep
- ルート 15026 0.0 0.1 90160 5940 ? Sl 15:13 0:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
注: fdfs_trackerd が表示される場合、トラッカー サービスが正常に開始されたことを意味します。 (5)トラッカーサービスがポート22122にバインドされているかどうかを確認する - [root@localhost dest]# netstat -anp | grep 22122
- tcp 0 0 0.0.0.0:22122 0.0.0.0:* リッスン 15026/fdfs_trackerd
注: ポート 22122 は、/etc/fdfs/tracker.conf で次のように定義されています。 - # トラッカーサーバーのポート
- ポート = 22122
client.conf を設定する 両方のトラッカーで、fastdfs クライアントが使用する構成ファイルである client.conf を構成します。 (1)client.confを設定する - [root@localhost fdfs]# vi /etc/fdfs/client.conf
次の2つの構成で使用されるトラッカーディレクトリとサーバーアドレスポート - ベースパス = /data/fastdfs/tracker
- トラッカーサーバー = 192.168.175.101:22122
- トラッカーサーバー = 192.168.175.102:22122
注: 両方のトラッカーのclient.conf設定は同じです (2)クライアントの設定から、クライアントはtracker_serverの情報のみを知る必要があることがわかります。トラッカーサーバーの役割は負荷分散とスケジューリングでもある (3)ストレージサーバの機能はファイルを保存することである。クライアントによってアップロードされたファイルは、最終的にストレージ サーバーに保存されます。 テストファイル テスト用のファイルをアップロードするには、client.conf を使用します。 (1)タッカーからファイルをアップロードする - [root@0268c2dc2bf6 ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/a.txt
group1 が返されることに注意してください。この txt ファイルは、両方のマシンの group1 の下にあります。 - [root@d5d19e99e782 docker_tmp]# ls /data/fastdfs/storage/data/00/00
- rBEABF5aTEeAXHF4AAAABHf4XZU792.txt
- [root@f201111d0698 docker_tmp]# ls /data/fastdfs/storage/data/00/00
- rBEABF5aTEeAXHF4AAAABHf4XZU792.txt
(2)ファイルをアップロードするグループを指定する 特定のグループにアップロードしたい場合はどうすればいいでしょうか?例: グループ2にアップロード - [root@0268c2dc2bf6 ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/a.txt 192.168.175.105:23000
- グループ2/M00/00/00/rBEABl5aUAqAXLCZAAAABHf4XZU043.txt
注: グループ2 内の任意のマシンの IP とポートを指定するだけです。 (3)効果を確認する - [root@494ac47d63f8 fdfs]# ls /data/fastdfs/storage/data/00/00
- rBEABl5aUAqAXLCZAAAABHf4XZU043.txt
- [root@59fa1efff362 fdfs]# ls /data/fastdfs/storage/data/00/00
- rBEABl5aUAqAXLCZAAAABHf4XZU043.txt
ストレージサービスのインストールと展開 デフォルトの設定ファイルを生成する 4 つのストレージで、fastdfs を起動するためのデフォルトの構成ファイルを生成します。 - [root@localhost fastdfs-6.06]# cd /etc/fdfs/
- [root@localhost fdfs]# cp storage.conf.sample ストレージ.conf
- [root@localhost fdfs]# cp client.conf.sample client.conf
注: トラッカー サービスはストレージ上で実行されなくなったため、tracker.conf を生成する必要はありません。 Nginxをインストールする 4つのストレージにnginxとfastdfs-nginx-moduleをインストールする (1) nginxを解凍する - [root@localhost ソース]# tar -zxvf nginx-1.17.8.tar.gz
(2)fastdfs-nginx-moduleを解凍する - [root@localhost ソース]# tar -zxvf V1.22.tar.gz
(3)設定ファイルを修正し、/usr/localを/usrに置き換える - [root@localhost ソース]# cd fastdfs-nginx-module-1.22/
- [root@localhost fastdfs-nginx-module-1.22]# cd src
- [root@localhost src]# vi 設定
(4) Nginxの設定、fastdfs-nginx-moduleとhttp_stub_status_moduleモジュールを追加する - [root@localhost fdfs]# cd /usr/ local /source/nginx-1.17.8/
- [root@localhost nginx-1.17.8]# ./configure
(5)nginxをコンパイルしてインストールする - [root@localhost nginx-1.17.8]# make && make install
(6)インストールが成功したか確認する - [root@localhost nginx-1.17.8]# ls /usr/ local /soft/ | nginxをgrep
- nginx
(7)指定されたコンパイルパラメータが有効かどうかを確認する - [root@localhost fdfs]# /usr/ local /soft/nginx/sbin/nginx -V
- nginx バージョン: nginx/1.17.8
- gcc 8.3.1 20190507 (Red Hat 8.3.1-4) (GCC)でビルド
- 設定引数:
ストレージサービスを設定して開始する 4台のストレージマシンでストレージサービスを設定して起動する (1)ストレージサービスに必要なディレクトリを作成する - [root@localhost fdfs]# mkdir /data/fastdfs/storage
- [root@localhost fdfs]# chmod 777 /data/fastdfs/storage/
(2)ストレージサービスの設定 ストレージ構成ファイルを編集します。 - [root@localhost fdfs]# vi /etc/fdfs/storage.conf
構成項目は次のとおりです。 - グループ名 = グループ1
- #上記で作成したストレージディレクトリへのbase_pathを設定します
- ベースパス = /data/fastdfs/storage
- #store_path: ストレージが配置されているディレクトリ。複数のパスを設定できます。 0から始まることに注意してください。
- store_path0 = /data/fastdfs/ストレージ
- #tracker_server の IP とポート
- トラッカーサーバー = 192.168.175.101:22122
- トラッカーサーバー = 192.168.175.102:22122
- #httpサービスのポートを指定する
- http.server_port = 80
構成の違い: - 192.168.175.103 グループ名 = グループ1
- 192.168.175.104 グループ名 = グループ1
- 192.168.175.105 グループ名 = グループ2
- 192.168.175.106 グループ名 = グループ2
(3)ストレージサービスを開始する - [root@localhost fdfs]# /etc/init.d/fdfs_storaged 開始
- fdfs_storaged を起動しています (systemctl 経由): [ OK ]
(4)ストレージサービスが正常に開始されているか確認する - [root@localhost fdfs]# ps auxfww | grep fdfs
- ルート 15630 0.0 0.0 12320 972 ポイント/0 S+ 15:46 0:00 | | \_ grep
- ルート 15026 0.0 0.1 155696 6964 ? Sl 15:13 0:00 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
- ルート 15573 2.7 1.7 150736 66292 ? Sl 15:45 0:02 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf
注: fdfs_storaged が表示される場合、ストレージ サービスが正常に開始されたことを意味します。 (5)ストレージサービスがポート23000にバインドされているかどうかを確認します。 - [root@localhost fdfs]# netstat -anp | grep 23000
- tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 15573/fdfs_storaged
注: ポート 23000 は、構成ファイル /etc/fdfs/storage.conf で次のように定義されています。 - # ストレージサーバポート
- ポート = 23000
fastdfs-nginx-module を設定する 4台のストレージサーバーでfastdfs-nginx-moduleを構成する (1)設定ファイルの生成 - [root@localhost nginx-1.17.8]# cp /usr/ local /source/fastdfs-nginx-module-1.22/src/mod_fastdfs.conf /etc/fdfs/
(2)設定ファイルを編集する - [root@localhost nginx-1.17.8]# vi /etc/fdfs/mod_fastdfs.conf
以下の項目を設定します - グループ名=グループ1
- 接続タイムアウト=10
- トラッカーサーバー=192.168.175.101:22122
- トラッカーサーバー=192.168.175.102:22122
- url_have_group_name = true
- store_path0=/data/fastdfs/ストレージ
- グループ数 = 2
-
- [グループ1]
-
- グループ名=グループ1
- ストレージサーバーポート=23000
- ストアパス数=1
- store_path0=/data/fastdfs/ストレージ
-
- [グループ2]
-
- グループ名=グループ2
- ストレージサーバーポート=23000
- ストアパス数=1
- store_path0=/data/fastdfs/ストレージ
注: 最上位の group_name: マシンが group1 に属している場合、値は group1 になります。マシンがグループ2に属している場合、値はグループ2になります。 説明: url_have_group_name = true。注意: この項目を忘れないでください。nginx が正しく動作しなくなります。 (3)他の2つのWebアクセス構成ファイルをfdfs構成ディレクトリにコピーします。 - [root@d5d19e99e782 /]# cp /usr/ローカル/source/fastdfs-6.06/conf/http.conf /etc/fdfs/
- [root@d5d19e99e782 /]# cp /usr/ローカル/source/fastdfs-6.06/conf/mime.types /etc/fdfs/
Nginx を設定する 4つのストレージサーバーでnginxを構成する nginx 設定ファイルを編集します。 - [root@localhost conf]# vi /usr/ local /soft/nginx/conf/nginx.conf
サーバーリスン80のサーバー構成では、 場所を追加 - 場所 ~/グループ([0-9]) {
- ルート /data/fastdfs/storage/data;
- ngx_fastdfs_モジュール;
-
- }
nginxを起動する (1) Nginxを起動する - [root@localhost ストレージ]# /usr/ local /soft/nginx/sbin/nginx
(2)nginxが正常に起動しているか確認する - [root@localhost ストレージ]# ps auxfww | nginxをgrep
- ルート 24590 0.0 0.0 12320 980 ポイント/0 S+ 16:44 0:00 | | _ grep
- ルート 24568 0.0 0.0 41044 428 ? Ss 16:44 0:00 \_ nginx: マスタープロセス /usr/ローカル/soft/nginx/sbin/nginx
- 誰もいない 24569 0.0 0.1 74516 4940 ? S 16:44 0:00 \_ nginx: ワーカープロセス
トラッカーサービスの設定 トラッカーサービスの設定 注: この手順は、4 つのストレージ サーバーの構成が完了した後に実行する必要があります。アップストリームの負荷分散に Nginx を使用する理由は、1 つのアドレスを通じてバックエンド上の複数のグループにアクセスするためです。 (1)ファイルをアップロードしたら、ブラウザから各ストレージのNginxにアクセスします。 例えば: - http://192.168.175.103/group1/M00/00/00/rBEABF5aTRiAEuHwAAAABHf4XZU322.txt
- http://192.168.175.104/group1/M00/00/00/rBEABF5aTRiAEuHwAAAABHf4XZU322.txt
- http://192.168.175.105/group2/M00/00/00/rBEABl5aUAqAXLCZAAAABHf4XZU043.txt
- http://192.168.175.106/group2/M00/00/00/rBEABl5aUAqAXLCZAAAABHf4XZU043.txt
注: 各ストレージ サーバーの IP アドレスの後に、アップロード時に返されるアドレスが続きます。注意: 各マシンが属するグループにのみアクセスできます。 - 統一されたIPアドレスでアクセスしたい場合
- Nginxのアップストリームを介してバックエンドマシンにアクセスする必要がある
- このNginxはトラッカー上で実行されるはずです
(2)nginx.confを設定する - [root@0268c2dc2bf6 ~]# vi /usr/ローカル/soft/nginx/conf/nginx.conf
コンテンツ: バックエンドストレージにアップストリームを追加します。 - アップストリーム fdfs_group1 {
- サーバー 192.168.175.103:80 重み=1 max_fails=2 fail_timeout=30s;
- サーバー 192.168.175.104:80 重み=1 max_fails=2 fail_timeout=30s;
- }
-
- アップストリーム fdfs_group2 {
- サーバー 192.168.175.105:80 重み=1 max_fails=2 fail_timeout=30s;
- サーバー 192.168.175.106:80 重み=1 max_fails=2 fail_timeout=30s;
- }
グループによる URL の処理 - 場所 /group1 {
- proxy_next_upstream http_502 http_504 エラー タイムアウト invalid_header;
- proxy_pass http://fdfs_group1;
- 有効期限は30日です。
- }
-
- 場所 /group2 {
- proxy_next_upstream http_502 http_504 エラー タイムアウト invalid_header;
- proxy_pass http://fdfs_group2;
- 有効期限は30日です。
-
- }
(3)テストを再開する - [root@0268c2dc2bf6 ~]# /usr/ローカル/soft/nginx/sbin/nginx -s 停止
- [root@0268c2dc2bf6 ~]# /usr/ローカル/soft/nginx/sbin/nginx
ブラウザでアクセス: - http://192.168.175.101/group1/M00/00/00/rBEABF5aTRiAEuHwAAAABHf4XZU322.txt
- http://192.168.175.101/group2/M00/00/00/rBEABl5aUAqAXLCZAAAABHf4XZU043.txt
この記事はWeChatの公開アカウント「Glacier Technology」から転載したものです。下のQRコードからフォローできます。この記事を転載する場合は、Glacier Technology 公式アカウントまでご連絡ください。 |