Fastdfs部署

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。
特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口,FastDFS同时对文件的metadata进行管理。所谓文件的meta data就是文件的相关属性,以键值对(key valuepair)方式表示,如:width=1024,其中的key为width,value为1024。文件metadata是文件属性列表,可以包含多个键值对。跟踪器和存储节点都可以由一台或多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。

安装步骤:

 1.首先安装编译环境:
 yum install lrzsz telnet gcc gcc-c++ glib2-devel openssl-devel pcre-devel bzip2-devel gzip perl-devel perl-ExtUtils-Embed  
 automake autoconf libtool make openssl -y

wget https://github.com/happyfish100/libfastcommon/archive/master.zip
 unzip libfastcommon-master.zip
 cd libfastcommon-master
  ./make.sh
  ./make.sh install

2.安装FastDFS
tar xf FastDFS_v5.05.tar.gzcd FastDFS 
vim make.sh
TARGET_PREFIX=$DESTDIR /usr/local/fastdfs
TARGET_CONF_PATH=$DESTDIR /usr/local/fastdfs/conf
TARGET_INIT_PATH=$DESTDIR/etc/init.d
./make.sh
./make.sh install
安装tracker
安装storage
编辑storage服务器ID与IP地址的对应关系
在tracker上查看状态信息:
a)
/usr/local/fastdfs/bin/fdfs_monitor /usr/local/fastdfs/conf/client.conf
上传测试
/usr/local/fastdfs/bin/fdfs_upload_file/usr/local/fastdfs/conf/client.conf /tmp/t1.jpg 
在storage中只生成一个文件。
整合nginx
此操作在storage中进行
tar xzvf pcre-8.36.tar.gz
cd pcre-8.36
./configure --prefix=/usr/local/pcre
make
make install
tar xzvf fastdfs-nginx-module_v1.16.tar.gz
vim /usr/local/src/fastdfs-nginx-module/src/config
CORE_INCS="$CORE_INCS /usr/local/fastdfs/include/fastdfs /usr/include/fastcommon/" 
CORE_LIBS="$CORE_LIBS L/usr/local/fastdfs/lib64 -lfastcommon -lfdfsclient" 
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64 -DFDFS_OUTPUT_CHUNK_SIZE='256*1024' -DFDFS_MOD_CONF_FILENAME='\"/usr/local/fastdfs/conf/mod_fastdfs.conf\"'" 
tar xzvf nginx-1.6.2.tar.gz
cd nginx-1.6.2
./configure --user=www --group=www --prefix=/usr/local/nginx --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre --add module=/usr/local/src/fastdfs-nginx-module/src
make
make install

b)
访问方式:http://xxx.xxx.xxx.xxx/group1/M00/00/00/xxx.jpg
前端负载均衡及缓存
在tracker中架构nginx负载均衡及缓存。
tar xzvf ngx_cache_purge-2.3.tar.gz
tar xzvf pcre-8.36.tar.gz
tar xzvf nginx-1.6.2.tar.gz
cd pcre-8.36 
./configure --prefix=/usr/local/pcre 
make 
make install 
cd nginx-1.6.2 
./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_spdy_module --with-http_stub_status_module --with-pcre --add- module=/usr/local/src/ngx_cache_purge-2.3
make 
make install 

上传交互过程编辑
1. client询问tracker上传到的storage,不需要附加参数;
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件上传。
FastDFS file download
下载交互过程编辑
1. client询问tracker下载文件的storage,参数为文件标识(卷名和文件名);
2. tracker返回一台可用的storage;
3. client直接和storage通讯完成文件下载。
需要说明的是,client为使用FastDFS服务的调用方,client也应该是一台服务器,它对tracker和storage的调用均为服务器间的调用。

 

tracker
  安装路径:/usr/local/fastdfs
  重启命令:/etc/init.d/fdfs_trackerd restart
  storage
  安装路径:/usr/local/fastdfs
  存储路径:/data/fastdfs/storage/data
  重启命令:/etc/init.d/fdfs_storaged restart 
  接口配置
  需要在所有的接口中进行如下配置:
  1. 安装压缩图片所需要的程序
      从线下32接口中上传/usr/bin/gm到接口服务器的/usr/bin/下。
      yum install ImageMagick -y
  2. 创建目录及修改配置
      mkdir   /opt/image
      编辑system_constant.properties 增加 path.image.temp=/opt/image
      增加如下文件
      WEB-INF/classes/fdfs_client.conf 
      WEB-INF/lib/im4java.jar   fsds*
   3. 重启tomcat
 fastdfs支持多组多域名
    1. storage配置文件修改
        拷贝storage.conf到storage1.conf,修改storage1.conf的如下配置。
        group_name=public2
        port=23001
        base_path=/data/fastdfs/storage1 
        store_path0=/data/fastdfs/storage1
