最近在研究负载均衡和集群,其中涉及到一个主要问题是,如何让集群中的real server共享一套文件系统。在网上查到FastDFS,国人(happy fish,感谢他的开源精神)开发的一套轻量级分布式文件系统。实际搭建了一下,感觉还不错,小巧易用,支持http下载。
虽然FastDFS官方网站 上已经有比较详细的按照使用手册,但在实际搭建过程中,还是遇到了很多问题,希望我的记录可以让后来的同学们少走一些弯路:)
下面进入正题.

FastDFS安装使用实战(安装篇)

Keywords:FastDFS、分布式文件系统、Ubuntu

Author:soartju

转载请注明出处:http://soartju.iteye.com/blog/803477

目前FastDFS支持类Unix系统 ,在Linux和FreeBSD下测试过,本文使用的是Ubuntu10.4,建议安装之前先简单了解一下FastDFS的原理 ,这对后继的配置部分会有很好的理解。

一、准备工作-安装libevent

FastDFS 内部绑定了
libevent 作为 http 服务器 ,在V2.X版本必须安装 libevent ,本文安装的是V2.2版本,因此必须安装libevent。(官方也推荐使用 http 方式下载 文件 )

如果已经安装了 libevent,请确认安装路径是 /usr , 因为 FastDFS 在编译源程序时,需要到此目录下查找一些依赖文件,否则编译 FastDFS 会出错 。如果不是,建议首先卸载 libevent ,然后安装到 /usr 下。Ubuntu10.4默认是安装了libevent,可以到软件中心卸载掉然后按照下面介绍的方式安装。

本文安装的是 libevent1.4.14b-stable
,下载地址: http://monkey.org/~provos/libevent/

安装步骤:
解压
libevent ,然后进入解压后的目录分别执行:

Shell代码  

  1. ./configure --prefix=/usr
  2. make clean;
  3. make
  4. make install

安装libevent完成。

二、安装 FastDFS

1、下载
FastDFS 源程序,下载地址 http://code.google.com/p/fastdfs/downloads/list ,这里下载的是 FastDFS_v2.02.tar.gz (建议安装V2.02版本,比V1.X版本更加稳定且性能提升明显)

2、在
FastDFS_v2.02.tar.gz 所在文件夹下执行:

Shell代码  

  1. sudo tar vxzf FastDFS_v2.02.tar.gz /home/soar/FastDFS

注:
/home/soar/FastDFS 也可以是其他目录,记住这是解压目录,以后用 %FastDFS% 表示)

3、由于要使用内置的 http 服务,因此编辑 %FastDFS%/make.sh 文件,找到
#WITH_HTTPD=1 
修改成
WITH_HTTPD=1 
以支持
http

4、进入
%FastDFS% 目录,执行:

Shell代码  

  1. sudo ./make.sh

5、在
%FastDFS% 目录下,执行:

Shell代码  

  1. sudo ./make.sh install

如果运行如上命令后,在命令行信息最后看到类似

Shell代码  

  1. #ln -fs /usr/local/lib/libfastcommon.so.1 /usr/local/lib/libfastcommon.so
  2. #ln -fs /usr/local/lib/libfdfsclient.so.1 /usr/local/lib/libfdfsclient.so
  3. sh ./fdfs_link_library.sh

恭喜你,已经安装成功了!

 

FastDFS安装使用实战二(配置篇)

Keywords:FastDFS、分布式文件系统、Ubuntu

Author:soartju

转载请注明出处:http://soartju.iteye.com/blog/803524

FastDFS的配置文件在%FastDFS%/conf目录下,其中包括
Client.conf    客户端上传配置文件
Storage.conf    文件存储服务器配置文件
Tracker.conf    负责均衡调度服务器配置文件
http.conf        http服务器配置文件

配置文件需要根据服务器环境的不同,进行不同的配置,具体可以参考FastDFS官方的安装配置文档http://code.google.com/p/fastdfs/wiki/Setup,以及FastDFS原理介绍文档http://code.google.com/p/fastdfs/wiki/Overview

