分佈式文件系統fastfs

 第一步,網絡規劃:
 Tracker            192.168.88.215【192.168.224.20:22122】  CentOS
 Group1-Storage11   192.168.88.213【192.168.88.213:23000】  CentOS
 Group1-Storage12   192.168.88.214【192.168.224.26:23000】  CentOS
 Group2-Storage21   192.168.88.217【192.168.224.28:23001】  CentOS
 Group2-Storage22   192.168.88.216【192.168.224.29:23001】  CentOS
 第二步中止全部防火牆
 [root@localhost ~]# service iptables stop
 第三部相關文件下載
1.一、libfastcommon支持
wget https://github.com/happyfish100/libfastcommon/archive/master.zip
unzip master.zip
cd libfastcommon-master/
./make.sh  
./make.sh install
 2.
 wget http://osdn.jp/projects/sfnet_fastdfs/downloads/FastDFS%20Server%20Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20V5.05/FastDFS_v5.05.tar.gz
tar -zxvf FastDFS_v5.05.tar.gz
若是解壓失敗,請下載到window解壓後,在壓縮成 .zip ,而後上傳在 unzip解壓,我就是這樣的
cd FastDFS/
chmod +x make.sh
vim make.sh
./make.sh  
./make.sh install
3.
https://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz/download
4.wget http://labs.frickle.com/files/ngx_cache_purge-2.1.tar.gz
5.perl-5.20.2.tar.gz   
6.http://nginx.org/download/nginx-1.7.8.tar.gz
第四部
文件夾初始化:
 1. 配置tracker所需的base_path: /opt/fastdfs_tracker。
 2. 配置storage所需的日誌目錄: /opt/fastdfs_storage_info。 備註: 這個目錄是用來存儲storage之間同步文件等日誌的
 3. 配置storage所需的存儲文件目錄: /opt/fastdfs_storage_data。備註: 這個目錄是用來存儲文件的
 第五步,安裝libfastcommon-1.0.7.zip:【六臺】
 在安裝libfastcommon的過程當中,涉及瞭解壓縮、make安裝等過程,第一次安裝的時候,可能因爲環境的緣由,會提示好比沒有安裝unzip、zip;沒有安裝perl;沒有安裝gcc等,逐一安裝便可。
[root@localhost soft]#unzip master
2. 解壓完成後,進入文件夾,會看到make.sh文件,執行./make.sh命令,可能會報沒有安裝gcc和perl的錯誤
[root@localhost soft]# cd libfastcommon-master
[root@localhost libfastcommon-master]# ./make.sh
[root@localhost libfastcommon-master]#  ./make.sh install#若失敗參照http://www.open-open.com/lib/view/open1435468300700.html安裝perl和gcc
3.建立軟鏈接
     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
4.安裝fastdfs-5.05.tar.gz:
[root@localhost soft]# tar -zxvf FastDFS_v5.05.tar.gz
[root@localhost soft]# cd FastDFS
[root@localhost FastDFS]#  ./make.sh
[root@localhost FastDFS]# ./make.sh install
[root@localhost FastDFS]# cd  /etc/fdfs
[root@localhost fdfs]# ls
client.conf.sample  storage.conf.sample  tracker.conf.sample  #成功了
前 邊的這六步不管是配置tracker仍是配置storage都是必須的,而tracker和storage的區別主要是在安裝完fastdfs以後的配置 過程當中
第五步,配置tracker:
1. 進入/etc/fdfs文件夾,執行命令#【tracker:】
[root@localhost fdfs]# cd /etc/fdfs
[root@localhost fdfs]#  cp  tracker.conf.sample  tracker.conf  
2. 編輯tracker.conf,執行命令:
 [root@localhost fdfs]#vi  tracker.conf
  a. disabled=false            #啓用配置文件
  b. port=22122                #設置tracker的端口號,通常採用22122這個默認端口
  c. base_path=/opt/fastdfs_tracker   #設置tracker的數據文件和日誌目錄(預先建立)
  d. http.server_port=8080     #設置http端口號   注意,這個配置在fastdfs5.05這個版本中已經不用配置,不用管這個!
 3. 啓動tracker,執行以下命令:
