FastDFS安装和简介详细总结

1、fastDFS简介

1 FastDFS是用c语言编写的一款开源的分布式文件系统。
2 FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,
3 使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

2、fastDFS架构

1 FastDFS架构包括 Tracker server和Storage server。
2     客户端请求Tracker server进行文件上传、下载,通过Tracker server调度最终由Storage server完成文件上传和下载。
3     Tracker server作用是负载均衡和调度,
4         通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务。
5         可以将tracker称为追踪服务器或调度服务器。
6     Storage server作用是文件存储,
7         客户端上传的文件最终存储在Storage服务器上,
8         Storage server没有实现自己的文件系统而是利用操作系统 的文件系统来管理文件。
9         可以将storage称为存储服务器。

如下图:

FastDFS安装和简介详细总结

3、Tracker 集群

1 FastDFS集群中的Tracker server可以有多台,Tracker server之间是相互平等关系同时提供服务,
2 Tracker server不存在单点故障。
3 客户端请求Tracker server采用轮询方式,如果请求的tracker无法提供服务则换另一个tracker。

4、Storage集群

1 Storage集群采用了分组存储方式。
 2 storage集群由一个或多个组构成,集群存储总容量为集群中所有组的存储容量之和。
 3 一个组由一台或多台存储服务器组成,组内的Storage server之间是平等关系,
 4 不同组的Storage server之间不会相互通信,同组内的Storage server之间会相互连接进行文件同步,
 5 从而保证同组内每个storage上的文件完全一致的。
 6 一个组的存储容量为该组内存储服务器容量最小的那个,由此可见组内存储服务器的软硬件配置最好是一致的。
 7 采用分组存储方式的好处是灵活、可控性较强。
 8 比如上传文件时,可以由客户端直接指定上传到的组也可以由tracker进行调度选择。
 9 一个分组的存储服务器访问压力较大时,可以在该组增加存储服务器来扩充服务能力(纵向扩容)。
10 当系统容量不足时,可以增加组来扩充存储容量(横向扩容)

5、Storage状态收集

1 Storage server会连接集群中所有的Tracker server,定时向他们报告自己的状态,
2 包括磁盘剩余空间、文件同步状况、文件上传下载次数等统计信息。

6、文件上传流程

FastDFS安装和简介详细总结
1 客户端上传文件后存储服务器将文件ID返回给客户端,
2 此文件ID用于以后访问该文件的索引信息。
3 文件索引信息包括:组名,虚拟磁盘路径,数据两级目录,文件名。

FastDFS安装和简介详细总结
1  组名:
 2     文件上传后所在的storage组名称,在文件上传成功后有storage服务器返回,需要客户端自行保存。
 3 虚拟磁盘路径:
 4     storage配置的虚拟路径,与磁盘选项store_path*对应。
 5     如果配置了store_path0则是M00,如果配置了store_path1则是M01,以此类推。
 6 数据两级目录:
 7     storage服务器在每个虚拟磁盘路径下创建的两级目录,用于存储数据文件。
 8 文件名:
 9     与文件上传时不同。
10     是由存储服务器根据特定信息生成,
11     文件名包含:源存储服务器IP地址、文件创建时间戳、文件大小、随机数和文件拓展名等信息。

7、项目架构图

FastDFS安装和简介详细总结

8、安装FastDFS( 需要一天的时间)

1 安装fastDFS之前需要依赖环境:
2 FastDFS使用c语言开发,需要使用gcc编译,需要安装gcc。
3 需要安装fastdfs依赖类库:libevent

8.1、安装fastDFS依赖环境

8.1.1、安装 gcc

命令:命令:yum -y install gcc

8.1.2、安装 libevent

命令:yum –y install libevent libevent-devel

8.1.3、安装libfastcommon依赖环境
1 第一步:导入libfastcommon到usr/local/Hadoop/libfastcommonV1.0.7.tar.gz
 2     使用rz命令导入
 3 第二步:解压
 4     tar -zxvf libfastcommonV1.0.7.tar.gz
 5 第三步:编译
 6     命令:./make.sh
 7 第四步:安装
 8     命令:./make.sh install
 9 第五步:拷贝usr/lib64目录下:libfastcommon.so文件到usr/lib下
10     拷贝命令:cp usr/lib64/ libfastcommon.so /usr/lib
11     注意:
12         libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,
13         由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下。

要拷贝的文件如下:

********手动安装fastDFS***START******

8.2、安装fastDFS

1 第一步:导入fastDFS安装包
 2     使用rz命令导入
 3
 4 第二步:解压
 5     tar -zxvf FastDFS_v5.05.tar.gz
 6
 7 第三步:编译安装
 8     编译命令:./make.sh
 9     安装命令:./make.sh install
