1. 程式人生 > >CentOS7搭建FastDFS V5.11分散式檔案系統及Java整合詳細過程(三)

CentOS7搭建FastDFS V5.11分散式檔案系統及Java整合詳細過程(三)

1.測試

前面兩篇博文已對FastDFS的安裝和配置,做了比較詳細的講解。FastDFS的基礎模組都搭好了,現在開始測試下載。

1.1 配置客戶端

同樣的,需要修改客戶端的配置檔案:

vim /etc/fdfs/client.conf
  1. base_path=/usr/yong.cao/dev/fastdfs/fastdfs_tracker #tracker伺服器檔案路徑
  2. tracker_server=192.168.128.131:22122 #tracker伺服器IP地址和埠號
  3. http.tracker_server_port=6666 # tracker 伺服器的 http埠號,必須和tracker的設定對應起來

通過ftp上傳圖片到CentOS:

這裡寫圖片描述

在我的windows上,我隨便拖了一張圖片上去。

[[email protected] ~]# ll /usr/yong.cao/ftp/
total 19320
-rw-r--r--   1 root root    88623 Jun 13 22:33 593d8f1eN5b3b8133.jpg
drwxr-xr-x  10 root root      258 Jun 14 01:26 fastdfs-5.11
-rw-r--r--   1 root root   421773 Jun 17 09:34 fastdfs-5.11.zip
-rw-r--r--   1
root root 75491 Jun 17 09:34 fastdfs-client-java-master.zip
-rw-r--r-- 1 root root 22192 Jun 17 09:34 fastdfs-nginx-module-master.zip drwxr-xr-x 5 root root 135 Jun 8 21:51 libfastcommon-master -rw-r--r-- 1 root root 478888 Jun 17 09:34 libfastcommon-master.zip -rw-r--r-- 1 root root 980831
Jun 17 09:34 nginx-1.12.0.tar.gz
-rw-r--r--. 1 root root 150 Jun 4 12:19 record.txt -rw-r--r--. 1 root root 17699306 Jun 4 13:32 zookeeper-3.4.6.tar.gz

1.2 模擬上傳

確定圖片位置後,我們輸入上傳圖片命令:

/usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /usr/yong.cao/ftp/593d8f1eN5b3b8133.jpg  #這後面放的是圖片的位置

成功後會返回圖片的路徑:

[root@localhost ~]# /usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /usr/yong.cao/ftp/593d8f1eN5b3b8133.jpg
group1/M00/00/00/wKiAg1lE9WqAWu_ZAAFaL_xdW_s943.jpg

組名:group1
磁碟:M00
目錄:00/00
檔名稱:wKiAg1lE9WqAWu_ZAAFaL_xdW_s943.jpg

我們上傳的圖片會被上傳到我們建立的storage_data目錄下,讓我們去看看:

[[email protected] fastdfs_storage_data]# cd /usr/yong.cao/dev/fastdfs/fastdfs_storage_data/data
[[email protected] data]# ls
00  0D  1A  27  34  41  4E  5B  68  75  82  8F  9C  A9  B6  C3  D0  DD  EA  F7
01  0E  1B  28  35  42  4F  5C  69  76  83  90  9D  AA  B7  C4  D1  DE  EB  F8
02  0F  1C  29  36  43  50  5D  6A  77  84  91  9E  AB  B8  C5  D2  DF  EC  F9
03  10  1D  2A  37  44  51  5E  6B  78  85  92  9F  AC  B9  C6  D3  E0  ED  FA
04  11  1E  2B  38  45  52  5F  6C  79  86  93  A0  AD  BA  C7  D4  E1  EE  FB
05  12  1F  2C  39  46  53  60  6D  7A  87  94  A1  AE  BB  C8  D5  E2  EF  FC
06  13  20  2D  3A  47  54  61  6E  7B  88  95  A2  AF  BC  C9  D6  E3  F0  FD
07  14  21  2E  3B  48  55  62  6F  7C  89  96  A3  B0  BD  CA  D7  E4  F1  FE
08  15  22  2F  3C  49  56  63  70  7D  8A  97  A4  B1  BE  CB  D8  E5  F2  FF
09  16  23  30  3D  4A  57  64  71  7E  8B  98  A5  B2  BF  CC  D9  E6  F3  M00
0A  17  24  31  3E  4B  58  65  72  7F  8C  99  A6  B3  C0  CD  DA  E7  F4
0B  18  25  32  3F  4C  59  66  73  80  8D  9A  A7  B4  C1  CE  DB  E8  F5
0C  19  26  33  40  4D  5A  67  74  81  8E  9B  A8  B5  C2  CF  DC  E9  F6
[[email protected] data]# cd 00
[[email protected] 00]# ls
00  0D  1A  27  34  41  4E  5B  68  75  82  8F  9C  A9  B6  C3  D0  DD  EA  F7
01  0E  1B  28  35  42  4F  5C  69  76  83  90  9D  AA  B7  C4  D1  DE  EB  F8
02  0F  1C  29  36  43  50  5D  6A  77  84  91  9E  AB  B8  C5  D2  DF  EC  F9
03  10  1D  2A  37  44  51  5E  6B  78  85  92  9F  AC  B9  C6  D3  E0  ED  FA
04  11  1E  2B  38  45  52  5F  6C  79  86  93  A0  AD  BA  C7  D4  E1  EE  FB
05  12  1F  2C  39  46  53  60  6D  7A  87  94  A1  AE  BB  C8  D5  E2  EF  FC
06  13  20  2D  3A  47  54  61  6E  7B  88  95  A2  AF  BC  C9  D6  E3  F0  FD
07  14  21  2E  3B  48  55  62  6F  7C  89  96  A3  B0  BD  CA  D7  E4  F1  FE
08  15  22  2F  3C  49  56  63  70  7D  8A  97  A4  B1  BE  CB  D8  E5  F2  FF
09  16  23  30  3D  4A  57  64  71  7E  8B  98  A5  B2  BF  CC  D9  E6  F3
0A  17  24  31  3E  4B  58  65  72  7F  8C  99  A6  B3  C0  CD  DA  E7  F4
0B  18  25  32  3F  4C  59  66  73  80  8D  9A  A7  B4  C1  CE  DB  E8  F5
0C  19  26  33  40  4D  5A  67  74  81  8E  9B  A8  B5  C2  CF  DC  E9  F6
[[email protected] 00]# cd 00
[[email protected] 00]# ls
wKiAg1lE9WqAWu_ZAAFaL_xdW_s943.jpg 

果然通過剛剛返回的路徑,我們成功找到了圖片。

我們仔細看一下,實際檔案儲存路徑下有建立好的多級目錄。data下有256個1級目錄,每級目錄下又有256個2級子目錄,總共65536個檔案,新寫的檔案會以hash的方式被路由到其中某個子目錄下,然後將檔案資料直接作為一個本地檔案儲存到該目錄中。

1.3 HTTP訪問檔案

我們去瀏覽器用http請求訪問一下剛剛的圖片:
這裡寫圖片描述

我們發現,http不能直接訪問到圖片。這是為什麼呢。
我去官網看了一原碼,在HISTORY中發現,原來早在4.05的時候,就remove embed HTTP support

Version 4.05  2012-12-30
 * client/fdfs_upload_file.c can specify storage ip port and store path index
 * add connection pool
 * client load storage ids config
 * common/ini_file_reader.c does NOT call chdir
 * keep the mtime of file same
 * use g_current_time instead of call time function
 * remove embed HTTP support

1.4 HTTP請求不能訪問檔案的原因