[root@localhost fdfs]#  /usr/local/bin/fdfs_trackerd  /etc/fdfs/tracker.conf  restart
bash: /usr/local/bin/fdfs_trackerd: No such file or directory
 注意,通常fdfs_trackerd等命令在/usr/local/bin中沒有,而是在/usr/bin路徑下,因此命令修改以下:
 [root@localhost fdfs]# /usr/bin/fdfs_trackerd  /etc/fdfs/tracker.conf  restart
 4. 啓動完畢後,能夠經過如下兩個方法查看tracker是否啓動成功:
   a. netstat -unltp|grep fdfs,查看22122端口監聽狀況
   b. 經過如下命令查看tracker的啓動日誌,看是否有錯誤: tail -100f  /opt/fastdfs_tracker/logs/trackerd.log
 5. 若是啓動沒有問題,能夠經過如下步驟,將tracker的啓動添加到服務器的開機啓動中:
     a. 打開文件 vi /etc/rc.d/rc.local
     b. 將以下命令添加到該文件中 /usr/bin/fdfs_trackerd  /etc/fdfs/tracker.conf  restart
 第六步,配置storage:
   其實配置storage和配置tracker相似,只不過配置文件和配置內容不同。咱們以配置192.168.224.29配置storage爲例。
 第七步,配置storage:
 其實配置storage和配置tracker相似,只不過配置文件和配置內容不同
 1. 進入/etc/fdfs文件夾
[root@localhost fdfs]# cd /etc/fdfs
[root@localhost fdfs]# cp  storage.conf.sample  storage.conf
 2. 編輯storage.conf,執行命令: vi  storage.conf
 [root@localhost fdfs]# vi  storage.conf
 a. disabled=false            #啓用配置文件
 b. group_name=group2    #組名,根據實際狀況修改1,2
 c. port=23001     #設置storage的端口號,默認是23000,同一個組的storage端口號必須一致
 d. base_path=/opt/fastdfs_storage_info    #設置storage的日誌目錄(需預先建立)
 e. store_path_count=1   #存儲路徑個數,須要和store_path個數匹配
 f.  store_path0=/opt/fastdfs_storage_data   #存儲路徑
 g. tracker_server=192.168.88.215:22122   #tracker服務器的IP地址和端口號
 h. http.server_port=8080     #設置http端口號   注意,這個配置在fastdfs5.05這個版本中已經不用配置,不用管這個!
  3. 啓動storage,執行以下命令: /usr/local/bin/fdfs_storage  /etc/fdfs/storage.conf  restart
  意,通常fdfs_storage等命令在/usr/local/bin中沒有,而是在/usr/bin路徑下,因此命令修改以下:
[root@localhost fdfs]#   /usr/bin/fdfs_storaged  /etc/fdfs/storage.conf  restart
4. 啓動完畢後,能夠經過如下兩個方法查看storage是否啓動成功:
 a. netstat -unltp|grep fdfs,查看23001端口監聽狀況
 b. 經過如下命令查看storage的啓動日誌,看是否有錯誤: tail -100f  /opt/fastdfs_storage_info/logs/storage.log
  5. 啓動成功後,能夠經過fdfs_monitor查看集羣的狀況,即storage是否已經註冊到tracker服務器中
  [root@localhost fdfs]# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf 【在storage】上

    Storage 1:
        id = 192.168.88.213
        ip_addr = 192.168.88.213  ACTIVE
    Storage 2:
        id = 192.168.88.214
        ip_addr = 192.168.88.214  ACTIVE
    Storage 3:
        id = 192.168.88.216
        ip_addr = 192.168.88.216  ACTIVE
    Storage 4:
        id = 192.168.88.217
        ip_addr = 192.168.88.217  ACTIVE

以上七步其實已經完成了fastdfs的配置,若是此時你用java等api編輯客戶端,實際上就能夠完成文件的上傳、同步和下載。可是爲何網上還會有 不少人說須要nginx呢???
其實主要緣由時由於,咱們能夠經過配置nginx爲下載提供基於http協議的下載等功能。其實,storage中安裝nginx,主要是爲了爲提供http的訪問服務,同時解決group中storage
服務器的同步延遲問題。而tracker中安裝nginx,主要是爲了提供http訪問的反向代理、負載均衡以及緩存服務
第八步,安裝nginx的準備:
 不論是在tracker中仍是storage中安裝nginx,前提都須要安裝一些基礎軟件。一些大公司的服務器默認都會初始化這些軟件,可是你在配置的時候可能仍是最好本身利用命令確認一下。
 1. yum install -y gcc  這個前邊在安裝libfastcommon以前已經安裝了
 2. yum install -y gcc-c++ 這個前邊在安裝libfastcommon以前已經安裝了
 3. yum install -y pcre pcre-devel
 4. yum install -y zlib zlib-devel
 5. yum install -y openssl openssl-devel
 第九步,在storage中安裝nginx:
[root@localhost soft]# tar -zxf fastdfs-nginx-module_v1.16.tar.gz
a. 咱們在解壓縮fastdfs-nginx-module_v1.16.tar.gz以後,須要進入fastdfs-nginx-module/src目 錄,編輯config文件,找到包含CORE_INCS這個一行,將路徑中local所有去掉,變爲CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
[root@localhost soft]# cd fastdfs-nginx-module/src
[root@localhost src]# vi config
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
b. 創建軟鏈接,這個軟鏈接咱們在第五步安裝libfastcommon時的最後一個操做就已經創建了,因此此處不用再創建了。
[root@localhost fastdfs-nginx-module]# cd ~/soft
[root@localhost soft]# tar -zxf nginx-1.7.8.tar.gz
[root@localhost soft]# cd nginx-1.7.8
[root@localhost nginx-1.7.8]#  ./configure  --prefix=/usr/local/nginx  --add-module=/root/soft/fastdfs-nginx-module/src

 5. 執行命令 cd /usr/local/nginx/conf,編輯 寸這個文件,編輯以下:
在server段中添加:
          location ~/group2/M00{
                 root /opt/fastdfs_storage_data/data;
                 ngx_fastdfs_module;
          }

注意,若是配置的storage是在group2組,則下面的location應該是 ~/group2/M00
 6. 執行命令 cd /myself_settings/fastdfs5.0.5/fastdfs-5.05/conf,即進入fastdfs5.0.5的安裝文件夾的conf目錄下,將目錄下面的http.conf和mime.types拷貝到/etc/fdfs/下,若是不執行這一步,後邊在啓動nginx時會報錯。
[root@localhost nginx-1.7.8]#cp /root/soft/FastDFS/conf/http.conf /root/soft/FastDFS/conf/mime.types /etc/fdfs/
 7. 執行命令 cd /myself_settings/fastdfs_nginx_module/fastdfs-nginx-module/src,即進入 fastdfs-nginx-module_v1.16的安裝文件夾的src目錄下,將目錄下面的mod_fastdfs.conf這個文件拷貝到 /etc/fdfs 目錄下
 [root@localhost src]# cp /root/soft/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
 8. 打開 /etc/fdfs 這個目錄,編輯 mod_fastdfs.conf 這個文件,以下
 [root@localhost conf]# vi /etc/fdfs/mod_fastdfs.conf
  a. base_path=/opt/fastdfs_storage_info   #保存日誌目錄
  b. tracker_server=192.168.88.215:22122   #tracker服務器的IP地址以及端口號
  c. storage_server_port=23001   #storage服務器的端口號
  d. group_name=group2  #當前服務器的group名
  c. url_have_group_name= true        #文件url中是否有group名
  d. store_path_count=1          #存儲路徑個數,須要和store_path個數匹配
  e. store_path0=/opt/fastdfs_storage_data         #存儲路徑
  f. http.need_find_content_type=true     #從文件擴展名查找文件類型(nginx時爲true)  注意:這個配置網上通常都會列出,可是在fastdfs5.05的版本中是沒有的
  h. group_count= 2       #設置組的個數
  i.  在文件的末尾,按照第一步肯定的集羣目標,追加以下圖的配置:
[group1]
group_name=group1
storage_server_port=23000
store_path_count=2
store_path0=/opt/fastdfs_storage_data
store_path1=/opt/fastdfs_storage_data

[group2]
group_name=group2
storage_server_port=23000
store_path_count=2
store_path0=/opt/fastdfs_storage_data
store_path1=/opt/fastdfs_storage_data
9. 創建軟鏈接 ln  -s  /opt/fastdfs_storage_data/data  /opt/fastdfs_storage_data/data/M00
 ln  -s  /opt/fastdfs_storage_data/data  /opt/fastdfs_storage_data/data/M00