10
11 第四步:拷贝FastDFS/conf下面所有配置文件到etc/fdfs/
12     拷贝命令:[root@localhost conf]# cp * /etc/fdfs/
13
14     [root@localhost fdfs]# ll
15     total 104
16     -rw-r--r--. 1 root root 23981 May 13 18:34 anti-steal.jpg
17     -rw-r--r--. 1 root root  1461 May 13 18:34 client.conf
18     -rw-r--r--. 1 root root   858 May 13 18:34 http.conf
19     -rw-r--r--. 1 root root 31172 May 13 18:34 mime.types
20     -rw-r--r--. 1 root root  7829 May 13 18:34 storage.conf
21     -rw-r--r--. 1 root root  7829 May 13 18:31 storage.conf.sample
22     -rw-r--r--. 1 root root   105 May 13 18:34 storage_ids.conf
23     -rw-r--r--. 1 root root  7102 May 13 18:34 tracker.conf
24     -rw-r--r--. 1 root root  7102 May 13 18:31 tracker.conf.sample

8.3、安装tracker

1 安装tracker,由于tracker运行程序就是fasfdfs,fastDFS安装成功,只需要修改etc/fdfs/tracker.conf配置文件即可。
 2
 3 第一步:修改base_path存储基本路径
 4     base_path=/home/fastdfs //fastdfs需要手动创建,fastdfs在home目录下
 5
 6 第二步:修改存在组
 7     store_group=group1
 8
 9 第三步:在home目录下创建fastdfs
10     创建命令:mkdir fastdfs
11
12 第三步:测试启动tracker
13     测试是否安装成功
14     运行命令:/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
15
16     drwx------. 4 mine   mine   4096 May  5 02:22 mine
17     [root@localhost home]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf
18     [root@localhost home]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
19     waiting for pid [9077] exit ...

20     starting ...

8.4、安装storage

1 由于storage和tracker运行的都是fastDFS程序,
 2 每一台服务器都部署一台fasfDFS,
 3 一台服务器是tracker,一台是storage。
 4 此机器:tracker和fastDFS都是使用同一个程序。只需要配置storage配置文件即可。
 5
 6 配置storage.conf
 7     第一步:配置组名
 8         group_name=group1 //必须和tracker的组名相同。
 9
10     第二步:配置基本存储路径base_path
11         base_path=/home/fastdfs
12
13     第三步:配置文件存储路径
14         store_path0=/home/fastdfs/storage_path //storage_path需要手动创建
15         #store_path1=/home/yuqing/fastdfs2
16         如果有多个存储路径,就可以依次往下顺延。
17
18     第四步:创建文件存储路径storage_path
19         /home/fastdfs此目录下面创建
20         命令:mkdir storage_path
21
22         [root@localhost fastdfs]# mkdir storage_path
23         [root@localhost fastdfs]# ll
24         total 12
25         drwxr-xr-x. 2 root root 4096 May 13 18:45 data
26         drwxr-xr-x. 2 root root 4096 May 13 18:43 logs
27         drwxr-xr-x. 2 root root 4096 May 13 18:54 storage_path
28
29     第五步:修改连接tracker服务器地址
30         tracker_server=192.168.66.66:22122
31
32     第六步:启动storage测试
33         启动命令:
34         [root@localhost fdfs]# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf
35         [root@localhost fdfs]# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
36         waiting for pid [9132] exit ...

37         starting ...

8.5、测试图片上传

1 Tracker和storage都已经安装完成,使用命令测试文件上传:
 2 FastDFS提供一个文件上传命令:usr/bin/fdfs_test 测试文件上传
 3 测试上传需要连接tracker服务器,连接storage服务器。
 4 因此需要指定一个配置文件:client.conf配置文件,通过Client.conf连接tracker服务器。
 5
 6 第一步:修改Client.conf
 7     # the base path to store log files
 8     base_path=/home/fastdfs
 9
