FastDFS
第一节 FastDFS 介绍
FastDFS 是一个开源的高性能分布式文件系统(FDFS)。 它的主要功能包括:文件存储,文件同步和文件访问,以及高容量和负载平衡。主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。
FastDFS 系统有三个角色:跟踪服务器(Tracker Server)、存储服务器(Storage Server)和客户端(Client)。
-
Tracker Server
跟踪服务器,主要做调度工作,起到均衡的作用;负责管理所有的 storage server和 group,每个 storage 在启动后会连接 Tracker,告知自己所属 group 等信息,并保持周期性心跳。
-
Storage Server
存储服务器,主要提供容量和备份服务;以 group 为单位,每个 group 内可以有多台 storage server,数据互为备份。
-
Client
客户端,上传下载数据的服务器,也就是我们自己的项目所部署在的服务器。
第二节 FastDFS 存储和下载
1. FastDFS 存储策略
为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。
在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。
2. FastDFS 上传

3. FastDFS 下载
客户端uploadfile成功后,会拿到一个storage生成的文件名,接下来客户端根据这个文件名即可访问到该文件。

跟upload file一样,在downloadfile时客户端可以选择任意tracker server。tracker发送download请求给某个tracker,必须带上文件名信息,tracke从文件名中解析出文件的group、大小、创建时间等信息,然后为该请求选择一个storage用来服务读请求。
第三节 FastDFS 安装
1. 环境准备
# 没有make的需要安装一下make yum install -y make yum install -y gcc yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl-devel # 创建数据存储目录 cd ~ mkdir -p /fdfs/tracker /fdfs/storage /fdfs/logs /fdfs/tmp
2. 安装 libfastcommon
libfastcommon是从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库,基础环境,安装即可 。
cd /usr # 下载libfastcommon wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz tar -zxvf V1.0.7.tar.gz # 解压文件 cd libfastcommon-1.0.7 ./make.sh && ./make.sh install # 复制文件,解决FastDFS中lib配置文件路径问题。 cp /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so cp /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so #cp /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so #cp /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so # 如果上面的不能正常运行就使用下面这种方式 # 创建软连接 FastDFS 默认lib目录是 /usr/local/lib # 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
2. 安装 FastDFS
cd /usr wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz tar -zxvf V5.05.tar.gz cd fastdfs-5.05/ ./make.sh && ./make.sh install
3. 配置FastDFS跟踪器(Tracker)
3.1 拷贝配置文件
# 将配置文件复制到/etc/fdfs目录下 cd /usr/fastdfs-5.05/conf cp * /etc/fdfs/
3.2 配置跟踪器tracker
cd /etc/fdfs vi tracker.conf
port=22122 # Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建) base_path=/fdfs/tracker # HTTP 服务端口 http.server_port=8888
3.3 配置存储器storage
vi storage.conf
# Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成) base_path=/fdfs/storage # 逐一配置 store_path_count 个路径,索引号基于 0。 # 如果不配置 store_path0,那它就和 base_path 对应的路径一样。 store_path0=/fdfs/storage # FastDFS 存储文件时,采用了两级目录。这里配置存放文件的目录个数。 # 如果本参数只为 N(如: 256),那么 storage server 在初次运行时,会在 store_path 下自动创建 # N * N 个存放文件的子目录。 subdir_count_per_path=256 # tracker_server 的列表 ,会主动连接 tracker_server # 有多个 tracker server 时,每个 tracker server 写一行 # 这里的IP地址就是本机IP地址 tracker_server=1.15.233.195:22122 # 允许系统同步的时间段 (默认是全天) 。一般用于避免高峰同步产生一些问题而设定。 sync_start_time=00:00 sync_end_time=23:59 # 访问端口 http.server_port=8888
3.4 配置client
vi client.conf
#tracker节点 tracker_server=1.15.233.195:22122 #日志路径 base_path=/fdfs/logs http.tracker_server_port=8888
3.5 启动FastDFS
# 这里要先启动tracker 再启动storage fdfs_trackerd /etc/fdfs/tracker.conf start fdfs_storaged /etc/fdfs/storage.conf start netstat -unltp|grep fdfs # 查看fdfs运行状态
测试:fastdfs-client-java-master.zip
4. nginx安装fastdfs插件
4.1 fastdfs-nginx-module下载
cd /fdfs # 下载fastdfs-nginx-module模块 wget https://github.com/happyfish100/fastdfs-nginx-module/archive/5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip # 没有unzip的需要安装后才能解压 yum install unzip # 安装过程出现这种问题就填写y 然后按enter Is this ok [y/d/N]: y # 解压 unzip 5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip # 解压后的文件夹重命名 mv fastdfs-nginx-module-5e5f3566bbfa57418b5506aaefbe107a42c9fcb1 fastdfs-nginx-module
4.2 nginx安装fastdfs
cd /usr # 下载nginx wget http://nginx.org/download/nginx-1.12.1.tar.gz # 解压 tar -zxvf nginx-1.12.1.tar.gz # 安装nginx与fsatdfs-nginx-module cd nginx-1.12.1 # 安装设置 ./configure --prefix=/opt/nginx --sbin-path=/usr/bin/nginx --add-module=/fdfs/fastdfs-nginx-module/src # 编译 make # 安装 make install
4.3 fastdfs插件配置
cd /fdfs/fastdfs-nginx-module/src cp mod_fastdfs.conf /etc/fdfs/ # 创建日志文件夹 mkdir -p /fdfs/tmp vi /etc/fdfs/mod_fastdfs.conf
connect_timeout=10 #客户端访问文件连接超时时长(单位:秒) base_path=/fdfs/tmp #存储日志路径 tracker_server=1.15.233.195:22122 #tracker服务IP和端口 url_have_group_name=true #访问链接前缀加上组名 group_name=group1 #和storage的groupname一一对应 store_path0=/fdfs/storage #文件存储路径
4.4 配置nginx
cd /opt/nginx/conf/ vi nginx.conf
# 这个端口必须与storage server的http通信端口一致
listen: 8888
server_name: 1.15.233.195
location ~/group([0-9])/ {
ngx_fastdfs_module;
}
4.5 启动nginx
nginx
如果有ngx_http_fastdfs_set pid=7257这样类似的信息说明启动成功
4.6 测试
使用xftp传输一张图片至 /usr目录下,这里以test.png为例
# 上传文件至fdfs fdfs_upload_file /etc/fdfs/client.conf /usr/test.png
结果:
group1/M00/00/00/rB6Gc2N6VYeALlEEAAAMcGdeEj0255.png
这个结果就是在fastdfs上面存储的路径,当我们配置了nginx支持fastdfs后,可以直接通过nginx访问这张图片。nginx会直接去fastdfs上拉取图片数据
本文来自网络,不代表协通编程立场,如若转载,请注明出处:https://net2asp.com/d268c70a1e.html