mod_fastdfs.conf 配置文件修改如下配置。
        注释#storage_server_port=23000
        注释#group_name=public1
        注释#store_path0=/data/fastdfs/storage
        修改group_count = 2
        增加往下配置。
        [group1]
        group_name=public1
        storage_server_port=23000
        store_path_count=1 
        store_path0=/data/fastdfs/storage
       [group2]
       group_name=public2
       storage_server_port=23001
       store_path_count=1
       store_path0=/data/fastdfs/storage1
       storage重启方式改变
       由/etc/init.d/fdfs_storaged restart修改为:
       /usr/local/fastdfs/bin/fdfs_storaged /usr/local/fastdfs/conf/storage.conf
       /usr/local/fastdfs/bin/fdfs_storaged /usr/local/fastdfs/conf/storage1.conf
3. 上传文件测试
默认的情况,文件上传到public1组,需要测试上传到public2组,需要更改tracker中stacker.conf的配置
store_lookup=1
store_group=public2



4. 外网访问nginx配置文件

 外网访问nginx配置文件
    storage nginx.conf配置文件
    user www www;
    worker_processes  8;
   events {
   worker_connections  10240;
 }
http {
   include       mime.types;
   default_type  application/octet-stream;
   client_header_buffer_size 16k;
   large_client_header_buffers 4 64k;
   sendfile        on;
   keepalive_timeout  65;
   server {
       listen       80;
       server_name  img05.allinmd.cn;;
       location /public1/M00 {
               alias /data/fastdfs/storage/data/;
               ngx_fastdfs_module;
       }
   }
   server {
       listen  80;
       server_name img06.allinmd.cn;
       location /public2/M00 {
               alias /data/fastdfs/storage1/data/;
               ngx_fastdfs_module;
       }
}
}        
      tracker nginx.conf配置文件 ,添加如下server段
     server {
       listen  80;
       listen 443 ssl;
       ssl_certificate ../sslkey/1__.allinmd.cn_bundle.crt;
       ssl_certificate_key ../sslkey/2__.allinmd.cn.key;
       ssl_session_timeout 5m;
       ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
       ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:-LOW:!aNULL:!eNULL; ssl_prefer_server_ciphers on;
       server_name  img06.allinmd.cn;
       location /public2/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 1d;
       }
       location ~ /purge(/.*) {
           allow 127.0.0.1;
           allow 192.168.1.0/24;
           allow 192.168.11.0/24;
           deny all;
           proxy_cache_purge http-cache  $1$is_args$args;
       }
   }
 解决客户端上传不能自动指定组名问题,多tracker端口支持。
上面说到,需要手工更改tracker.conf文件才能实现上传到public1或public2 storage中,但程序不会自动修改配置文件的,这样就需要多tracker端口支持。
    1. tracker端配置文件修改
        cp tracker.conf tracker1.conf,修改tracker1.conf文件
        base_path=/data/fastdfs/tracker1
        store_group=public2
        storage_ids_filename = storage_ids1.conf
        cat storage_ids.conf
   # <id>  <group_name>  <ip_or_hostname>
      100001   public1   10.170.249.18
      100002   public1   10.172.220.94
cat storage_ids1.conf
<id> <group_name> <ip_or_hostname>
100003 public2 10.170.249.18
100004 public2 10.172.220.94
cp client.conf client1.conf,修改client1.conf文件
base_path=/data/fastdfs/tracker1
tracker_server=10.44.169.68:22123
storage_ids_filename = storage_ids1.conf
2. storage端配置文件修改
修改storage1.conf文件
tracker_server=10.44.169.68:22123
3. tracker启动方式
之前采用/etc/init.d/fdfs_tracker restart方式,修改为:
/usr/local/fastdfs/bin/fdfs_trackerd /usr/local/fastdfs/conf/tracker.conf
/usr/local/fastdfs/bin/fdfs_trackerd /usr/local/fastdfs/conf/tracker1.conf
4. 测试
/usr/local/fastdfs/bin/fdfs_upload_file /usr/local/fastdfs/conf/client.conf /tmp/a.jpg 
public1/M00/00/00/CqzcXlcsaMSABe23AAKiG08B9J8746.jpg 
/usr/local/fastdfs/bin/fdfs_upload_file /usr/local/fastdfs/conf/client1.conf /tmp/a.jpg 
public2/M00/00/00/CqzcXlcsaMiAFgmVAAKiG08B9J8888.jpg

 

posted @ 2018-12-17 17:24  fuhaizi  阅读(218)  评论(0编辑  收藏  举报