10     # tracker_server can ocur more than once, and tracker_server format is
11     #  "host:port", host can be hostname or ip address
12     tracker_server=192.168.66.66:22122
13
14 第二步:测试命令:
15     在 /etc/fdfs 目录下执行下面的测试命令:
16     /usr/bin/fdfs_test client.conf upload anti-steal.jpg
17
18     解析:
19         使用测试程序fdfs_test 的命令 upload命令上传anti-steal.jpg图片。
20     * example file url: http://192.168.66.66/group1/M00/00/00/wKhCQlc1uJOAYKOhAABdrZgsqUU338_big.jpg
21     * storage_upload_slave_by_filename
22     * group_name=group1, remote_filename=M00/00/00/wKhCQlc1uJOAYKOhAABdrZgsqUU338_big.jpg
23     * source ip address: 192.168.66.66
24     * file timestamp=2016-05-13 19:20:51
25     * file size=23981
26     * file crc32=2553063749
27     * example file url: http://192.168.66.66/group1/M00/00/00/wKhCQlc1uJOAYKOhAABdrZgsqUU338_big.jpg
28
29 思考:
30     图片已经上传成功,返回图片地址?浏览器是否能访问?
31     浏览器访问任何资源都必须遵循http协议。
32     Nginx作为http服务器,通过nginx访问分布式图片服务器。
33
34 也就是说:nginx访问fastDFS。需要nginx和FASTDFS整合。

9、整合nginx和FASTDFS

FastDFS-nginx-module整合nginx和fastDFS

9.1、安装FastDFS-nginx-module

1 第一步:导入FastDFS-nginx-module到usr/local/Hadoop
2     fastdfs-nginx-module_v1.16.tar.gz
3 第二步:解压fastdfs-nginx-module_v1.16.tar.gz
4     命令:tar –zxvf fastdfs-nginx-module_v1.16.tar.gz
5 第三步:修改/home/canglang/fasfDFS-common/fastdfs-nginx-module/src/Config
6     修改路径

FastDFS安装和简介详细总结
1  注意:
 2     去掉错误路径,usr/local/include改为usr/include
 3
 4 第四步:拷贝fastdfs-nginx-module/src/mod_fastdfs.conf到etc/fdfs
 5     在/home/canglang/fasfDFS-common/fastdfs-nginx-module/src目录下执行
 6     cp mod_fastdfs.conf /etc/fdfs/
 7
 8 第五步:修改mod_fastdfs.conf
 9     * base_path=/home/fastdfs/storage_path //此处必须是存储路径
10     * tracker_server=192.168.66.66:22122
11     * group_name=group1 //和前面配置组名保持一致
12     * store_path0=/home/fastdfs/storage_path //M00
13     * url_have_group_name = true //允许使用组名
14
15 第六步:拷贝usr/lib64目录下库文件libfdfsclient.so
16     拷贝usr/lib64/libfdfsclient.so 库文件 到 usr/lib目录下。
17     拷贝命令:cp /usr/lib64/libfdfsclient.so /usr/lib

9.2、整合

1 需要把module添加nginx中。通过设置安装参数方式添加模块。
 2 首先在var目录下创建temp目录,在temp目录下创建nginx目录
 3 参数设置:在nginx的解压目录下执行
 4     ./configure \
 5     --prefix=/home/canglang/nginx/nginx-install \
 6     --pid-path=/var/run/nginx/nginx.pid \
 7     --lock-path=/var/lock/nginx.lock \
 8     --error-log-path=/var/log/nginx/error.log \
 9     --http-log-path=/var/log/nginx/access.log \
10     --with-http_gzip_static_module \
11     --http-client-body-temp-path=/var/temp/nginx/client \
12     --http-proxy-temp-path=/var/temp/nginx/proxy \
13     --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
14     --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
15     --http-scgi-temp-path=/var/temp/nginx/scgi \
16     --add-module=/home/canglang/fastdfs-nginx-module/src
17
18 需要从新编译安装:
19     在nginx的解压目录下执行
20     Make
21     Make install
22
23 修改nginx配置文件nginx.conf配置文件:
24     http {
25         include       mime.types;
26         default_type  application/octet-stream;
27         sendfile        on;
28         keepalive_timeout  65;
29         server {
30             listen       80;
31             server_name  192.168.66.66;
32             location /group1/M00/ {
33                 #root   html;
34                 #index  index.html index.htm;
35                 ngx_fastdfs_module;
36             }
37             error_page   500 502 503 504  /50x.html;
38             location = /50x.html {
39                 root   html;
40             }
41         }
42     }

9.3、重启服务

1 fastDFS:
2 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
3 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
4 nginx:
5 cd /home/canglang/nginx/nginx-install/sbin/
6 ./nginx start
7 关闭防火墙

********手动安装fastDFS***END******

10、图片服务器( 使用安装版本)

1 直接在虚拟机中导入即可
 2 选择:I moved it –不需要进行设置,使用原来mac地址。
 3 选择:I copy it --? 生成新MAC地址。生成新的网卡eth1
 4     需要eth1网卡修改为eth0网卡:
 5     修改:/etc/udev/rules.d/70-persistent-net.rules
 6     打开:上面配置文件,发现有2个网卡;
 7     #SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:b5:e3:64", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
 8     SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:b5:e3:66", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
 9 修改网卡配置:
