简介:
FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。
搭建:
所需要的工具,fastdfs | fastdfs-nginx-module | libfastcommon | nginx | fastdfs-client-java
安装libfastcommon工具,./make.sh | ./make.sh install
建立软链接
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
安装fastdfs工具,./make.sh | ./make.sh install
成功之后,cd /etc/fdfs
把三份实例文件复制一份,去掉sample
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
安装tracker
创建自定义目录,用来保存tracker的data和log 【 /home/zhutong/data/tracker 】
配置tracker
cd /etc/fdfs
vi tracker.conf 修改四处
1.disabled=false #默认开启
2.port=22122 #默认端口号
3.base_path=/usr/muyou/dev/fastdfs/fastdfs_tracker #自定义tracker目录
4.http.server_port=6666 #默认端口是8080
启动 tracker
service fdfs_trackerd start
给 tracker 加入开机启动
chmod +x /etc/rc.d/rc.local
修改rc.local配置
vi /etc/rc.d/rc.local
在配置文件最后一行加上
service fdfs_trackerd start
查看 tracker 端口监听情况
netstat -unltp|grep fdfs
安装 storage
创建storage数据文件和日志目录【 /home/zhutong/data/storage 】
创建storage_data目录用来存储数据【 /home/zhutong/data/storage_data 】
修改 storage.conf 配置文件 vi /etc/fdfs/storage.conf
1.disabled=false
2.group_name=group1 #组名,根据实际情况修改
3.port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
4.base_path=/usr/muyou/dev/fastdfs/fastdfs_storage #设置storage数据文件和日志目录
5.store_path_count=1 #存储路径个数,需要和store_path个数匹配
6.store_path0=/usr/muyou/dev/fastdfs/fastdfs_storage_data #实际文件存储路径
7.tracker_server=192.168.150.132:22122 #我CentOS7的ip地址
8.http.server_port=8888 #设置 http 端口号
修改配置文件后,创建软链接 ln -s /usr/bin/fdfs_storaged /usr/local/bin
启动 storage
service fdfs_storaged start
设置开机启动 vim /etc/rc.d/rc.local
在配置文件最后一行加上
service fdfs_storaged start
查看服务是否启动
netstat -unltp | grep fdfs
最后确定一下 storage 是否注册到 tracker 上去
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
修改客户端配置文件
vi /etc/fdfs/client.conf
base_path=/usr/muyou/dev/fastdfs/fastdfs_tracker #tracker服务器文件路径
tracker_server=192.168.150.132:22122 #tracker服务器IP地址和端口号
http.tracker_server_port=6666 # tracker 服务器的 http端口号,必须和tracker的设置对应
测试上传图片
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /root/测试1.png #你上传的图片路径(linux上的)
成功之后会返回图片的路径
group1/M00/00/00/wKiWhFrdeCeAC_vCAABqgowGIFg399.png
FastDFS的nginx模块安装
FastDFS安装Nginx的模块,fastdfs-nginx-module报错:fdfs_define.h:15:27: 致命错误:common_define.h:没有那个文件或目录
vi fastdfs-nginx-module-1.20/src/config
修改配置:ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
<<storage与nginx>>
进入nginx安装目录,添加 fastdfs-nginx-module
./configure --prefix=/usr/local/nginx --add-module=/home/zhutong/down/fastdfs/fastdfs-nginx-module-master/src
安装 nginx
make
make install
修改 nginx.conf 配置文件
location /group1/M00 {
root /usr/muyou/dev/fastdfs/fastdfs_storage_data/data;
ngx_fastdfs_module;
}
进入FastDFS安装目录,cp http.conf /etc/fdfs/ cp mime.types /etc/fdfs/
进入fastdfs-nginx-module安装目录,cp mod_fastdfs.conf /etc/fdfs/
修改 mod_fastdfs.conf 配置文件
vi /etc/fdfs/mod_fastdfs.conf
base_path=/usr/muyou/dev/fastdfs/fastdfs_storage #保存日志目录
tracker_server=192.168.150.132:22122 #tracker服务器的IP地址以及端口号
storage_server_port=23000 #storage服务器的端口号
url_have_group_name = true #文件 url 中是否有 group 名
store_path0=/usr/muyou/dev/fastdfs/fastdfs_storage_data #存储路径
group_count = 3 #设置组的个数,事实上这次只使用了group1
在配置文件最后加上
[group1]
group_name=group1
storage_server_port=23000
store_path_count=1
store_path0=/usr/muyou/dev/fastdfs/fastdfs_storage_data
store_path1=/usr/muyou/dev/fastdfs/fastdfs_storage_data
# group settings for group #2
# since v1.14
# when support multi-group, uncomment following section as neccessary
[group2]
group_name=group2
storage_server_port=23000
store_path_count=1
store_path0=/usr/muyou/dev/fastdfs/fastdfs_storage_data
[group3]
group_name=group3
storage_server_port=23000
store_path_count=1
store_path0=/usr/muyou/dev/fastdfs/fastdfs_storage_data
创建MOO于storage存储目录软链接
ln -s /home/zhutong/data/storage_data/data/ /home/zhutong/data/storage_data/data/M00
<<tracker与nginx>>
再解压一份 nginx ,进入nginx目录,./configure --prefix=/usr/local/nginx2 --add-module=/usr/muyou/dev/nginx/fastdfs-nginx-module-master/src
编译安装nginx,使用命令 make,make install
vi /usr/local/nginx2/conf/nginx.conf
upstream fdfs_group1 {
server 127.0.0.1:9999;
}
server {
listen 9989;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location /group1/M00 {
proxy_pass http://fdfs_group1;
}
启动 nginx
测试访问
http://192.168.2.160:9999/group1/M00/00/00/wKgCoF1WTZOAcQpUAAA3bxlBiOQ328.jpg
FastDFS分布式文件系统搭建成功!
Java上传下载服务整合FastDFS分布式文件系统
添加 maven 依赖
<!-- fastdfs -->
<dependency>
<groupId>org.csource</groupId>
<artifactId>fastdfs-client-java</artifactId>
<version>1.27-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
</dependency>
Maven 的*仓库没有fastdfs-client-java.jar依赖包,需要自己去github上下载源码,安装到本地 maven 仓库
下载地址:https://github.com/happyfish100/fastdfs-client-java
进入解压目录:mvn clean install,成功吧fastdfs-client-java打包到maven仓库中
在 resources 目录下添加配置文件 fdfs_client.conf
#FastDFS配置begin-----------
connect_timeout = 60
network_timeout = 60
charset = UTF-8
http.tracker_http_port = 6666
http.anti_steal_token = no
http.secret_key = 123456
tracker_server = 192.168.2.160:22122
#FastDFS配置end-----------
FastDFS分布式文件系统原理
功能:文件存储,文件同步,文件访问等。
FastDFS服务端有三个角色:跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)。