FastDFS 集羣的安裝、配置、使用

Dubbo視頻教程--高可用架構篇--第09節--FastDFS集羣的安裝、配置、使用.pdfFastDFS 集羣的安裝、配置、使用  

FastDFS 介紹(參考:http://www.oschina.net/p/fastdfs) 

  FastDFS 是一個開源的分佈式文件系統,它對文件進行管理,功能包括:文件存儲、文件同步、文件

訪問(文件上傳、文件下載)等,解決了大容量存儲和負載均衡的問題。特別適合以文件爲載體的在線服務,如相冊網站、視頻網站等等。 

  FastDFS 服務端有兩個角色:跟蹤器(tracker)和存儲節點(storage)。跟蹤器主要做調度工作,在訪問上起負載均衡的作用。存儲節點存儲文件,完成文件管理的所有功能:存儲、同步和提供存取接口,FastDFS 同時對文件的 meta data 進行管理。所謂文件的 meta data 就是文件的相關屬性,以鍵值對(key value pair)方式表示,如:width=1024,其中的 key 爲 width,value 爲 1024。文件 meta data 是文件屬性列表,可以包含多個鍵值對。FastDFS 系統結構如下圖所示:

wKioL1jfdpLAVWG3AAZIYGTXxxY611.png-wh_50  

spacer.gif

跟蹤器和存儲節點都可以由一臺多臺服務器構成。跟蹤器和存儲節點中的服務器均可以隨時增加或下

線而不會影響線上服務。其中跟蹤器中的所有服務器都是對等的,可以根據服務器的壓力情況隨時增加或

減少。 

爲了支持大容量,存儲節點(服務器)採用了分卷(或分組)的組織方式。存儲系統由一個或多個卷

組成,卷與卷之間的文件是相互獨立的,所有卷的文件容量累加就是整個存儲系統中的文件容量。一個卷

可以由一臺或多臺存儲服務器組成,一個卷下的存儲服務器中的文件都是相同的,卷中的多臺存儲服務器

起到了冗餘備份和負載均衡的作用。在卷中增加服務器時,同步已有的文件由系統自動完成,同步完成後,

系統自動將新增服務器切換到線上提供服務。當存儲空間不足或即將耗盡時,可以動態添加捲。只需要增

加一臺或多臺服務器,並將它們配置爲一個新的卷,這樣就擴大了存儲系統的容量。FastDFS 中的文件標識

分爲兩個部分:卷名和文件名,二者缺一不可。   

  

FastDFS 上傳文件交互過程:  

wKiom1jfdtegOaEzAABwt-C77qE899.pngspacer.gif

1. client 詢問 tracker 上傳到的 storage,不需要附加參數; 

2. tracker 返回一臺可用的 storage; 

3. client 直接和 storage 通訊完成文件上傳。 

客戶端 client 發起對 FastDFS 的文件傳輸動作,是通過連接到某一臺 Tracker Server 的指定端

口來實現的,Tracker Server 根據目前已掌握的信息,來決定選擇哪一臺 Storage Server ,然後將這個

Storage Server 的地址等信息返回給 client,然後 client 再通過這些信息連接到這臺 Storage Server,

將要上傳的文件傳送到給 Storage Server 上。   

FastDFS 下載文件交互過程:  

spacer.gifwKioL1jfdwbDpLU0AAByqTf22ew101.png

1. client 詢問 tracker 下載文件的 storage,參數爲文件標識(卷名和文件名); 

2. tracker 返回一臺可用的 storage; 

3. client 直接和 storage 通訊完成文件下載。        

  

FastDFS 集羣規劃: 

跟蹤服務器 1:192.168.1.131   edu-dfs-tracker-1 

跟蹤服務器 2:192.168.1.132   edu-dfs-tracker-2 

存儲服務器 1:192.168.1.135   edu-dfs-storage-group1-1 

存儲服務器 2:192.168.1.136   edu-dfs-storage-group1-2 

存儲服務器 3:192.168.1.137   edu-dfs-storage-group2-1 

存儲服務器 4:192.168.1.138   edu-dfs-storage-group2-2 

環境:CentOS 6.8 

用戶:root  

數據目錄:/fastdfs (注:數據目錄按你的數據盤掛載路徑而定) 

安裝包: 

FastDFS_v5.05.tar.gz 

libfastcommon-master.zip(是從 FastDFS 和 FastDHT 中提取出來的公共 C 函數庫) 

fastdfs-nginx-module_v1.16.tar.gz 

nginx-1.6.2.tar.gz 

fastdfs_client_java._v1.25.tar.gz 

源碼地址:https://github.com/happyfish100/  

下載地址:http://sourceforge.net/projects/fastdfs/files/  

官方論壇:http://bbs.chinaunix.net/forum-240-1.html   

spacer.gif

Group 1

Tracker 1 ( FastDFS + Nginx )

Tracker 2 ( FastDFS + Nginx )

Proxy 1 ( Keepalived + Nginx )

FastDFS集羣

Proxy 2 ( Keepalived + Nginx )

VIP

Storage 1 ( FastDFS + Nginx )

Storage 2 ( FastDFS + Nginx )

Storage 3 ( FastDFS + Nginx )

Storage 4 ( FastDFS + Nginx )

Group 2 

本教程的 FastDFS 文件系統集羣的最終結構圖      

 spacer.gifwKiom1jfaeTzjzs-AAFKMZSG3Gg745.png-wh_50

一、FastDFS 的安裝(所有跟蹤服務器和存儲服務器均執行如下操作) 

1、編譯和安裝所需的依賴包: 

yum install make cmake gcc gcc-c++

2、安裝 libfastcommon (https://github.com/happyfish100/libfastcommon) 

(1)上傳或下載 libfastcommon-master.zip 到/usr/local/src 目錄,解壓 

cd /usr/local/src/ 
unzip libfastcommon-master.zip 
cd libfastcommon-master

(3) 編譯、安裝 

./make.sh 
./make.sh install

libfastcommon 默認安裝到了 

/usr/lib64/libfastcommon.so 

/usr/lib64/libfdfsclient.so 

(4)因爲 FastDFS 主程序設置的 lib 目錄是/usr/local/lib,所以需要創建軟鏈接. 

ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so 
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so 
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so 
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so

3、安裝 FastDFS (https://github.com/happyfish100/fastdfs/releases) 

(1)上傳或下載 FastDFS 源碼包(FastDFS_v5.05.tar.gz)到 /usr/local/src 目錄,解壓 

cd /usr/local/src/ 
tar -zxvf FastDFS_v5.05.tar.gz 
cd FastDFS

(3)編譯、安裝(編譯前要確保已經成功安裝了 libfastcommon) 

./make.sh 
./make.sh install

採用默認安裝的方式安裝,安裝後的相應文件與目錄: 

A、服務腳本在: 

/etc/init.d/fdfs_storaged 

/etc/init.d/fdfs_tracker 

B、配置文件在(樣例配置文件): 

/etc/fdfs/client.conf.sample 

/etc/fdfs/storage.conf.sample 

/etc/fdfs/tracker.conf.sample 

C、命令工具在/usr/bin/目錄下的: 

fdfs_appender_test 

fdfs_appender_test1 

fdfs_append_file 

fdfs_crc32 

fdfs_delete_file 

fdfs_download_file 

fdfs_file_info 

fdfs_monitor 

fdfs_storaged 

fdfs_test 

fdfs_test1 

fdfs_trackerd 

fdfs_upload_appender 

fdfs_upload_file 

stop.sh 

restart.sh  

(4)因爲 FastDFS 服務腳本設置的 bin 目錄是/usr/local/bin,但實際命令安裝在/usr/bin,可以進入 /user/bin 目錄使用以下命令查看 fdfs 的相關命令: 

cd /usr/bin/
ls | grep fdfs

因此需要修改 FastDFS 服務腳本中相應的命令路徑,也就是把/etc/init.d/fdfs_storaged 

和/etc/init.d/fdfs_tracker 兩個腳本中的/usr/local/bin 修改成/usr/bin: 

vi /etc/init.d/fdfs_trackerd

使用查找替換命令進統一修改:%s+/usr/local/bin+/usr/bin 

vi /etc/init.d/fdfs_storaged

使用查找替換命令進統一修改:%s+/usr/local/bin+/usr/bin  

注意:以上操作無論是配置 tracker 還是配置 storage 都是必須的,而 tracker 和 storage 的區別主要是在安裝完 fastdfs 之後的配置過程中。

   

二、配置 FastDFS 跟蹤器 Tracker (192.168.1.131 、192.168.1.132) 1、 複製 FastDFS 跟蹤器樣例配置文件,並重命名: 

cd /etc/fdfs/  
cp tracker.conf.sample tracker.conf

  

2、 編輯跟蹤器配置文件: # /etc/fdfs/tracker.conf 

修改的內容如下:

vi /etc/fdfs/tracker.conf 
disabled=false              #啓用配置文件 
port=22122                  #tracker 的端口號,一般採用 22122 這個默認端口 
base_path=/fastdfs/tracker  #tracker 的數據文件和日誌目錄

(其它參數保留默認配置,具體配置解釋請參考官方文檔說明:http://bbs.chinaunix.net/thread

1941456-1-1.html )  

3、 創建基礎數據目錄(參考基礎目錄 base_path 配置): 

mkdir -p /fastdfs/tracker

4、 防火牆中打開跟蹤器端口(默認爲 22122): 

vi /etc/sysconfig/iptables 
## FastDFS Tracker Port 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT

重啓防火牆: 

service iptables restart

5、 啓動 Tracker: 

/etc/init.d/fdfs_trackerd start

(初次成功啓動,會在/fastdfs/tracker 目錄下創建 data、logs 兩個目錄)可以通過以下兩個方法查

看 tracker 是否啓動成功: 


(1)查看 22122 端口監聽情況:netstat -unltp|grep fdfs   

(2)通過以下命令查看 tracker 的啓動日誌,看是否有錯誤 

tail -100f  /fastdfs/tracker/logs/trackerd.log

6、 關閉 Tracker: 

/etc/init.d/fdfs_trackerd stop

7、 設置 FastDFS 跟蹤器開機啓動: 

vi /etc/rc.d/rc.local
## FastDFS Tracker 
/etc/init.d/fdfs_trackerd start

三、配置 FastDFS 存儲 ( 192.168.1.135 、192.168.1.136 、192.168.1.137 、192.168.1.138 ) 1、 複製 FastDFS 存儲器樣例配置文件,並重命名: # cd /etc/fdfs/  

cp storage.conf.sample storage.conf

2、 編輯存儲器樣例配置文件(以 group1 中的 storage 節點的 storage.conf 爲例) : 

vi /etc/fdfs/storage.conf
disabled=false           #啓用配置文件 
group_name=group1        #組名(第一組爲 group1,第二組爲 group2) 
port=23000               #storage 的端口號,同一個組的 storage 端口號必須相同 
base_path=/fastdfs/storage   #設置 storage 的日誌目錄 
store_path0=/fastdfs/storage #存儲路徑 
store_path_count=1           #存儲路徑個數,需要和 store_path 個數匹配 
tracker_server=192.168.1.131:22122 #tracker 服務器的 IP 地址和端口 
tracker_server=192.168.1.132:22122 #多個 tracker 直接添加多條配置 
http.server_port=8888              #設置 http 端口號

(其它參數保留默認配置,具體配置解釋請參考官方文檔說明: 

http://bbs.chinaunix.net/thread-1941456-1-1.html )  

3、 創建基礎數據目錄(參考基礎目錄 base_path 配置):

mkdir -p /fastdfs/storage

4、 防火牆中打開存儲器端口(默認爲 23000): 

vi /etc/sysconfig/iptables

添加如下端口行: 

## FastDFS Storage Port 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 23000 -j ACCEPT

重啓防火牆: 

service iptables restart

5、 啓動 Storage: 

/etc/init.d/fdfs_storaged start

 (初次成功啓動,會在/fastdfs/storage 目錄下創建數據目錄 data 和日誌目錄 logs) 

各節點啓動動,使用 tail -f /fastdfs/storage/logs/storaged.log 命令監聽存儲節點日誌,可以

看到存儲節點鏈接到跟蹤器,並提示哪一個爲 leader 跟蹤器。同時也會看到同一組中的其他節點加入

進來的日誌信息。  

查看 23000 端口監聽情況:netstat -unltp|grep fdfs  

所有 Storage 節點都啓動之後,可以在任一 Storage 節點上使用如下命令查看集羣信息: 

/usr/bin/fdfs_monitor /etc/fdfs/storage.conf

可以看到存儲節點狀態爲 ACTIVE 則可 


6、 關閉 Storage: 

/etc/init.d/fdfs_storaged stop

7、 設置 FastDFS 存儲器開機啓動: 

vi /etc/rc.d/rc.local

添加: 

## FastDFS Storage 
/etc/init.d/fdfs_storaged start

四、文件上傳測試 ( 192.168.1.131 ) 

1、修改 Tracker 服務器中的客戶端配置文件:

cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
vi /etc/fdfs/client.conf
base_path=/fastdfs/tracker 
tracker_server=192.168.1.131:22122 
tracker_server=192.168.1.132:22122

2、執行如下文件上傳命令: 

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/FastDFS_v5.05.tar.gz

 返回 ID 號: 

group1/M00/00/00/wKgBh1Xtr9-AeTfWAAVFOL7FJU4.tar.gz 

group2/M00/00/00/wKgBiVXtsDmAe3kjAAVFOL7FJU4.tar.gz 

 (能返回以上文件 ID,說明文件上傳成功)   

六、在各存儲節點(192.168.1.135、192.168.1.136、192.168.1.137、192.168.1.138)上安裝 Nginx 

1、fastdfs-nginx-module 作用說明 

FastDFS 通過 Tracker 服務器,將文件放在 Storage 服務器存儲,但是同組存儲服務器之間需要進入

文件複製,有同步延遲的問題。假設 Tracker 服務器將文件上傳到了 192.168.1.135,上傳成功後文件 ID已經返回給客戶端。此時 FastDFS 存儲集羣機制會將這個文件同步到同組存儲 192.168.1.136,在文件還沒有複製完成的情況下,客戶端如果用這個文件 ID 在 192.168.1.136 上取文件,就會出現文件無法訪問的錯誤。而 fastdfs-nginx-module 可以重定向文件連接到源服務器取文件,避免客戶端由於複製延遲導致的文件無法訪問錯誤。(解壓後的 fastdfs-nginx-module 在 nginx 安裝時使用)

  

2、上傳 fastdfs-nginx-module_v1.16.tar.gz 到/usr/local/src,解壓 

cd /usr/local/src/ 
tar -zxvf fastdfs-nginx-module_v1.16.tar.gz

3、修改 fastdfs-nginx-module 的 config 配置文件 

vi /usr/local/src/fastdfs-nginx-module/src/config

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

修改爲:CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/" 

 (注意:這個路徑修改是很重要的,不然在 nginx 編譯的時候會報錯的) 


4、上傳當前的穩定版本 Nginx(nginx-1.6.2.tar.gz)到/usr/local/src 目錄

  

5、安裝編譯 Nginx 所需的依賴包 

yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel

6、編譯安裝 Nginx(添加 fastdfs-nginx-module 模塊) 

cd /usr/local/src/ 
tar -zxvf nginx-1.6.2.tar.gz 
cd nginx-1.6.2 
./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src 
make && make install

7、複製 fastdfs-nginx-module 源碼中的配置文件到/etc/fdfs 目錄,並修改 

cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
vi /etc/fdfs/mod_fastdfs.conf

(1)第一組 Storage 的 mod_fastdfs.conf 配置如下: 

connect_timeout=10 

base_path=/tmp 

tracker_server=192.168.1.131:22122 

tracker_server=192.168.1.132:22122 

 storage_server_port=23000 

group_name=group1  

url_have_group_name = true 

store_path0=/fastdfs/storage 

group_count = 2 

[group1] 

group_name=group1 

storage_server_port=23000 

store_path_count=1 

store_path0=/fastdfs/storage 

[group2] 

group_name=group2 

storage_server_port=23000 

store_path_count=1 

store_path0=/fastdfs/storage 

 

(2)第一組 Storage 的 mod_fastdfs.conf 配置與第一組配置只有 group_name 不同: 

group_name=group2  

8、複製 FastDFS 的部分配置文件到/etc/fdfs 目錄 

cd /usr/local/src/FastDFS/conf 
cp http.conf mime.types /etc/fdfs/

9、在/fastdfs/storage 文件存儲目錄下創建軟連接,將其鏈接到實際存放數據的目錄 

ln -s /fastdfs/storage/data/ /fastdfs/storage/data/M00

10、配置 Nginx,簡潔版 nginx 配置樣例: 

vi /usr/local/nginx/conf/nginx.conf
user  root; 
worker_processes  1; 
events { 
    worker_connections  1024; 
} 
http { 
    include       mime.types; 
    default_type  application/octet-stream; 
    sendfile        on; 
    keepalive_timeout  65; 
    server { 
        listen       8888; 
        server_name  localhost; 
        location ~/group([0-9])/M00 { 
            #alias /fastdfs/storage/data; 
            ngx_fastdfs_module; 
        } 
        error_page   500 502 503 504  /50x.html; 
        location = /50x.html { 
            root   html; 
        } 
    } 
}

注意、說明: 

A、8888 端口值是要與/etc/fdfs/storage.conf 中的 http.server_port=8888 相對應, 

因爲 http.server_port 默認爲 8888,如果想改成 80,則要對應修改過來。 

B、Storage 對應有多個 group 的情況下,訪問路徑帶 group 名,如/group1/M00/00/00/xxx, 

對應的 Nginx 配置爲: 

location ~/group([0-9])/M00 { 

  ngx_fastdfs_module; 

C、如查下載時如發現老報 404,將 nginx.conf 第一行 user nobody 修改爲 user root 後重新啓動。  

11、防火牆中打開 Nginx 的 8888 端口 

vi /etc/sysconfig/iptables

 添加: 

## Nginx Port 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8888 -j ACCEPT

重啓防火牆: 

service iptables restart

12、啓動 Nginx 

/usr/local/nginx/sbin/nginx

ngx_http_fastdfs_set pid=xxx 

(重啓 Nginx 的命令爲:/usr/local/nginx/sbin/nginx -s reload) 

設置 Nginx 開機啓動 

vi /etc/rc.local
/usr/local/nginx/sbin/nginx  #添加

13、通過瀏覽器訪問測試時上傳的文件 

http://192.168.1.135:8888/group1/M00/00/00/wKgBh1Xtr9-AeTfWAAVFOL7FJU4.tar.gz 

http://192.168.1.137:8888/group2/M00/00/00/wKgBiVXtsDmAe3kjAAVFOL7FJU4.tar.gz

  

七、在跟蹤器節點(192.168.1.131、192.168.1.132)上安裝 Nginx 

1、在 tracker 上安裝的 nginx 主要爲了提供 http 訪問的反向代理、負載均衡以及緩存服務。  

2、安裝編譯 Nginx 所需的依賴包 

yum install gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel 
openssl openssl-devel

3、上傳 ngx_cache_purge-2.3.tar.gz 到/usr/local/src,解壓 

cd /usr/local/src/ 
tar -zxvf ngx_cache_purge-2.3.tar.gz

4、上傳當前的穩定版本 Nginx(nginx-1.6.2.tar.gz)到/usr/local/src 目錄  

5、編譯安裝 Nginx(添加 ngx_cache_purge 模塊) 

cd /usr/local/src/ 
tar -zxvf nginx-1.6.2.tar.gz 
cd nginx-1.6.2 
./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/ngx_cache_purge-2.3 
make && make install

6、配置 Nginx,設置負載均衡以及緩存 

vi /usr/local/nginx/conf/nginx.conf
upstream fdfs_group1 { 
server 192.168.1.135:8888 weight=1 max_fails=2 fail_timeout=user  root; 
worker_processes  1;  
#error_log  logs/error.log; 
#error_log  logs/error.log  notice; 
#error_log  logs/error.log  info;  
#pid        logs/nginx.pid;  
events { 
worker_connections  1024; 
use epoll; 
}  
http { 
    include       mime.types; 
    default_type  application/octet-stream;  
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' 
    #                  '$status $body_bytes_sent "$http_referer" ' 
    #                  '"$http_user_agent" "$http_x_forwarded_for"';  
    #access_log  logs/access.log  main;  
    sendfile        on; 
    tcp_nopush     on;  
    #keepalive_timeout  0; 
    keepalive_timeout  65;  
#gzip  on; 
#設置緩存 
    server_names_hash_bucket_size 128; 
    client_header_buffer_size 32k; 
    large_client_header_buffers 4 32k; 
    client_max_body_size 300m; 
    proxy_redirect off; 
    proxy_set_header Host $http_host; 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
    proxy_connect_timeout 90; 
    proxy_send_timeout 90; 
    proxy_read_timeout 90; 
    proxy_buffer_size 16k; 
    proxy_buffers 4 64k; 
    proxy_busy_buffers_size 128k; 
proxy_temp_file_write_size 128k; 
#設置緩存存儲路徑、存儲方式、分配內存大小、磁盤最大空間、緩存期限 
    proxy_cache_path /fastdfs/cache/nginx/proxy_cache levels=1:2 
    keys_zone=http-cache:200m max_size=1g inactive=30d; 
proxy_temp_path /fastdfs/cache/nginx/proxy_cache/tmp; 
#設置 group1 的服務器 
    30s; 
         server 192.168.1.136:8888 weight=1 max_fails=2 fail_timeout=30s; 
} 
#設置 group2 的服務器 
    upstream fdfs_group2 { 
         server 192.168.1.137:8888 weight=1 max_fails=2 fail_timeout=30s; 
         server 192.168.1.138:8888 weight=1 max_fails=2 fail_timeout=30s; 
    }  
    server { 
        listen       8000; 
        server_name  localhost;  
        #charset koi8-r;  
        #access_log  logs/host.access.log  main; 
        #設置 group 的負載均衡參數 
        location /group1/M00 { 
            proxy_next_upstream http_502 http_504 error timeout invalid_header; 
            proxy_cache http-cache; 
            proxy_cache_valid  200 304 12h; 
            proxy_cache_key $uri$is_args$args; 
            proxy_pass http://fdfs_group1; 
            expires 30d; 
        } 
        location /group2/M00 { 
            proxy_next_upstream http_502 http_504 error timeout invalid_header; 
            proxy_cache http-cache; 
            proxy_cache_valid  200 304 12h; 
            proxy_cache_key $uri$is_args$args; 
            proxy_pass http://fdfs_group2; 
            expires 30d; 
        }  
    #設置清除緩存的訪問權限 
        location ~/purge(/.*) { 
            allow 127.0.0.1; 
            allow 192.168.1.0/24; 
            deny all; 
            proxy_cache_purge http-cache $1$is_args$args; 
        }       
        #error_page  404              /404.html;  
        # redirect server error pages to the static page /50x.html 
        # 
        error_page   500 502 503 504  /50x.html; 
        location = /50x.html { 
            root   html; 
        } 
    } 
}

按以上 nginx 配置文件的要求,創建對應的緩存目錄: 

mkdir -p /fastdfs/cache/nginx/proxy_cache 
mkdir -p /fastdfs/cache/nginx/proxy_cache/tmp

7、系統防火牆打開對應的端口 

vi /etc/sysconfig/iptables
## Nginx 
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8000 -j ACCEPT
service iptables restart

8、啓動 Nginx 

/usr/local/nginx/sbin/nginx

重啓 Nginx 

/usr/local/nginx/sbin/nginx -s reload

設置 Nginx 開機啓動 

vi /etc/rc.local
/usr/local/nginx/sbin/nginx  #添加

  

9、文件訪問測試 

前面直接通過訪問 Storage 節點中的 Nginx 的文件 

http://192.168.1.135:8888/group1/M00/00/00/wKgBh1Xtr9-AeTfWAAVFOL7FJU4.tar.gz 

http://192.168.1.137:8888/group2/M00/00/00/wKgBiVXtsDmAe3kjAAVFOL7FJU4.tar.gz 

現在可以通過 Tracker 中的 Nginx 來進行訪問 

(1)通過 Tracker1 中的 Nginx 來訪問 

http://192.168.1.131:8000/group1/M00/00/00/wKgBh1Xtr9-AeTfWAAVFOL7FJU4.tar.gz 

http://192.168.1.131:8000/group2/M00/00/00/wKgBiVXtsDmAe3kjAAVFOL7FJU4.tar.gz 

(2)通過 Tracker2 中的 Nginx 來訪問 

http://192.168.1.132:8000/group1/M00/00/00/wKgBh1Xtr9-AeTfWAAVFOL7FJU4.tar.gz 

http://192.168.1.132:8000/group2/M00/00/00/wKgBiVXtsDmAe3kjAAVFOL7FJU4.tar.gz 

由上面的文件訪問效果可以看到,每一個 Tracker 中的 Nginx 都單獨對後端的 Storage 組做了負載均衡,但整套 FastDFS 集羣如果想對外提供統一的文件訪問地址,還需要對兩個 Tracker 中的 Nginx 進行 HA 集羣。 


八、使用 Keepalived + Nginx 組成的高可用負載均衡集羣做兩個 Tracker 節點中 Nginx 的負載均衡 

wKiom1jfd-qw9OnuAACSNguA1nw264.png

Group 1

Tracker 1 ( FastDFS + Nginx )

Tracker 2 ( FastDFS + Nginx )

Proxy 1 ( Keepalived + Nginx )

FastDFS集羣

Proxy 2 ( Keepalived + Nginx )

VIP

Storage 1 ( FastDFS + Nginx )

Storage 2 ( FastDFS + Nginx )

Storage 3 ( FastDFS + Nginx )

Storage 4 ( FastDFS + Nginx )

Group 2 


1、 《Keepalived+Nginx 實現高可用負載均衡,請查看》

http://bobbie.blog.51cto.com/8986511/1912630


2、在 Keepalived+Nginx 實現高可用負載均衡集羣中配置 Tracker 節點中 Nginx 的負載均衡反向代理 

(192.168.1.51 和 192.168.1.52 中的 Nginx 執行相同的配置) 

vi /usr/local/nginx/conf/nginx.conf
user  root; 
worker_processes  1; 
#error_log  logs/error.log; 
#error_log  logs/error.log  notice; 
#error_log  logs/error.log  info; 
#pid        logs/nginx.pid; 
events { 
    worker_connections  1024; 
} 
http { 
    include       mime.types; 
    default_type  application/octet-stream; 
    #log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ' 
    #                  '$status $body_bytes_sent "$http_referer" ' 
    #                  '"$http_user_agent" "$http_x_forwarded_for"'; 
    #access_log  logs/access.log  main; 
    sendfile        on; 
    #tcp_nopush     on; 
    #keepalive_timeout  0; 
    keepalive_timeout  65;  
    #gzip  on;  
    ## FastDFS Tracker Proxy 
    upstream fastdfs_tracker { 
         server 192.168.1.131:8000 weight=1 max_fails=2 fail_timeout=30s; 
         server 192.168.1.132:8000 weight=1 max_fails=2 fail_timeout=30s; 
    }  
    server { 
        listen       88; 
        server_name  localhost; 
        #charset koi8-r; 
        #access_log  logs/host.access.log  main; 
        location / { 
            root   html; 
            index  index.html index.htm; 
        } 
        #error_page  404              /404.html; 
        # redirect server error pages to the static page /50x.html 
        error_page   500 502 503 504  /50x.html; 
        location = /50x.html { 
            root   html; 
        } 
        ## FastDFS Proxy 
        location /dfs { 
            root   html; 
            index  index.html index.htm; 
            proxy_pass  http://fastdfs_tracker/; 
            proxy_set_header Host  $http_host; 
            proxy_set_header Cookie $http_cookie; 
            proxy_set_header X-Real-IP $remote_addr; 
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
            proxy_set_header X-Forwarded-Proto $scheme; 
            client_max_body_size  300m; 
        } 
    } 
}

3、重啓 192.168.1.51 和 192.168.1.52 中的 Nginx 

/usr/local/nginx/sbin/nginx -s reload

4、通過 Keepalived+Nginx 組成的高可用負載集羣的 VIP(192.168.1.50)來訪問 FastDFS 集羣中的文件 

http://192.168.1.50:88/dfs/group1/M00/00/00/wKgBh1Xtr9-AeTfWAAVFOL7FJU4.tar.gz 

http://192.168.1.50:88/dfs/group2/M00/00/00/wKgBiVXtsDmAe3kjAAVFOL7FJU4.tar.gz 

注意:千萬不要使用 kill -9 命令強殺 FastDFS 進程,否則可能會導致 binlog 數據丟失。    


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章