10     vim /etc/sysconfig/network-scripts/ifcfg-eth0
11     DEVICE=eth0
12     TYPE=Ethernet
13     *UUID=bb6c530a-6983-4a14-9883-7f077f2172bc //删除
14     ONBOOT=no
15     NM_CONTROLLED=yes
16     BOOTPROTO=none
17     *HWADDR=00:0c:29:b5:e3:66
18     IPADDR=192.168.66.66
19     PREFIX=24
20     GATEWAY=192.168.66.2
21     DEFROUTE=yes
22     IPV4_FAILURE_FATAL=yes
23     IPV6INIT=no
24     NAME="System eth0"
25     DNS1=219.141.140.10

11、设置

11.1、设置桌面启动

1 第一次导入是以黑窗口的方式启动的
2     用户名:root
3     密码:itcast
4 cd /etc
5 vim inittab
6 将最下面的一行中的3改成5,保存
7 reboot重启

11.2、设置网络

1 右上角 小电脑图标--右键--设置网络即可

11.3、设置连接fastdfs是ip

1 fastDFS安装完成后会在/etc/fdfs下生成配置文件
 2
 3 anti-steal.jpg
 4 client.conf ---客户端的配置文件
 5 client.conf.sample
 6 http.conf
 7 mime.types
 8 mod_fastdfs.conf ---nginx访问fastDFS的配置文件
 9 storage.conf ---存储的配置文件
10 storage.conf.sample
11 storage_ids.conf
12 tracker.conf ---调度者的配置文件
13 tracker.conf.sample

11.4、修改ip

1 storage.conf
2 mod_fastdfs.conf
3 client.conf
4 这三个文件中都需要修改ip
5 tracker_server=192.168.254.67:22122

11.5、查找图片存储路径

1 storage.conf配置文件中store_path0=/home/fastdfs/store_path0
2 这是路径:/home/fastdfs/store_path0/data/00/00

11.6、重启

1 fastdfs安装完成后会在/usr/bin目录下生成一个启动命令
2 启动:
3     /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
4     执行/usr/bin/目录下的fdfs_trackerd启动命令,加载/etc/fdfs/下面的tracker.conf配置文件
5
6     /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
7     执行/usr/bin/目录下的fdfs_storaged情动命令,加载/etc/fdfs/下面的storage.conf配置文件

12、测试图片上传

12.1、上传

1 cd /etc/fdfs/
2 /usr/bin/fdfs_test client.conf upload anti-steal.jpg
3 执行/usr/bin/目录下的fdfs_test测试命令,加载client.conf配置文件,upload  图片名称

FastDFS安装和简介详细总结

12.2、访问

FastDFS安装和简介详细总结

12.3、查看图片上传到路径

1 cd /home/fastdfs/store_path0/data/00/00

13、设置开机自动启动

FastDFS安装和简介详细总结

FastDFS安装和简介详细总结

更换电脑后切换fastDFS中配置的ip

1 图片测试上传和配置文件的路径:/etc/fdfs
 2     storage.conf     tracker_server=192.168.66.66:22122
 3     client.conf     tracker_server=192.168.66.66:22122
 4
 5 重启服务:
 6     /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
 7     /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart
 8
 9 测试图片上传:
10     在 /etc/fdfs 目录下执行下面的测试命令:    /usr/bin/fdfs_test client.conf upload anti-steal.jpg
11     会返回一个全路径: http://192.168.174.129/group1/M00/00/00/wKiugVtAcVCAIZxsAABdrZgsqUU567_big.jpg
12
13
14 整合nginx后
15     修改/etc/fdfs   mod_fastdfs.conf    tracker_server=192.168.66.66:22122
16     修改nginx.con配置文件中的服务ip
17
18 启动nginx:
19     /home/canglang/nginx/nginx-install/sbin
20     ./nginx
21
22 访问:http://192.168.174.129/group1/M00/00/00/wKiugVtAcVCAIZxsAABdrZgsqUU567_big.jpg
1 nginx启动时报这个错:
2     [canglang@localhost sbin]$ sudo ./nginx
3     ngx_http_fastdfs_set pid=2807
4     [canglang@localhost sbin]$ nginx: [emerg] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory)
5 解决方案:
6     修改/conf/nginx.conf配置文件
7     将#pid logs/nginx.conf的注释放开
8     修改成自己定的路径就行