在本例中,Tracker Server,Storage Server都安装在一台服务器上,IP:10.0.2.15

1、配置及启动Tracker Server

A、修改%FastDFS%/conf/tracker.conf文件,修改如下
#可以自己指定目录位置,但目录必须存在,用于存储日志及storage server等信息,否则tracker server无法启动

Txt代码  

  1. base_path=/home/yuqing/fastdfs -> base_path=/home/soar/fastdfs_tracker

#改成你想要的http端口,将来http下载文件的端口就是他了

Txt代码  

  1. http.server_port=8080 -> http.server_port=8090

#http支持

Txt代码  

  1. ##include http.conf -> #include http.conf

#默认4GB,如果空间不足,建议调小,否则会报no free space的异常,无法正常启动

Txt代码  

  1. reserved_storage_space = 4GB -> reserved_storage_space = 1GB

#tracker
server对storage
server供服务的端口,使用默认的即可,也可以自定义

Txt代码  

  1. port=22122

B、将http.conf文件拷贝到/etc/fdfs目录下,执行

Shell代码  

  1. sudo cp %FastDFS%/conf/http.conf /etc/fdfs/

注:为了支持http,必须将这个文件拷贝到此目录,否则无法启动,报param http.XXX not exist or is empty类似的错误

C、进入/usr/local/bin/目录,启动tracker服务器,执行

Shell代码  

  1. sudo fdfs_trackerd %FastDFS%/conf/tracker.conf

D、进入/home/soar/fastdfs_tracker/logs/trackerd.log查看tracker的启动日志,如果看到类似

Shell代码  

  1. [2010-11-04 16:21:25] INFO - FastDFS v2.02, base_path=/home/soar/fastdfs_tracker, connect_timeout=30s, network_timeout=60s, port=22122, bind_addr=, max_connections=256, work_threads=4, store_lookup=2, store_group=, store_server=0, store_path=0, reserved_storage_space=4MB, download_server=0, allow_ip_count=-1, sync_log_buff_interval=10s, check_active_interval=120s, thread_stack_size=64 KB, storage_ip_changed_auto_adjust=1, storage_sync_file_max_delay=86400s, storage_sync_file_max_time=300s
  2. [2010-11-04 16:21:25] INFO - HTTP supported: server_port=8090, default_content_type=application/octet-stream, anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0, token_check_fail content_type=, token_check_fail buff length=0, check_active_interval=30, check_active_type=tcp, check_active_uri=/status.html

恭喜你,tracker server已经启动成功!

2、配置及启动Storage Server

A、修改%FastDFS%/conf/storage.conf文件,修改如下:
#可以自定义,但必须存在此目录,用于存储storage相关的log、group内的相关信息

Txt代码  

  1. base_path=/home/yuqing/fastdfs -> /home/soar/fastdfs_storge

#文件的存储位置,在一台storage
server上可以指定多个存储位置

Txt代码  

  1. store_path0=/home/yuqing/fastdfs -> store_path0=/home/soar/fastdfs_storge

#必须指定

Txt代码  

  1. group_name=group1

#修改成tracker
server的IP和端口信息

Txt代码  

  1. tracker_server=192.168.209.121:22122 -> tracker_server=10.0.2.15:22122

#http支持

Txt代码  

  1. ##include http.conf ->#include http.conf

B、进入/usr/local/bin/目录,启动storage服务器,执行

Shell代码  

  1. sudo fdfs_storaged %FastDFS%/conf/storage.conf

C、进入/home/soar/fastdfs_tracker/logs/storage.log查看storage服务器启动日志,如果看到类似