我們在使用FastDFS部署一個分散式檔案系統的時候,通過FastDFS的客戶端API來進行檔案的上傳、下載、刪除等操作。同時通過FastDFS的HTTP伺服器來提供HTTP服務。但是FastDFS的HTTP服務較為簡單,無法提供負載均衡等高效能的服務,所以FastDFS的開發者——淘寶的架構師餘慶同學,為我們提供了Nginx上使用的FastDFS模組(也可以叫FastDFS的Nginx模組)。
FastDFS通過Tracker伺服器,將檔案放在Storage伺服器儲存,但是同組之間的伺服器需要複製檔案,有延遲的問題.假設Tracker伺服器將檔案上傳到了192.168.128.131,檔案ID已經返回客戶端,這時,後臺會將這個檔案複製到192.168.128.131,如果複製沒有完成,客戶端就用這個ID在192.168.128.131取檔案,肯定會出現錯誤。這個fastdfs-nginx-module可以重定向連線到源伺服器取檔案,避免客戶端由於複製延遲的問題,出現錯誤。
正是這樣,FastDFS需要結合nginx,所以取消原來對HTTP的直接支援。

2. FastDFS的nginx模組安裝

2.1安裝nginx準備

安裝需要的工具,之前就已經放到了ftp:

[[email protected] dev]# cd /usr/yong.cao/ftp/
[[email protected] ftp]# ls
593d8f1eN5b3b8133.jpg            libfastcommon-master
fastdfs-5.11                     libfastcommon-master.zip
fastdfs-5.11.zip                 nginx-1.12.0.tar.gz
fastdfs-client-java-master.zip   record.txt
fastdfs-nginx-module-master.zip  zookeeper-3.4.6.tar.gz

在安裝nginx之前要安裝nginx所需的依賴lib:

yum -y install pcre pcre-devel  
yum -y install zlib zlib-devel  
yum -y install openssl openssl-devel

2.2 安裝nginx並新增fastdfs-nginx-module

解壓nginx,和fastdfs-nginx-module:

tar -zxvf nginx-1.12.0.tar.gz
unzip fastdfs-nginx-module-master.zip

解壓後進入nginx目錄編譯安裝nginx,並新增fastdfs-nginx-module:

./configure --prefix=/usr/local/nginx --add-module=/usr/yong.cao/dev/nginx/fastdfs-nginx-module-master/src    #解壓後fastdfs-nginx-module所在的位置

如果配置不報錯的話,就開始編譯:

make
make install

如果報錯的話,很可能是版本的原因,在我的第二篇博文中提供了我測試成功不報錯的版本下載。
nginx的預設目錄是/usr/local/nginx,安裝成功後檢視:

[[email protected] nginx-1.12.0]# cd /usr/local/nginx
[[email protected] nginx]# ll
total 0
drwx------ 2 nobody root   6 Jun 14 01:58 client_body_temp
drwxr-xr-x 2 root   root 333 Jun 16 21:42 conf
drwx------ 2 nobody root   6 Jun 14 01:58 fastcgi_temp
drwxr-xr-x 2 root   root  40 Jun 14 01:31 html
drwxr-xr-x 2 root   root  58 Jun 15 22:21 logs
drwx------ 2 nobody root   6 Jun 14 01:58 proxy_temp
drwxr-xr-x 2 root   root  19 Jun 14 01:31 sbin
drwx------ 2 nobody root   6 Jun 14 01:58 scgi_temp
drwx------ 2 nobody root   6 Jun 14 01:58 uwsgi_temp

2.3 配置storage nginx

修改nginx.conf:

[[email protected] nginx]# cd conf/
[[email protected] conf]# ls
fastcgi.conf            koi-win             scgi_params
fastcgi.conf.default    mime.types          scgi_params.default
fastcgi_params          mime.types.default  uwsgi_params
fastcgi_params.default  nginx.conf          uwsgi_params.default
koi-utf                 nginx.conf.default  win-utf
[[email protected] conf]# vim nginx.conf

修改監聽埠 listen 9999, 新增location

server {
        listen       9999;
        server_name  localhost;

        location / {
            root   html;
            index  index.html index.htm;
        }

        location ~/group1/M00 {
            root /usr/yong.cao/dev/fastdfs/fastdfs_storage_data/data;
            ngx_fastdfs_module;
        }

        location = /50x.html {
            root   html;
        }
}

然後進入FastDFS安裝時的解壓過的目錄,將http.conf和mime.types拷貝到/etc/fdfs目錄下:

[[email protected] fastdfs-5.11]# cd /usr/yong.cao/ftp/fastdfs-5.11/conf/
[[email protected] conf]# ls
anti-steal.jpg  http.conf   storage.conf      tracker.conf
client.conf     mime.types  storage_ids.conf
cp http.conf /etc/fdfs/
cp mime.types /etc/fdfs/

另外還需要把fastdfs-nginx-module安裝目錄中src目錄下的mod_fastdfs.conf也拷貝到/etc/fdfs目錄下:

cp /usr/yong.cao/dev/nginx/fastdfs-nginx-module-master/src/mod_fastdfs.conf /etc/fdfs/

對剛剛拷貝的mod_fastdfs.conf檔案進行修改:

vim /etc/fdfs/mod_fastdfs.conf
 base_path=/usr/yong.cao/dev/fastdfs/fastdfs_storage  #儲存日誌目錄
 tracker_server=192.168.128.131:22122 #tracker伺服器的IP地址以及埠號
 storage_server_port=23000 #storage伺服器的埠號
 url_have_group_name = true #檔案 url 中是否有 group 名
 store_path0=/usr/yong.cao/dev/fastdfs/fastdfs_storage_data   #儲存路徑
 group_count = 3 #設定組的個數,事實上這次只使用了group1

在檔案的最後,設定group

[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/home/yuqing/fastdfs
store_path1=/usr/yong.cao/dev/fastdfs/fastdfs_storage_data

# group settings for group #2
# since v1.14
# when support multi-group, uncomment following section as neccessary
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/usr/yong.cao/dev/fastdfs/fastdfs_storage_data

[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/usr/yong.cao/dev/fastdfs/fastdfs_storage_data

建立M00至storage儲存目錄的符號連線:

ln  -s  /usr/yong.cao/dev/fastdfs/fastdfs_storage_data/data/ /usr/yong.cao/dev/fastdfs/fastdfs_storage_data/data/M00

啟動nginx:

/usr/local/nginx/sbin/nginx

成功啟動:

[[email protected] conf]# /usr/local/nginx/sbin/nginx
ngx_http_fastdfs_set pid=8142

這裡寫圖片描述

恭喜你,storage的nginx已配置成功。接下來,我們還要繼續配置tracker的nginx。

2.4 配置tracker nginx

再解壓一個nginx:
我在我自己的工作下再建了一個nginx2,把原來的nginx-1.12.0.tar.gz又解壓了一份到裡面

fastdfs  nginx  nginx2  zookeeper
[root@localhost dev]# cd /usr/yong.cao/dev
[root@localhost dev]# ls
fastdfs  nginx  nginx2  zookeeper

配置:

[root@localhost ftp]# cd /usr/yong.cao/dev/nginx2/nginx-1.12.0/
[root@localhost nginx-1.12.0]# ls
auto     CHANGES.ru  configure  html     Makefile  objs    src
CHANGES  conf        contrib    LICENSE  man       README
./configure --prefix=/usr/local/nginx2 --add-module=/usr/yong.cao/dev/nginx/fastdfs-nginx-module-master/src    #解壓後fastdfs-nginx-module所在的位置

編譯:

make
make install

接下來,一樣的還是修改nginx.conf,埠號可以不改,用80的。需將upstream指向tracker的nginx地址。

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

 upstream fdfs_group1 {
        server 127.0.0.1:9999;
    }
    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location /group1/M00 {
            proxy_pass http://fdfs_group1;
        }
        #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;
        }
    }

啟動nginx:

/usr/local/nginx/sbin/nginx2

這裡寫圖片描述

可以成功訪問。

2.5 防火牆埠設定

成功了,為什麼還要講這個呢。因為有些同學到這裡,還是不到訪問,很可能是防火牆沒有開啟相應的埠。防火牆這個東西我建議大家還是不要關閉,雖然麻煩了一點。

檢視已開啟的埠:

[root@localhost nginx-1.12.0]# firewall-cmd --zone=public --list-ports
20880/tcp 80/tcp 2181/tcp 23000/tcp 22122/tcp 9999/tcp
[root@localhost nginx-1.12.0]#