Original: https://www.cnblogs.com/JimmyThomas/p/15942746.html
Author: JimmyThomas
Title: FastDFS安装和简介详细总结

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/611408/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 详解在Linux中安装配置MongoDB

    最近在整理自己私人服务器上的各种阿猫阿狗,正好就顺手详细记录一下清理之后重装的步骤,今天先写点数据库的内容,关于在 Linux中安装配置 MongoDB 说实话为什么会装 Mong…

    数据库 2023年6月11日
    0150
  • 简单的2021年终总结

    当大家开开心心跨年的时候,我在补年终总结。 小时候恨不得时间过得快一点,现在不这么想了。 我的 2021年,都是平静、反复的一天天,没有出书、没有开源、没有跳槽、没有升官。没错,这…

    数据库 2023年6月6日
    077
  • 详解如何用 CSS3 完成 3D transform变换

    Tips:阅读提示!!! 首先,本文针对的是3D transform变换的学习,所以你需要对2D transform变换 有一定的了解 其次,需要说明的是,代码是一种需要自己不断实…

    数据库 2023年6月11日
    0109
  • 详解Threejs中的光源对象

    光源的分类 AmbientLight(环境光), PointLight(点光源), SpotLight(聚光源) 和 DirectionalLight(平行光)是基础光源 Hemi…

    数据库 2023年6月11日
    091
  • 自动化测试练手项目推荐

    转载请注明出处❤️ 作者:测试蔡坨坨 原文链接:caituotuo.top/80599ac8.html 你好,我是测试蔡坨坨。 最近收到许多自学自动化测试的小伙伴私信,学习了理论知…

    数据库 2023年6月11日
    0102
  • 0x03MySQL的SQL基础

    0x03MySQL的SQL基础1.SQL介绍结构化的查询语言,关系型数据库中用的一类语言。SQL标准 89 92 99 03MySQL 2.SQL类常用型2.1 mysql自带的功…

    数据库 2023年6月9日
    077
  • Centos8 python pip报错: pip is configured with locations that require TLS/SSL 解决

    在使用pip进行软件包安装的时候出现问题: WARNING: pip is configured with locations that require TLS/SSL, howe…

    数据库 2023年6月11日
    070
  • Nginx负载均衡

    Nginx负载均衡 负载均衡概述 早期的网站流量和业务功能都比较简单,单台服务器足以满足基本的需求,但是随着互联网的发展,业务流量越来越大并且业务逻辑也跟着越来越复杂,单台服务器的…

    数据库 2023年6月6日
    076
  • windows bat

    windows bat windows bat netsh2-ipv4 新建文件夹 Windows 10 右下角时间显示时分秒 windows route 检测到以管理员权限运行 …

    数据库 2023年6月9日
    088
  • 自己编写平滑加权轮询算法,实现反向代理集群服务的平滑分配

    学会了负载均衡算法,却没有用起来? 今天就来 实战一遍,感受下平滑加权轮询算法的魅力。 通过Java语言,自己编写的平滑加权轮询算法,结合线程池和Socket 网络编程等,实现了反…

    数据库 2023年6月6日
    0260
  • SQL语言的总结

    SQL语言分类:1.数据查询语言(DQL:Data Query Language),也称为”数据检索语句”,用以从表中查询获得数据,常用关键字SELECT …

    数据库 2023年6月16日
    084
  • HTML5基础知识

    作者导言: 引用偶像刘德华的一句话 “学到的就要教人,赚到的就要给人”! 以下是关联的web前端基础知识文章,通过这些文章,您既可以系统地学习和了解这些知识…

    数据库 2023年6月14日
    048
  • k8s vs k3s: 差异解析

    2. K3s的优势 小型 K3s 的最大优势是它的尺寸最小(小于 100 MB),这有助于它以最少的设置在小型硬件中启动 Kubernetes 集群。 快速部署 curl -sfL…

    数据库 2023年6月14日
    093
  • MySQL事务提交流程详解

    一. 事务的提交流程。 获取 MDL_key::COMMIT 锁: FTWRL会阻塞 commit 操作。 XID_Event生成并写入binlog cache中。会首先将事务中的…

    数据库 2023年5月24日
    081
  • 互联网校招指北

    这篇文章写着写着,突然觉得《紧急救援》中有一句台词很对: “不是幸运给你机会,而是因为够坚持,才有了幸运的机会” 共勉~ 时间跨度 一年共两次校招季,2 月…

    数据库 2023年6月6日
    080
  • 使用归并排序思想解决逆序对数量问题

    概述 归并排序算法,想必诸位都十分熟悉。其基本思想也就是 分治。整个排序过程分成两部分–分治法将问题 分(divide)成一些小的问题然后递归求解,而 治(conque…

    数据库 2023年6月11日
    077
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球