Shell代码  

  1. [2010-11-04 16:37:16] INFO - FastDFS v2.02, base_path=/home/soar/fastdfs_storge, store_path_count=1, subdir_count_per_path=256, group_name=group1, connect_timeout=30s, network_timeout=60s, port=23000, bind_addr=, client_bind=1, max_connections=256, work_threads=4, disk_rw_separated=1, disk_reader_threads=1, disk_writer_threads=1, buff_size=256KB, heart_beat_interval=30s, stat_report_interval=60s, tracker_server_count=1, sync_wait_msec=200ms, sync_interval=0ms, sync_start_time=00:00, sync_end_time=23:59, write_mark_file_freq=500, allow_ip_count=-1, file_distribute_path_mode=0, file_distribute_rotate_count=100, fsync_after_written_bytes=0, sync_log_buff_interval=10s, sync_binlog_buff_interval=60s, sync_stat_file_interval=300s, thread_stack_size=512 KB, upload_priority=10, if_alias_prefix=, check_file_duplicate=0, FDHT group count=0, FDHT server count=0, FDHT key_namespace=, FDHT keep_alive=0, HTTP server port=8888, domain name=
  2. [2010-11-04 16:37:16] INFO - HTTP supported: server_port=8888, http_trunk_size=262144, default_content_type=application/octet-stream, anti_steal_token=0, token_ttl=0s, anti_steal_secret_key length=0, token_check_fail content_type=, token_check_fail buff length=0
  3. [2010-11-04 16:37:16] INFO - file: storage_param_getter.c, line: 48, storage_ip_changed_auto_adjust=1
  4. [2010-11-04 16:37:19] INFO - file: tracker_client_thread.c, line: 274, successfully connect to tracker server 10.0.2.15:22122, as a tracker client, my ip is 10.0.2.15

恭喜你,storage server已经启动成功!

 

FastDFS安装使用实战三(使用篇)

Keywords:FastDFS、分布式文件系统、Ubuntu

Author:soartju

转载请注明出处:http://soartju.iteye.com/blog/803548

经过前面的安装、配置、启动,马上就可以看到FastDFS的效果了,我们先上传一个文件,然后再通过http下载。

一、上传文件

FastDFS安装包中,自带了客户端程序,通过程序可以进行文件上传。在使用这个客户端程序之前,首先需要配置client.conf,然后再进行文件上传及下载。

1、修改%FastDFS%/conf/client.conf文件,修改如下:
#可自定义,但此目录必须存在,用于存放文件上传log

Txt代码  

  1. base_path=/home/yuqing/fastdfs-> base_path=/home/soar/fastdfs_tracker

Txt代码  

  1. tracker_server=192.168.209.121:22122 -> tracker_server=10.0.2.15:22122

Txt代码  

  1. http.tracker_server_port=8080 ->http.tracker_server_port=8090

#支持http

Txt代码  

  1. ##include http.conf ->#include http.conf

2、进入/usr/local/bin/目录,上传文件,执行

Txt代码  

  1. sudo fdfs_test %FastDFS%/conf/client.conf upload a.txt

注:a.txt可以在/usr/local/bin/目录下自己创建一个

如果命令行反馈类似如下:

则说明上传文件成功。

二、下载文件

在浏览器中,输入上图中的url地址, tracker server会自动重定向到存储文件的storage server,文件下载成功。

至此,已经成功搭建了FastDFS,编写你自己的client来进行访问吧:)

