系統環境-Linux-分佈式文件系統(FastDFS + nginx + cache)

 

軟件下載nginx

wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gzgit

wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gzgithub

wget http://zlib.net/zlib-1.2.8.tar.gzvim

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.36.tar.gz瀏覽器

wget http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz緩存

wget http://nginx.org/download/nginx-1.8.0.tar.gz服務器

wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gzapp

 

將下載的軟件拷貝到 /usr/local/src/負載均衡

cp /root/Downloads/libfastcommonV1.0.7 /usr/local/src/tcp

cp /root/Downloads/fastdfsV5.05 /usr/local/src/

cp /root/Downloads/zlib-1.2.8.tar.gz /usr/local/src/

cp /root/Downloads/pcre-8.36.tar.gz /usr/local/src/

cp /root/Downloads/ngx_cache_purge-2.3.tar.gz /usr/local/src/

cp /root/Downloads/fastdfs-nginx-module_v1.16.tar.gz /usr/local/src/

cp /root/Downloads/nginx-1.8.0.tar.gz /usr/local/src/

 

安裝FastDFS

首先安裝libfastcommon ,由於FastDFS依賴libfastcommon包

tar -zxvf libfastcommonV1.0.7

cd libfastcommon-1.0.7/

./make.sh

./make.sh install

因爲libfastcommon.so默認安裝到了/usr/lib64/libfastcommon.so,而FastDFS主程序設置的lib目錄是/usr/lib,因此設置軟鏈接

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

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

 

libfastcommon安裝完成後,安裝FastDFS

tar -zxvf fastdfsV5.05

cd fastdfs-5.05/

./make.sh

./make.sh install

FastDFS安裝完成後,全部可執行文件在/usr/bin/,全部配置文件在/etc/fdfs/。

其中配置文件各拷貝一份:

cp tracker.conf.sample tracker.conf

cp storage.conf.sample storage.conf

cp client.conf.sample client.conf

若是須要啓動tracker服務則修改tracker.conf

若是須要啓動 storage服務則修改storage.conf

若是須要使用client 服務則修改 client.conf

 

配置tracker.conf 並啓動 tracker服務

建立文件夾用於存儲tracker 的日誌和數據

mkdir -p /fdfs/tracker

編輯配置文件目錄下的/etc/fdfs/tracker.conf,設置相關信息並保存。

vi tracker.conf

通常只需改動如下幾個參數便可:

disabled=false                #啓用配置文件

port=22122                    #設置tracker的端口號

base_path=/fdfs/tracker   #設置tracker的數據文件和日誌目錄(需預先建立)

http.server_port=8080     #設置http端口號

如須要進行性能調優,能夠仔細閱讀配置文件的詳細說明

 

啓動tracker服務

運行tracker以前,先要把防火牆中對應的tracker端口打開,默認端口爲22122

iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 22122 -j ACCEPT

保存防火牆配置

/etc/init.d/iptables save

啓動tracker服務

/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

檢查fdfs_trackerd服務是否啓動正常,查看fdfs是否在監聽22122端口

netstat -unltp | grep fdfs

查看tracker日誌中是否有錯誤信息

cat /fdfs/tracker/logs/trackerd.log | more

設置開機啓動,將啓動命令追加到啓動文件中

vi /etc/rc.d/rc.local  ---add-->  /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

 

配置storageconf 並啓動 storage服務

建立文件夾用於存儲storage 的日誌和數據

mkdir -p /fdfs/storage

編輯配置文件目錄下的storage.conf,設置相關信息並保存

通常只需改動如下幾個參數便可:

disabled=false            #啓用配置文件

group_name=group1              #組名,根據實際狀況修改

port=23000                                  #設置storage的端口號

base_path=/fdfs/storage                  #設置storage的日誌目錄(需預先建立)

store_path_count=1                 #存儲路徑個數,須要和store_path個數匹配

store_path0=/fdfs/storage     #存儲路徑

tracker_server=10.64.2.171:22122

tracker_server=10.64.2.172:22122        

#tracker服務器的IP地址和端口號,可配置多個tracker

http.server_port=8080      #設置http端口號

如須要進行性能調優,能夠仔細閱讀配置文件的詳細說明

 

啓動storage服務

運行storage以前,先要把防火牆中對應的storage端口打開,默認端口爲23000

iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 23000 -j ACCEPT

保存防火牆配置

/etc/init.d/iptables save

啓動storage服務

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

啓動storage,會根據配置文件的設置自動建立多級存儲目錄,檢查storage服務是否啓動正常,查看fdfs_storaged是否在監聽23000端口

netstat -unltp | grep fdfs

查看storage日誌中是否有錯誤信息

cat /fdfs/storage/logs/storaged.log | more

確認啓動成功後,能夠運行fdfs_monitor查看storage服務器是否已經登記到tracker服務器

