文档章节

分布式文件系统fastfs

泡海椒
 泡海椒
发布于 2016/03/14 22:56
字数 3104
阅读 314
收藏 7

 第一步,网络规划:
 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.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端口要一致

© 著作权归作者所有

泡海椒
粉丝 11
博文 282
码字总数 288344
作品 0
成都
程序员
私信 提问
网站上线流程

上线的流程 1. 上线流程包含下列几个方面: 1.1. 网络规划 1.2. 系统规划 1.3. 数据迁移 2. 网络规划包含的内容 2.1. 挑选机房 2.2. 是否需要划分多个网段 2.3. 出口是否需要VSRP 2.4. 交换机...

yinxingyouyou
2017/06/27
0
0
分布式文件系统资料转载

自己以前接触过一段时间分布式文件系统mfs,可惜没有坚持下去。 编码也有那么几年了,总想看点学点工作以外的东西, 所以又把分布式翻了出来。 常见的分布式文件系统有,GFS、HDFS、Lustre 、...

CoderFarmer
2014/05/29
0
0
常见的分布式文件系统介绍

常见的分布式文件系统有,GFS、HDFS、Lustre 、Ceph 、GridFS 、mogileFS、TFS、FastDFS等。各自适用于不同的领域。它们都不是系统级的分布式文件系统,而是应用级的分布式文件存 储服务。 ...

Foundation
2015/12/14
311
0
菜鸟学Linux 第105篇笔记 海量存储解决

菜鸟学Linux 第105篇笔记 海量存储解决 内容总览 大数据带来的挑战 传统存储SAN 分布式存储 多线程与进程执行模式 计算机五大部件变化 分布式系统的难点 分布式文件系统设计目标 分布式事务的...

Winthcloud
2017/02/23
0
0
UCan下午茶 2018-武汉站《大话分布式存储》

随着信息化程度的不断提高,全球数据日益膨胀。面对当前PB级的海量数据存储需求,传统的存储系统在容量和性能的扩展上存在瓶颈。云存储以其扩展性强、性价比高、容错性好等优势得到了业界的广...

UCloudTech
2018/10/29
23
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
今天
5
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
今天
6
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
6
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
4
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部