FASTDFS是一个开源的分布式文件系它对文件行管理,功能包括:文件存、文件同步、文件访问(文件上、文件下)等,解了大容量存负载均衡的问题

FastDFS端有两个角色:跟踪器(tracker)和存storage)。跟踪器主要做度工作,在访问上起负载均衡的作


Linux虚拟机安装


VMWARE:

vmware 可以从官网上下载,也可以下下载破解版的,本测试采用的是vmware11

Linux采用的是Centos6.5

虚拟机的候可能遇到Vt-x于禁用状态,无法创建,这时bios启动IntelVirtual Technology开启即可。

配置NAT静态网

  1. Vmware编辑-虚拟网编辑

选择NAT模式

窗口下方有子ip192.168.128.0 255.255.255.0

NAT网关192.168.128.2

  1.  修改网络配置文件ifcfg-eth0

    入文件目

    命令:cd/etc/sysconfig/sysconfig-scripts


编辑文件


    vi ifcfg-eth0


加入:

IPADDR=192.168.128.10      //VMnet8段即可

NETMASK=255.255.255.0     //

GATEWAY=192.168.128.2     //网关

ARPCHECK=no            

     更改

                   ONBOOT=yes                             //激活

                   BOOTPROTO=static        //static静态dhcp动态none

  1. 增加dns

    vi /etc/resolv.conf  添加

    nameserver  8.8.8.8

    nameserver  8.8.4.4

  2. 修改主机名

    1. vi /etc/sysconfig/network  修改hostname为你的主机名

    2. vi /etc/hosts 修改127.0.0.1后的localhost.localdomain主机名


启网卡:

命令:service network restart

注:centos6.5认开启ARPCHECK,需要加入ARPCHECK=no则会报

Determining if ip address192.168.128.10 is already in use

安装fastdfs

安装libevent

fastdfs中引用了libevent类库,通ssh客户端libevent安装包虚拟/usr


  1. libevent-2.0.22-stable.tar.gz

    1. tar -zxvf libevent-2.022-stable.tar.gz  //

    2. mv libevent-2.022-stable  libevent   //重命名

  2. 编译安装libevent

    1. cd libevent  //libevent主目

    2. ./configure -prefix=/usr  //生成makefile文件为编译做准bei

发现错Error: no acceptable C compiler found in $PATH有安装gcc套件

yuminstall gcc    //安装gcc套件

安装gcc时候发现报错Loaded plugins: fastestmirror Loading mirror speeds fromcached hostfile是因yum开启像下fastestmirror根据响应速度地址,因地域等原因,下不下方法:

       方法一yum--disableplugin=fastestmirror update

       方法二:vi/etc/yum/pluginconf.d/fastestmirror.conf  更改enable=0

再次yum–y install gcc问题始下,直至complete

过头来在次

./configure  -prefix=/usr   //可以不prefix /usr/local/bin /usr/local/lib

    1. make && make install && make clean   //编译 安装临时文件

    2. ln -s /usr/lib/libevent*  /lib64/   //安装文件的软连

安装fastDFs

编译安装fastDFS


  1. fastDFS-4.06.tar.gz 并进入解后的目编译 安装

    ./make.sh      //编译

               编译候需要gcc perl脚本,gcc前文已安装 ,此时还需要安装perl

                       yum–y install perl

    ./make.sh install  //安装 ,路如下

    如果报错则应该是安装成功了,/etc/fdfs 就可以看到配置文件了,如下


克隆虚拟

分布式部署,需要多台虚拟机,而如果在从头开虚拟机的,无疑是上述的安装步再多做一次,而且,像perlgcc等又需要下载编译安装,无疑是必要的,而且,上面安装配置在每台机器上都一,所以,就需要上述配置的虚拟机克隆多,用storage

克隆操作需要先关闭虚拟机,

vmware我的算机虚拟机,管理,点下一步,下一步,选择完全克隆,等待完成

克隆完成后需要稍加稍加配置才能使用,因mac地址跟被克隆的机器一

  1. 修改mac地址:

vi/etc/udev/rules.d/70-persistent-net.rules //编辑网设备

容如下


# PCIdevice0x1022:0x2000 (pcnet32) 
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*",ATTR{address}=="00:0c:29:16:f4:f0",ATTR{type}=="1",KERNEL=="eth*", NAME="eth0"
  
# PCI device0x1022:0x2000 (pcnet32) 
SUBSYSTEM=="net",ACTION=="add",DRIVERS=="?*", ATTR{address}=="00:0c:29:52:45:97",ATTR{type}=="1",KERNEL=="eth*", NAME="eth1"


第一个网卡,放第二个网卡,修改eth1eth0并记录mac地址(ATTR{address})

  1. 修改网络配置信息

Vi  /etc/sysconfig/network-scripts/ifcfg-eth0

修改mac地址为记录mac地址,ipaddr修改段的ip

保存

注:12的步骤还可以这样做 删除步骤一中的文件70-persistent-net.rules,删除步骤2ifcfg-eth0HADDR配置  重启机

上面的配置,无是配置trackerstorage,都是一的,区别的就是接下的配置

配置Tracker

编辑tracker配置:

vi /etc/fdfs/tracker.conf   //编辑tracker的配置文件

修改base_path:

base_path=/opt/fastdfs_tracker   //文件的信息和日志信息存放目,需提前建好 ,其他配置自行配置

启动taracker

/usr/local/bin/fdfs_trackerd  /etc/fdfs/tracker.conf