看到「172.16.1.203  ACTIVE」便可確認storage運行正常

設置開機啓動,將啓動命令追加到啓動文件中

vi /etc/rc.d/rc.local  ---add-->  /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

附加說明:中止storage 執行/usr/bin/fdfs_storaged /etc/fdfs/storage.conf stop

 

測試FastDFS安裝是否成功

首先配置/etc/fdfs/client.conf主要修改一下幾個參數

base_path=/fdfs/tracker

tracker_server=10.64.2.172:22122

http.tracker_server_port=8080

使用自帶的客戶端測試是否上傳成功

/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/Downloads/nginx-1.8.0.tar.gz

若有相應路徑返回則說明安裝成功例:

group1/M00/00/00/CkACqlYzHvCAZYGgAAyyaB1JZ1k.tar.gz

 

 在storage上安裝nginx

在storage上安裝的nginx主要爲了提供http的訪問服務,同時解決group中storage服務器的同步延遲問題

安裝前先修改fastdfs-nginx-module中的config配置文件

tar -zxvf fastdfs-nginx-module_v1.16.tar.gz
cd fastdfs-nginx-module/src/
vi config
修改以下配置,這裏原來是
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"
改爲
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
這個是很重要的,否則在nginx編譯的時候會報錯的,我看網上不少在安裝nginx的fastdfs的插件報錯,都是這個緣由,而不是版本不匹配。
 

因爲nginx 的安裝依賴pcre 、zlib 包,因此先安裝這兩個包

pcre安裝

tar -zxvf pcre-8.36.tar.gz
cd pcre-8.36
./configure
make

make install
配置軟鏈接
ln -s /usr/local/lib/libpcre.so.1 /lib64/

zlib安裝:
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make

make install

 

nginx安裝:
tar -zxvf nginx-1.8.0.tar.gz
cd nginx-1.8.0
./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src
make
make install

 

將FastDFS的nginx插件模塊的配置文件copy到FastDFS配置文件目錄

拷貝配置文件
cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/

cp /usr/local/src/fastdfs-5.05/conf/http.conf /etc/fdfs/

cp /usr/local/src/fastdfs-5.05/conf/mime.types /etc/fdfs/

安裝完成後,nginx全部文件在/usr/local/nginx下

 

配置

編輯/etc/fdfs配置文件目錄下的mod_fastdfs.conf,設置storage信息並保存

通常只需改動如下幾個參數便可:

base_path=/fdfs/storage     #保存日誌目錄

tracker_server=172.16.1.202:22122       #tracker服務器的IP地址以及端口號,多個tracker可寫多行

storage_server_port=23000      #storage服務器的端口號

group_name=group1   #當前服務器的group名

url_have_group_name= true        #文件url中是否有group名

store_path_count=1                #存儲路徑個數,須要和store_path個數匹配

store_path0=/fdfs/storage         #存儲路徑

http.need_find_content_type=true   #從文件擴展名查找文件類型(nginx時爲true)

group_count= 2                   #設置組的個數

在末尾增長2個組的具體信息:

[group1]

group_name=group1

storage_server_port=23000

store_path_count=1

store_path0=/fdfs/storage

 

 [group2]

group_name=group2

storage_server_port=23000

store_path_count=1

store_path0=/fdfs/storage

 

編輯/usr/local/nginx/conf配置文件目錄下的nginx.conf,設置添加storage信息並保存。

將server段中的listen端口號改成8080:

listen       8080;

在server段中添加:

location  ~/group[1-2]/M00{

root  /fdfs/storage/data;

    ngx_fastdfs_module;

}

創建M00至存儲目錄的符號鏈接

ln -s /fdfs/storage/data /fdfs/storage/data/M00

至此,nginx以及FastDFS插件模塊設置完成

 

啓動nginx

運行nginx以前,先要把防火牆中對應的端口打開(本例中爲8080)

iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT

/etc/init.d/iptables save

啓動nginx,確認啓動是否成功。(查看是否對應端口8080是否開始監聽)

/usr/local/nginx/sbin/nginx

netstat -unltp | grep nginx

也可查看nginx的日誌是否啓動成功或是否有錯誤

cat /usr/local/nginx/logs/error.log

在error.log中沒有錯誤,既啓動成功。能夠打開瀏覽器,直接訪問http://10.64.2.167:8080,查看是否彈出nginx歡迎頁面

 

設置開機自動啓動。

將運行命令行添加進文件:/usr/local/nginx/sbin/nginx

 

在tracker上安裝nginx

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

因爲nginx 的安裝依賴pcre 、zlib 包,因此先安裝這兩個包

pcre安裝

tar -zxvf pcre-8.36.tar.gz
cd pcre-8.36
./configure
make

make install
配置軟鏈接
ln -s /usr/local/lib/libpcre.so.1 /lib64/