FastDFS介绍和配置过程 二的更多相关文章

  1. 分布式文件系统FastDFS介绍和配置过程

    http://ylw6006.blog.51cto.com/470441/948729/ 由于网站使用nfs共享方式保存用户上传的图片,附件等资料,然后通过apache下载的方式供用户访问,在网站架构 ...

  2. FastDFS介绍和配置过程

    由于网站使用nfs共享方式保存用户上传的图片,附件等资料,然后通过apache下载的方式供用户访问,在网站架构初期,使用这种简单的方式实现了静态资源的读写分离,但随着网站数据量的增加,图片服务器渐渐成 ...

  3. FastDFS介绍和搭建(转载)

    FastDFS介绍和配置过程--http://blog.51cto.com/ylw6006/948729 FastDFS的五篇文章--http://www.cnblogs.com/smartycity ...

  4. FastDFS配置过程

    在我的生产环境中利用FastDFS实现动静分离的方案

  5. Linux的VMWare下Centos7的三种网络配置过程(网络二)

    Linux之VMWare下Centos7的三种网络配置过程 环境:虚拟软件:VMWare 14.0客户机:windows 10虚拟机:centos 7 VMware三种网络连接方式 Bridge(桥接 ...

  6. FastDFS的安装配置

    一:实验描述: fastdfs 介绍 FastDFS是一个开源的分布式文件系统,它对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负载均衡的问题.特别 ...

  7. 【Big Data】HADOOP集群的配置(二)

    Hadoop集群的配置(二) 摘要: hadoop集群配置系列文档,是笔者在实验室真机环境实验后整理而得.以便随后工作所需,做以知识整理,另则与博客园朋友分享实验成果,因为笔者在学习初期,也遇到不少问 ...

  8. Win7上Git安装及配置过程

    Win7上Git安装及配置过程 文档名称 Win7上Git安装及配置过程 创建时间 2012/8/20 修改时间 2012/8/20 创建人 Baifx 简介(收获) 1.在win7上安装msysgi ...

  9. FastDFS、nginx配置手记

    第一部分   FastDFS介绍 1.FastDFS是什么 FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux.FreeBSD.AIX等UNIX系统.它只能 ...

随机推荐

  1. mysql-jdbc创建Statement与执行SQL

    使用JDBC创建Connection后,执行SQL需要先创建Statement Statement stmt = connection.createStatement(); 创建代码如下 public ...

  2. Weex入门篇——Mac 安装Weex

    相关文档:http://blog.csdn.net/jasonblog/article/details/51863173 前言 相比较于React Native的“Learn once, write ...

  3. 转载 关于include尖括号和双引号的区别。

    对于使用尖括号( < >),预处理程序cpp在系统预设包含文件目录(如/usr/include)中搜寻相应的文件,而对于使用双引号(“ ”),cpp在当前目录中搜寻头文件,这个选项的作用是 ...

  4. 8 函数类型——《Swift3.0从入门到出家

    Swift语言中每一个函数都有它特定的数据类型,称其为函数类型 函数类型和基本数据类型一样,可以定义变量或者常量,可以定义函数形参,也可以做为函数的返回值类型 函数类型的格式为:参数列表的数据类型—& ...

  5. 笔记:开源协议 Apache 2 和 GPL 兼容

    笔记:开源协议 Apache 2 和 GPL 兼容 Apache 2 和 GPL v3 兼容. GPL 分了很多版本,LGPL 为最宽松的 GPL,而 AGPL 为最严格的 GPL 协议. Linux ...

  6. UCloud 云服务器硬盘扩容后 如何挂载到本机

    UCloud 云服务器硬盘扩容后如何挂载到本机 UCloud 提供的云服务器会根据不同的系统初始化不同空间大小的硬盘资源,此资源默认为 系统盘. 针对 Linux 系统默认初始化 20G 的空间,一般 ...

  7. 利用bat合并两个hex文件

    单片机程序如果有IAP功能的话,就会生成两个hex文件,一个是Boot,一个是App,如果给让生产烧录两个文件,就会降低生产效率,所以在烧录前最好将两个文件合并成一个文件,烧录一次即可,合并方法如下: ...

  8. Spring Boot Oauth2

    Oauth2是描述无状态授权的协议(授权框架),因为是无状态,所以我们不需要维护客户端和服务器之间的会话. Oauth2的工作原理: 此协议允许第三方客户端代表资源所有者访问受保护资源,Oauth2有 ...

  9. MySQL存储过程中的3种循环,存储过程的基本语法,ORACLE与MYSQL的存储过程/函数的使用区别,退出存储过程方法

    在MySQL存储过程的语句中有三个标准的循环方式:WHILE循环,LOOP循环以及REPEAT循环.还有一种非标准的循环方式:GOTO,不过这种循环方式最好别用,很容易引起程序的混乱,在这里就不错具体 ...

  10. 2017中国大学生程序设计竞赛 - 女生专场(dp)

    Building Shops Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) To ...