著者は、正確なタイミングタスクと遅延キュー処理機能を備えた、同時性の高いシナリオで、シンプルで安定したスケーラブルな遅延[メッセージキュー](https://cloud.tencent.com/product/cmq?from=10680)フレームワークを個人的に開発しました。半年以上のオープンソース以来、それは十数以上の中小企業に正確なタイミングスケジューリングソリューションを提供することに成功し、生産環境のテストに耐えてきました。より多くの子供たちの靴に利益をもたらすために、オープンソースフレームワークのアドレスが与えられました:
https://github.com/sunshinelyz/mykit-delay
PS:スターソースコードへようこそ。素晴らしいコードを作成することもできます。
「[** [FastDFS]の友人は、CentOS 8サーバーでFastDFS環境を構築すると、常にエラーが報告されると言っていましたか? **](https://mp.weixin.qq.com/s?__biz=Mzg3MzE1NTIzNA==&mid=2247487776&idx=1&sn=f2e97296f36c52d94c8dfa3f0f1292c1&chksm=cee50eedf99287fbac48600cfd56ad0401a407838790e403174720f05ce38826c31bbc09aa68&token=1639059128&lang=zh_CN&scene=21#wechat_redirect)」の記事では、CentOS8サーバーでFastDFS環境をセットアップする方法について詳しく説明しています。実稼働環境では、ファイルの大規模な分散ストレージを実現するために、FastDFSの高可用性を実現する必要があることがよくあります。では、FastDFSの高可用性を実現するにはどうすればよいでしょうか。現在、CentOS8サーバーに基づいてFastDFSの高可用性クラスター環境を構築しています。
サーバーのコマンドラインで次のコマンドを入力して、サーバーのカーネルバージョンを表示します。
[ root@localhost lib]# cat /etc/redhat-release
CentOS Linux release 8.1.1911(Core)
ご覧のとおり、クラスター内の各サーバーのカーネルバージョンはリリース8.1.1911(コア)です。
ここでは、合計6台のサーバーを計画します。つまり、2台のトラッカーサーバー、4台のストレージサーバーのうち、2台のストレージサーバーがグループ1、2台のストレージサーバーがグループ2です。詳細は以下の通りです。
tranker1:192.168.175.101
tracker2:192.168.175.102
storage1:192.168.175.103 group1
storage2:192.168.175.104 group1
storage3:192.168.175.105 group2
storage4:192.168.175.106 group2
各サーバーで次のコマンドを実行して、FastDFSをダウンロードします。
[ root@localhost source]# wget https://github.com/happyfish100/fastdfs/archive/V6.06.tar.gz
[ root@localhost source]# wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.22.tar.gz
[ root@localhost source]# 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
各サーバーで次のコマンドを順番に実行します。
(1)libfastcommonの圧縮パッケージを解凍します
[ root@localhost source]# tar -zxvf V1.0.43.tar.gz
(2)コンパイルしてインストールするコンパイルしてインストールする
[ root@localhost source]# cd libfastcommon-1.0.43/[root@localhost libfastcommon-1.0.43]# ./make.sh &&./make.sh install
(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
各サーバーで次のコマンドを順番に実行します。
(1)fastdfsを解凍します
[ root@localhost source]# tar -zxvf V6.06.tar.gz
(2)fastdfsをインストールします
[ root@localhost source]# cd fastdfs-6.06/[root@localhost fastdfs-6.06]# ./make.sh &&./make.sh install
(3)fastdfsが正常にインストールされているかどうかを確認します
[ root@localhost fastdfs-6.06]# ls /usr/bin|grep fdfs
fdfs_appender_test
fdfs_appender_test1
fdfs_append_file
fdfs_crc32
fdfs_delete_file
fdfs_download_file
fdfs_file_info
fdfs_monitor
fdfs_regenerate_filename
fdfs_storaged
fdfs_test
fdfs_test1
fdfs_trackerd
fdfs_upload_appender
fdfs_upload_file
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
**注:storage.confファイルを生成する必要はありません。これら2つのトラッカーはストレージとして使用されません。 ****
2つのトラッカーサーバーで、次のコマンドを順番に実行します。
注:fastdfs-nginx-moduleをトラッカーにインストールする必要はありません
(1)Nginxを解凍します
[ root@localhost source]# 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 --prefix=/usr/local/soft/nginx --with-http_stub_status_module
(3)Nginxをコンパイルしてインストールします
[ root@localhost nginx-1.17.8]# make && make install
(4)インストールが成功したかどうかを確認します
[ root@localhost nginx-1.17.8]# ls /usr/local/soft/| grep nginx
nginx
(5)指定したコンパイルパラメータが機能するかどうかを確認します
[ root@localhost fdfs]# /usr/local/soft/nginx/sbin/nginx -V
nginx version: nginx/1.17.8
built by gcc 8.3.120190507(Red Hat 8.3.1-4)(GCC)
configure arguments:--prefix=/usr/local/soft/nginx --with-http_stub_status_module
2つのトラッカーで、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の値を上記で作成したディレクトリに変更するだけです
base_path =/data/fastdfs/tracker
(3)トラッカーサービスを開始する
[ root@localhost fdfs]# /etc/init.d/fdfs_trackerd start
(4)トラッカーサービスが正常に開始されているかどうかを確認します
[ root@localhost fdfs]# ps auxfww | grep fdfs
root 150670.00.012320964 pts/0 S+15:140:00|| \_ grep --color=auto fdfs
root 150260.00.1901605940? Sl 15:130:00/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
注:fdfs_trackerdが表示されている場合は、トラッカーサービスが正常に開始されたことを意味します。
(5)トラッカーサービスがポート22122にバインドされているかどうかを確認します
[ root@localhost dest]# netstat -anp | grep 22122
tcp 000.0.0.0:221220.0.0.0:* LISTEN 15026/fdfs_trackerd
注:ポート22122は、以下に示すように/etc/fdfs/tracker.confで定義されています。
# the tracker server port
port =22122
両方のトラッカーで、client.confを構成し、fastdfsクライアントが使用する構成ファイルを構成します。
(1)client.confを構成します
[ root@localhost fdfs]# vi /etc/fdfs/client.conf
次の2つの構成で使用されるトラッカーディレクトリとサーバーアドレスポート
base_path =/data/fastdfs/tracker
tracker_server =192.168.175.101:22122
tracker_server =192.168.175.102:22122
注:2つのトラッカーのclient.conf構成は同じです
(2)クライアントの構成から、クライアントはtracker_serverの情報を知るだけでよいことがわかります。トラッカーサーバーの役割も[負荷分散](https://cloud.tencent.com/product/clb?from=10680)とスケジューリングです
(3)ストレージサーバーの役割は[ファイルストレージ](https://cloud.tencent.com/product/cfs?from=10680)であり、クライアントによってアップロードされたファイルは最終的にストレージサービスに保存されます
client.confを使用して、テストするファイルをアップロードします。
(1)タッカーからファイルをアップロードする
[ root@0268c2dc2bf6 ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/a.txt group1/M00/00/00/rBEABF5aTEeAXHF4AAAABHf4XZU792.txt
返されるgroup1はgroup1であることに注意してください。このtxtファイルは、group1の下の2台のマシンにあります。
[ 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)グループアップロードファイルを指定する
特定のグループにアップロードしたい場合はどうすればよいですか?例:group2へのアップロードを指定します
[ root@0268c2dc2bf6 ~]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/a.txt 192.168.175.105:23000
group2/M00/00/00/rBEABl5aUAqAXLCZAAAABHf4XZU043.txt
注:group2のいずれかの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 storage.conf
[ root@localhost fdfs]# cp client.conf.sample client.conf
注:トラッカーサービスがストレージで実行されなくなったため、tracker.confを生成する必要はありません。
4つのストレージ:nginxとfastdfs-nginx-moduleをインストールします
(1)nginxを解凍します
[ root@localhost source]# tar -zxvf nginx-1.17.8.tar.gz
(2)fastdfs-nginx-moduleを解凍します
[ root@localhost source]# tar -zxvf V1.22.tar.gz
(3)構成ファイルを変更し、/ usr / localを/ usrに置き換えます。
[ root@localhost source]# cd fastdfs-nginx-module-1.22/[root@localhost fastdfs-nginx-module-1.22]# cd src
[ root@localhost src]# vi config
(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 --prefix=/usr/local/soft/nginx --with-http_stub_status_module --add-module=/usr/local/source/fastdfs-nginx-module-1.22/src/
(5)nginxをコンパイルしてインストールします
[ root@localhost nginx-1.17.8]# make && make install
(6)インストールが成功したかどうかを確認します
[ root@localhost nginx-1.17.8]# ls /usr/local/soft/| grep nginx
nginx
(7)指定したコンパイルパラメータが機能するかどうかを確認します
[ root@localhost fdfs]# /usr/local/soft/nginx/sbin/nginx -V
nginx version: nginx/1.17.8
built by gcc 8.3.120190507(Red Hat 8.3.1-4)(GCC)
configure arguments:--prefix=/usr/local/soft/nginx --with-http_stub_status_module --add-module=/usr/local/source/fastdfs-nginx-module-1.22/src/
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
各構成アイテムには次のものが含まれます。
group_name = group1
# ベースを構成する_パスは上で作成されたストレージディレクトリです
base_path =/data/fastdfs/storage
# store_パス:ストレージが配置されているディレクトリ。複数設定できます。0から開始するように注意してください。
store_path0 =/data/fastdfs/storage
# tracker_サーバーのIPとポート
tracker_server =192.168.175.101:22122
tracker_server =192.168.175.102:22122
# httpサービスのポートを指定します
http.server_port =80
構成の違い:
192.168.175.103 group_name = group1
192.168.175.104 group_name = group1
192.168.175.105 group_name = group2
192.168.175.106 group_name = group2
(3)ストレージサービスを開始します
[ root@localhost fdfs]# /etc/init.d/fdfs_storaged start
fdfsの開始_storaged(via systemctl): [決定する]
(4)ストレージサービスが正常に開始されているかどうかを確認します
[ root@localhost fdfs]# ps auxfww | grep fdfs
root 156300.00.012320972 pts/0 S+15:460:00|| \_ grep --color=auto fdfs
root 150260.00.11556966964? Sl 15:130:00/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
root 155732.71.715073666292? Sl 15:450:02/usr/bin/fdfs_storaged /etc/fdfs/storage.conf
注:ストレージサービスが正常に開始されたことを示すfdfs_storagedを参照してください
(5)ストレージサービスがポートにバインドされているかどうかを確認します:23000
[ root@localhost fdfs]# netstat -anp | grep 23000
tcp 000.0.0.0:230000.0.0.0:* LISTEN 15573/fdfs_storaged
注:23000ポートは、構成ファイル/etc/fdfs/storage.confで次のように定義されています。
# the storage server port
port =23000
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
次の項目を構成します
group_name=group1
connect_timeout=10
tracker_server=192.168.175.101:22122
tracker_server=192.168.175.102:22122
url_have_group_name =true
store_path0=/data/fastdfs/storage
group_count =2[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs/storage
[ group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/data/fastdfs/storage
説明:最上位のgroup_name:マシンがgroup1に属している場合、値はgroup1です。マシンがgroup2に属している場合、値はgroup2です。
説明:url_have_group_name = true。 注:このアイテムをお見逃しなく。nginxが異常に動作する原因になります
(3)Webアクセスに使用される他の2つの構成ファイルをfdfs構成ディレクトリーにコピーします。
[ root@d5d19e99e782 /]# cp /usr/local/source/fastdfs-6.06/conf/http.conf /etc/fdfs/[root@d5d19e99e782 /]# cp /usr/local/source/fastdfs-6.06/conf/mime.types /etc/fdfs/
4つのストレージサーバーの場合:nginxを構成します
nginxの構成ファイルを編集します。
[ root@localhost conf]# vi /usr/local/soft/nginx/conf/nginx.conf
サーバーリッスン80のサーバー構成では、
位置を追加する
location ~/group([0-9]){
root /data/fastdfs/storage/data;
ngx_fastdfs_module;}
(1)Nginxを起動します
[ root@localhost storage]# /usr/local/soft/nginx/sbin/nginx
(2)nginxが正常に起動したかどうかを確認します
[ root@localhost storage]# ps auxfww | grep nginx
root 245900.00.012320980 pts/0 S+16:440:00|| \_ grep --color=auto nginx
root 245680.00.041044428? Ss 16:440:00 \_ nginx: master process /usr/local/soft/nginx/sbin/nginx
nobody 245690.00.1745164940? S 16:440:00 \_ nginx: worker process
注:この手順は、4つのストレージサーバーが構成されるのを待ってから続行します。アップストリームの負荷分散にn = 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アドレスの後に、アップロード時に返されるアドレスが続きます。注:各マシンが配置されているグループにのみアクセスできます。
(2)nginx.confを構成します
[ root@0268c2dc2bf6 ~]# vi /usr/local/soft/nginx/conf/nginx.conf
コンテンツ:
バックエンドストレージにアップストリームを追加します。
upstream fdfs_group1 {
server 192.168.175.103:80 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.175.104:80 weight=1 max_fails=2 fail_timeout=30s;}
upstream fdfs_group2 {
server 192.168.175.105:80 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.175.106:80 weight=1 max_fails=2 fail_timeout=30s;}
グループでURLを処理する
location /group1 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://fdfs_group1;
expires 30d;}
location /group2 {
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_pass http://fdfs_group2;
expires 30d;}
(3)テストを再開します
[ root@0268c2dc2bf6 ~]# /usr/local/soft/nginx/sbin/nginx -s stop
[ root@0268c2dc2bf6 ~]# /usr/local/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
Recommended Posts