在我的CentOS上這些埠都是開放的。
storage:20880
tracker:23000
這兩個埠要開啟,到時候下一篇講fastdfs-client-javas可能會造成無法連線。
9999和80埠是提供給nginx訪問的。
開放埠號命令:–permanent表示永久生效,不加的話,重啟後不生效

firewall-cmd --zone=public --add-port=23000/tcp --permanent #開戶埠號

CentOS7 防火牆相關命令:

systemctl enable firewalld.service    #開啟防火牆
systemctl stop firewalld.service     #關閉防火牆(開機會仍會啟動)
systemctl disable firewalld.service  #禁用防火牆(開機後不再啟動)

2.6 HTTP測試

現在我們再去訪問一下,原來我們上傳過的檔案:
這裡寫圖片描述

這個時候已經能成功訪問。感謝你能堅持到現在,FastDFS已部署完成。
下一篇會講到fastdfs-client-java實現檔案上傳。

相關推薦

CentOS7搭建FastDFS V5.11分散式檔案系統Java整合詳細過程()

1.測試 前面兩篇博文已對FastDFS的安裝和配置,做了比較詳細的講解。FastDFS的基礎模組都搭好了,現在開始測試下載。 1.1 配置客戶端 同樣的,需要修改客戶端的配置檔案: vim /etc/fdfs/client.conf

CentOS7搭建FastDFS V5.11分散式檔案系統Java整合詳細過程(一)

1.緒論 最近要用到fastDFS,所以自己研究了一下,在搭建FastDFS的過程中遇到過很多的問題,為了能幫忙到以後搭建FastDFS的同學,少走彎路,與大家分享一下。FastDFS的作者淘寶資深架構餘慶,這個優秀的輕量及的分散式檔案系統的開源沒多久

CentOS7搭建FastDFS V5.11分散式檔案系統

第一篇主要講下載相關的軟體安裝包; 第二篇主要講FastDFS的搭建; 第三篇主要講FastDFS與Nginx的整合; 1、FastDFS與Nginx的整合並測試 前面兩篇博文已對FastDFS的安裝和配置,做了比較詳細的講解。FastDFS的基礎模組都搭好了,現在開始測試下載。

(二)CentOS7搭建FastDFS V5.11分散式檔案系統

第一篇主要講下載相關的軟體安裝包; 第二篇主要講FastDFS的搭建; 第三篇主要講FastDFS與Nginx的整合; 1、CentOS7中FastDFS搭建     1.1整理一下我們下載的軟體包 fastdfs-5.11 fastdfs-nginx-m

(一)CentOS7搭建FastDFS V5.11分散式檔案系統

宣告:本文章參考 https://blog.csdn.net/m0_37797991/article/details/73381648,此博文連線為我老師的博文連結,在搭建FastDFS V5.11分散式檔案系統環境中為記錄適合自己的環境搭建過程,特重寫此博文! 1、緒論 因學習以

CentOS7搭建FastDFS V5.11分布式文件系統-第二篇

情況 netstat prior 修改 update -c his int 分布式 1.CentOS7 FastDFS搭建 前面已下載好了要用到的工具集,下面就可以開始安裝了: 如果安裝過程中出現問題,可以下載我提供的,當前測試可以通過的工具包: 點這裏點這裏 1.1 安裝

CentOS7搭建FastDFS V5.11分布式文件系統-第

nginx rom jmp upload tro 結合 刪除 stc 開發 1.測試 前面兩篇博文已對FastDFS的安裝和配置,做了比較詳細的講解。FastDFS的基礎模塊都搭好了,現在開始測試下載。 1.1 配置客戶端 同樣的,需要修改客戶端的配置文件: /etc/f

Hadoop分散式檔案系統利用 java API 實現

(前提:自己的linux系統中的叢集已搭建完畢 )1 . 首先在電腦中安裝 hadoop     配置環境變數:    右鍵點選“計算機”--> 屬性 --> 高階系統設定 --> 環境變數     建立一個 “HADOOP_HOME”,值為hadoop安裝

JAVA核心技術I---JAVA基礎知識(檔案系統java檔案基本操作)