zlib安裝:
tar -zxvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make

make install

 

nginx安裝

./configure --prefix=/usr/local/nginx --add-module=/usr/local/src/ngx_cache_purge-2.3

make

make install

 

配置

編輯/usr/local/nginx/conf配置文件目錄下的nginx.conf,設置負載均衡以及緩存

vim /usr/local/nginx/conf/nginx.conf


worker_processes  4;   #根據CPU核心數而定

events {

    worker_connections  65535;   #最大連接數    

    use epoll;      #新版本的Linux可以使用epoll加快處理性能

}

 

http { 中

    #設置緩存參數

    server_names_hash_bucket_size 128;

    client_header_buffer_size 32k;

    large_client_header_buffers 4 32k;

    client_max_body_size 300m;

    sendfile  on;

    tcp_nopush on;

    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 /var/cache/nginx/proxy_cache levels=1:2 keys_zone=http-cache:500m max_size=10g inactive=30d;    

    proxy_temp_path /var/cache/nginx/proxy_cache/tmp;

    #設置group1的服務器

    upstream fdfs_group1 {

       server 10.64.2.170:8080 weight=1 max_fails=2 fail_timeout=30s;

       server 10.64.2.169:8080 weight=1 max_fails=2 fail_timeout=30s;    

    }

    #設置group2的服務器

    upstream fdfs_group2 {

       server 10.64.2.168:8080 weight=1 max_fails=2 fail_timeout=30s;

       server 10.64.2.167:8080 weight=1 max_fails=2 fail_timeout=30s;    

    }

 

server { 中

    #設置服務器端口

    listen       8080;

    #設置group1的負載均衡參數

    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;        

    }

    #設置group2的負載均衡參數

    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 172.16.1.0/24;

           deny all;

           proxy_cache_purge http-cache  $1$is_args$args;        

    }

至此,nginx以及nginx cache purge插件模塊設置完成

 

啓動nginx

運行nginx以前,先要把防火牆中對應的端口打開(本例中爲8080)

iptables -I INPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT

/etc/init.d/iptables save

建立緩存文件夾

mkdir -p /var/cache/nginx/proxy_cache

啓動nginx,確認啓動是否成功。(查看是否對應端口8080是否開始監聽)

/usr/local/nginx/sbin/nginx

netstat -unltp | grep nginx

也可查看nginx的日誌是否啓動成功或是否有錯誤

cat /usr/local/nginx/logs/error.log

在error.log中沒有錯誤,既啓動成功。能夠打開瀏覽器,直接訪問http://10.64.2.171:8080,查看是否彈出nginx歡迎頁面

 

設置開機自動啓動。

將運行命令行添加進文件:/usr/local/nginx/sbin/nginx

 

總體測試

嘗試上傳一個文件到FastDFS,而後訪問試試。先配置client.conf文件

vim /etc/fdfs/client.conf

修改如下參數:

base_path=/fdfs/tracker                    #日誌存放路徑

tracker_server=10.64.2.171:22122          #tracker服務器IP地址和端口號

http.tracker_server_port=8080              #tracker服務器的http端口號

使用/usr/local/bin/fdfs_upload_file上傳一個文件,程序會自動返回文件的URL

/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /root/Downloads/dt.jpg

返回:group2/M00/00/00/CkACqFY2zTGAQFuvAAiQfKHDaaQ932.jpg

而後使用瀏覽器訪問, 成功則能夠看到文件被正確讀取出來了

查看nginx的access.log日誌,能夠看到訪問返回200成功

cat /usr/local/nginx/logs/access.log

查看nginx的cache目錄,能夠看到已經生成了緩存文件

ll /var/cache/nginx/proxy_cache/ -R

若是要手動清除緩存,能夠在文件URL以前加上purge:

至此,tracker服務器上的http反向代理+負載均衡+緩存已經安裝完成

 

附加說明

1.      上傳文件

FastDFS提供了多種方式上傳文件:

  使用fdfs_upload_file上傳(以前已經有演示)

  使用C語言客戶端接口上傳

  使用PHP客戶端接口上傳

  使用Java客戶端接口上傳

  使用Python客戶端接口上傳

  使用.NET客戶端接口上傳

 根據具體狀況選擇使用。上傳均支持斷點續傳

2.      下載文件

  使用fdfs_download_file經過tracker服務器下載

  使用nginx經過http方式直接從storage下載(支持斷點續傳,做者推薦)

3.      監視服務器資源

  使用fdfs_monitor查看tracker和全部group的運行狀況。

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

4.      其餘功能

  使用fdfs_crc32獲取文件CRC

  使用fdfs_delete_file刪除文件

  使用fdfs_file_info查看文件屬性信息

 

以上全部功能都可使用接口在代碼中調用

相關文章
相關標籤/搜索