其他命令:

  停止tracker命令/usr/local/bin/stop.sh  /usr/local/bin/fdfs_trackerd

重启tracker命令:/usr/local/bin/restart.sh  /usr/local/bin/fdfs_trackerd

删除一个storage节点: 

/usr/local/bin/fdfs_monitor/etc/fdfs/storage.conf delete group1 192.168.128.221

tracker启动成功否:

         netstat –unltp|grep fdfs   //看端口听情 端口默22122 如下

看日志信息:

         tail-100f /opt/fastdfs_tracker/logs/trackerd.log


配置防火墙设置端口22122可访问


tracker.conf配置文件的默认端口为22122,需要将此端口设置为可访问


vi/etc/sysconfig/iptables

添加(不同linux命令稍有不同,参考iptables中命令)

-AINPUT -m state --state NEW -m tcp -p tcp --dport 22122 -j ACCEPT

加入到启动

         vi  /etc/rc.d/rc.local   //编辑配置文件

         加入命令:

                    /usr/local/bin/fdfs_trackerd  /etc/fdfs/tracker.conf restart

  这样,就完成机即启动tracker端了

配置Storag

配置storage.conf

vi /etc/fdfs/storage.conf       //编辑配置文件


配置信息:

disabled=false           //用配置文件 false用;true

group_name=group1      //名,根据实际修改 多台服务器可配置不同的组,各组之间是独立的,互不影响

port=23000       //storage的端口23000,同一个组storage端口一致

base_path=/opt/fastdfs_storage_info   //storage的日志目(需建)

store_path_count=1   //径个数,需要和下面store_path*个数匹配

store_path0=/opt/fastdfs_storage_data   //

tracker_server=192.168.224.20:22122   //tracker器的IP端口号,可配置多个tracker_server

http.server_port=8888  //storage 端口

保存修改

配置信息看配置文件的注信息


启动storag

/usr/local/bin/fdfs_storaged  /etc/fdfs/storage.conf    //启动


注:此可能一直住,有切到新的命令行,没启动成功


有可能是tracker防火墙没有设置22122端口可访问的原因,或者直接关闭防火


  1. serviceiptables stop(即时生效,重启失效)

  2. chkconfig iptables off (重启机器后生效)


检查storage是否注tracker


/usr/local/bin/fdfs_monitor   /etc/fdfs/storage.conf  //打印注信息 信息特多,不再展示

storage服务加入到开机启动

vi /etc/rc.d/rc.local   //编辑配置文件

         加入命令:

                    /usr/local/bin/fdfs_storaged  /etc/fdfs/storage.conf  restart

  这样,就完成机即启动storage端了

注:如果tracker服务端的防火墙没有关闭,或者没设置22122端口可访问,就加入到开机启动,下次开机可能会导致此服务器启动不起来。


测试文件

本案例直接在tracker端做测试(也可以建一个虚拟机做client)

配置client.conf

vi  /etc/fdfs/client.conf 

                base_path=/opt/fastdfs_tracker      //存放路

                tracker_server=192.168.128.220:22122       //trackerIP地址和端口

                http.tracker_server_port=8080 

                 #include http.conf       //##

测试上传

/usr下新建test.txt文件(自己)

/usr/local/bin/fdfs_test  /etc/fdfs/client.conf  upload  /usr/test.txt

返回如下信息成功

可以在/opt/fastdfs_storage_datam(此路径为配置storage.conf时候配置的)目录下找到上传的文件。因为fastfds4.05以后删除了内置的web http服务,所以通过日志中的file url 用浏览器访问了

fastdfs-client-java测试

下载源码

源码下载地址: https://github.com/happyfish100/fastdfs-client-java


下载并解压后 修改src目录下的配置文件fdfs_client.conf


connect_timeout= 2  

network_timeout= 30 

charset =utf-8                //设置编码格式

http.tracker_http_port= 8080   //调度服务器(tracker)的端口号

http.anti_steal_token= no      //是否生成token

http.secret_key= FastDFS1234567890   //如果生成token,则根据此key去生成

tracker_server= 192.168.128.220:22122   //trackerip和端口号

编译源码

设置完成后编译源码成jar文件

在命令窗口输入ant ,将源码的src目录下的build.xml拖至命令行,回车即可(前提是已经设置了ant的环境变量)

src/build目录下打包的jar包拷贝至工程lib目录

注:源码中的test目录下的java文件为原作者的测试代码,可不必打包,需修改build.xml


测试上传下载

TrackerClient tracker = newTrackerClient();

      TrackerServer trackerServer =tracker.getConnection();

StorageServer storageServer = null;

StorageClient client =

new StorageClient(trackerServer,storageServer);

      NameValuePair[] meta_list = new NameValuePair[2]; //为上传文件设置元数据信息

                 meta_list[0]= new NameValuePair("width", "800");

                meta_list[1] = new NameValuePair("heigth", "600");

byte[] file_buff = "this is atest".getBytes(ClientGlobal.g_charset);

results = client.upload_file(file_buff,"txt", meta_list); //上传 文件

int no=

client.set_metadata(group_name,remote_filename,meta_list,ProtoCommon.STORAGE_SET_METADATA_FLAG_MERGE);

String group_name = results[0];

String remote_filename = results[1];

file_buff = client.download_file(group_name, remote_filename); //下载文件

int errno = client.delete_file(group_name,remote_filename); //删除服务器文件


更详细的java API请参考下载的源码和test测试目录下的测试代码


Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