一:檔案概述 檔案系統是由OS(作業系統)管理的 檔案系統和Java程序是平行的,是兩套系統 檔案系統是由資料夾和檔案遞迴組合而成 檔案目錄分隔符 –Linux/Unix 用/隔開 –Windows用\隔開,涉及到轉義,在程式中需用/或\\代替 檔案包括檔案裡面的內容和檔案基本屬性 檔案

CentOS 7 安裝配置分散式檔案系統 FastDFS 5.11

            CentOS 7  安裝配置分散式檔案系統  FastDFS 5.11 前言:     FastDFS是現在比較流行的分散式檔案系

fastdfs + nginx 搭建分散式檔案系統(單機模式)

FastDFS安裝手冊 FastDFS之叢集部署:  http://blog.csdn.net/zhu_

centos7下glusterFs 分散式檔案系統環境搭建

1、GlusterFS簡介: GlusterFS是一個開源的分散式檔案系統 相關術語如下: - Brick:GFS中的儲存單元,通過是一個受信儲存池中的伺服器的一個匯出目錄。可以通過主機名和目錄名來標識,如’SERVER:EXPORT’ - Clien

Docker搭建分散式檔案系統fastDFSSpringBoot整合fastDFS

docker安裝fastdfs映象 docker pull morunchang/fastdfs 執行tracker docker run -d --name tracker --net=host morunchang/fastdfs sh tr

CentOS 7 安裝配置分散式檔案系統 FastDFS 5.11

            CentOS 7  安裝配置分散式檔案系統  FastDFS 5.11 前言:     FastDFS是現在比較流行的分散式檔案系統,很多網際網路公司比較青睞於它,我們公司由之前的ZIMG現在轉FastDFS,下面來講講簡單的安裝配置過程。

從零搭建分散式檔案系統MinIO比FastDFS要更合適

前兩天跟大家分享了一篇關於如何利用FastDFS元件來自建分散式檔案系統的文章,有興趣的朋友可以閱讀下《[用asp.net core結合fastdfs打造分散式檔案儲存系統](https://www.cnblogs.com/yilezhu/p/12797543.html)》。通過留言發現大家雖然感興趣,但是都

分散式檔案系統FastDFS簡介、搭建、與SpringBoot整合實現圖片上傳

之前大學時搭建過一個FastDFS的圖片伺服器,當時只是抱著好奇的態度搭著玩一下,當時搭建採用了一臺虛擬機器,tracker和storage服務在一臺機器上放著,最近翻之前的部落格突然想著在兩臺機器上搭建試一下,順便整合了SpringBoot實現了一下圖片的上傳服務。 新的閱讀體驗地址:http://www

Atitit 分散式檔案系統 hdfs nfs fastfs 目錄 1. 分散式檔案系統 1 2. 什麼是FastDFS 1 2.1. FastDFS特性: 1 2.1.1. fastdfs是否可在

Atitit 分散式檔案系統 hdfs nfs fastfs   目錄 1. 分散式檔案系統 1 2. 什麼是FastDFS 1 2.1. FastDFS特性: 1 2.1.1. fastdfs是否可在windows系統下安裝?可以的話,哪位可以..._百度知道 2

FastDFS分散式檔案系統配置與部署

一文搞定FastDFS分散式檔案系統配置與部署 閱讀目錄 1 分散式檔案系統介紹 2 系統架構介紹 3 FastDFS效能方案 4 Linux基本命令操作 5 安裝VirtualBox虛擬機器並配置Ubuntu

Hadoop分散式檔案系統搭建以及基本操作

1. 環境搭建 jdk-1.8 jdk下載地址 export JAVA_HOME = /usr/lib/java/jdk1.7.0_21 export PATH =$JAVA_HOME/bin:$PATH hadoop-2.7.3 hadoop各個版本

如何搭建MFS分散式檔案系統(二)

chunkServer資料儲存節點上的操作記錄 1)關閉防火牆(selinux也要關閉,執行setenforce 0) [[email protected] ~]# /etc/init.d/iptables stop 2)建立mfs使用者和組 [[email protec