10. 執行命令啓動nginx: /usr/local/nginx/sbin/nginx ,若是/usr/local/nginx/logs/error.log中沒有報錯,同時訪問192.168.224.29:8080這個url能看到 nginx的歡迎頁面。
 第十一步,在tracker中安裝nginx:
 1. 建立nginx默認的安裝文件夾: mkdir /usr/local/nginx
 
 2. 提早將 nginx1.7.8.tar.gz、fastdfs-nginx-module_v1.16.tar.gz、ngx_cache_purge-2.1.tar.gz解壓縮,而後進入nginx1.7.8的文件夾目錄,執行以下命令:
 [root@localhost soft]# cd nginx-1.7.8
[root@localhost nginx-1.7.8]#  ./configure  --prefix=/usr/local/nginx  --add-module=/root/soft/fastdfs-nginx-module/src --add-module=/root/soft/ngx_cache_purge-2.1
 3. 執行完上述命令,若是沒有報錯的話,咱們繼續執行 make 命令,此時編譯有可能會報錯,那是由於咱們忘了作一項重要的工做,咱們能夠參考下面這篇文章http://bbs.chinaunix.net/thread-4163021-1-1.html中的解答,其實彙總就是下面兩個意思:
  a. 咱們在解壓縮fastdfs-nginx-module_v1.16.tar.gz以後,須要進入fastdfs-nginx-module/src目 錄,編輯config文件,找到包含CORE_INCS這個一行,將路徑中local所有去掉,變爲CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
  b. 創建軟鏈接,這個軟鏈接咱們在第五步安裝libfastcommon時的最後一個操做就已經創建了,因此此處不用再創建了。
4. 執行完3個步驟後,咱們在重複執行2中的命令,而後再依次執行 make 和 make install 這兩個命令,沒有報錯誤就是安裝成功了。
5. 執行命令 cd /usr/local/nginx/conf,編輯 nginx.conf 這個文件,編輯以下:
#user  nobody;
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;
     
    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 /opt/cache/nginx/proxy_cache levels=1:2
    keys_zone=http-cache:500m max_size=10g inactive=30d;
    proxy_temp_path /opt/cache/nginx/proxy_cache/tmp;
 
    upstream fdfs_group1 {
         server 192.168.88.213:8080 weight=1 max_fails=2 fail_timeout=30s;
         server 192.168.88.214:8080 weight=1 max_fails=2 fail_timeout=30s;
    }
     
    upstream fdfs_group2 {
         server 192.168.88.217:8080 weight=1 max_fails=2 fail_timeout=30s;
         server 192.168.88.216:8080 weight=1 max_fails=2 fail_timeout=30s;
    }
 
    server {
        listen       8080;
        server_name  localhost;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        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.88.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;
        }
 
 
}
[root@localhost opt]#  /usr/local/nginx/sbin/nginx  -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
6. 執行命令啓動nginx: /usr/local/nginx/sbin/nginx ,若是/usr/local/nginx/logs/error.log中沒有報錯,同時訪問192.168.224.20:8080這個url能看到 nginx的歡迎頁面。
base_path=/opt/fastdfs_tracker    #存放路徑
tracker_server=192.168.88.215:22122       #tracker服務器IP地址和端口號
http.tracker_server_port=8080  #tracker服務器的http端口號,注意,這個配置在fastdfs5.0.5中已經沒有用了
 2. 模擬上傳文件,執行以下命令: /usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /opt/1.txt
[root@localhost opt]# /usr/bin/fdfs_upload_file  /etc/fdfs/client.conf  /opt/1.txt
group2/M00/00/00/wKhY1VboBaqAXujtAAAAG8nEx7I294.txt
http://192.168.88.215:8080/group2/M00/00/00/wKhY1VboBaqAXujtAAAAG8nEx7I294.txt
lkxcxqewm;lcn wqlkc q'dcqw
若出現
[2016-03-15 06:18:34] ERROR - file: ini_file_reader.c, line: 394, include file "http.conf" not exists, line: "#include http.conf"
[2016-03-15 06:18:34] ERROR - file: /root/soft/fastdfs-nginx-module/src/common.c, line: 155, load conf file "/etc/fdfs/mod_fastdfs.conf" fail, ret code: 2
[root@localhost conf]# cd /root/soft/FastDFS/conf
[root@localhost conf]# cp http.conf mime.types /etc/fdfs
[root@localhost conf]# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf delete group2 192.168.88.214
#注意nginx端口要一致

html

相關文章
相關標籤/搜索