FastDFS和Nginx实现分布式文件服务器

简介: FastDFS和Nginx实现分布式文件服务器

FastDFS和Nginx实现分布式文件服务器


FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。


FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。


1.下载

FastDFS下载地址:https://sourceforge.net/projects/fastdfs/


FastDFS的github下载地址:https://github.com/happyfish100/fastdfs


libfastcommon的下载地址:https://sourceforge.net/projects/libfastcommon/


libfastcommon的github下载地址:https://github.com/happyfish100/libfastcommon


FastDFS-nginx-module的下载地址:https://sourceforge.net/projects/fastdfs/files/FastDFS%20Nginx%20Module%20Source%20Code/


FastDFS-nginx-module的github下载地址:https://github.com/happyfish100/fastdfs-nginx-module


Nginx下载地址:http://nginx.org/en/download.html


Nginx的github下载地址:https://github.com/nginx/nginx


2.架构图

3.FastDFS-tracker安装

3.1 FastDFS安装环境

FastDFS是C语言开发,建议在linux上运行。

安装FastDFS需要先将官网下载的源码进行编译,编译依赖gcc环境

yum install gcc-c++

3.2 安装libevent

FastDFS依赖libevent库

yum -y install libevent

image.png

3.3 安装libfastcommon

libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库。


上传到linux,并解压

image.png



解压后的目录


image.png


进入解压目录,进行编译,安装


编译命令

[root@root libfastcommon-1.0.7]# ./make.sh

image.png

安装命令

[root@root libfastcommon-1.0.7]# ./make.sh install

image.png

libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下。

[root@root lib64]# cp libfastcommon.so /usr/lib


3.4 tracker编译安装

上传FastDFS.tar.gz文件,并解压

[root@root fastdfs]# tar -zxvf FastDFS_v5.05.tar.gz


进入解压的目录,进行编译,安装

编译命令

[root@root FastDFS]# ./make.sh


安装命令

[root@root FastDFS]# ./make.sh install


安装成功后,将安装目录下的conf下的文件拷贝到/etc/fdfs/下

[root@root FastDFS]# cd conf/
[root@root conf]# cp * /etc/fdfs/

image.png

image.png


3.5 配置

安装成功后进入/etc/fdfs目录,修改tracker.conf


修改 base_path=/home/yuqing/fastdfs 为 base_path=/home/fastdfs


image.png


3.6 启动

启动命令

[root@root fdfs]# /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

image.png

设置开机自动启动

[root@root fdfs]# vi /etc/rc.d/rc.local


将运行命令添加进文件

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


如图

image.png


4.FastDFS-storage的安装

4.1 安装libevent

同tracker安装。(如果是一台虚拟机安装Tracker和Storage,这里可以省略)

FastDFS依赖libevent库

yum -y install libevent

image.png


4.2 安装libfastcommon

同tracker安装。(如果是一台虚拟机安装Tracker和Storage,这里可以省略)


libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库。


上传到linux,并解压


image.png


解压后的目录

image.png



进入解压目录,进行编译,安装


编译命令

[root@root libfastcommon-1.0.7]# ./make.sh

image.png

安装命令

[root@root libfastcommon-1.0.7]# ./make.sh install

image.png

libfastcommon安装好后会自动将库文件拷贝至/usr/lib64下,由于FastDFS程序引用usr/lib目录所以需要将/usr/lib64下的库文件拷贝至/usr/lib下。

[root@root lib64]# cp libfastcommon.so /usr/lib


4.3 storage编译安装

同tracker编译安装。(如果是一台虚拟机安装Tracker和Storage,这里可以省略)


上传FastDFS.tar.gz文件,并解压

[root@root fastdfs]# tar -zxvf FastDFS_v5.05.tar.gz


进入解压的目录,进行编译,安装


编译命令

[root@root FastDFS]# ./make.sh


安装命令

[root@root FastDFS]# ./make.sh install


安装成功后,将安装目录下的conf下的文件拷贝到/etc/fdfs/下

[root@root FastDFS]# cd conf/
[root@root conf]# cp * /etc/fdfs/

image.png

image.png

4.4 配置

安装成功后进入/etc/fdfs目录


修改storage.conf文件

将 base_path=/home/yuqing/fastdfs 改为:base_path=/home/fastdfs
将 store_path0=/home/yuqing/fastdfs 改为:store_path0=/home/fastdfs/fdfs_storage

image.png

#如果有多个挂载磁盘则定义多个store_path,如下

#store_path1=...
#store_path2=...

image.png

配置tracker服务器ip


image.png


4.5 启动

启动命令

[root@root fdfs]# /usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart


设置开机自动启动

image.png


5.上传图片测试

5.1 通过fdfs_test程序

FastDFS安装成功可通过/usr/bin/fdfs_test测试上传和下载等操作


修改/etc/fdfs/client.conf文件

[root@root fdfs]# vi /etc/fdfs/client.conf

image.png

上传文件使用格式

/usr/bin/fdfs_test 客户端配置文件地址 upload 上传文件


比如将/usr/local/application目录下的1.png图片上传到FastDFS中

image.png


上传文件的目录下:

image.png

由于现在还没有和nginx整合无法使用http下载。


6.FastDFS 和 Nginx整合

6.1 在tracker上安装Nginx

在每个tracker上安装Nginx,目的是做负载均衡及实现高可用



6.2 在storage上安装Nginx

6.2.1 FastDFS-nginx-module

上传,并解压

[root@root fastdfs-nginx-module]# tar -zxvf fastdfs-nginx-module_v1.16.tar.gz


进入fastdfs-nginx-module/src/目录下,编辑config配置文件

image.png


将fastdfs-nginx-module/src/下的mod_fastdfs.conf文件拷贝至/etc/fdfs/下

[root@root src]# cp mod_fastdfs.conf /etc/fdfs/


修改/etc/fdfs/mod_fastdfs.conf的内容

将 base_path=/tmp 修改为 base_path=/home/fastdfs

image.png

image.png

将 /usr/lib64/libfdfsclient.so拷贝至/usr/lib下

[root@root lib64]# cp /usr/lib64/libfdfsclient.so /usr/lib


创建nginx/client目录

[root@root lib64]# mkdir -p /var/temp/nginx/client


6.2.2 nginx安装

安装环境


安装pcre库

[root@root lib64]# yum -y install pcre-devel


安装zlib库

[root@root lib64]# yum install -y zlib-devel


上传Nginx,并解压

[root@root nginx]# tar -zxvf nginx-1.7.7.tar.gz


添加fastDFS-nginx-module模块,进入解压目录,执行命令

[root@root nginx-1.7.7]# ./configure \
> --prefix=/usr/local/nginx \
> --pid-path=/var/run/nginx/nginx.pid \
> --lock-path=/var/lock/nginx.lock \
> --error-log-path=/var/log/nginx/error.log \
> --http-log-path=/var/log/nginx/access.log \
> --with-http_gzip_static_module \
> --http-client-body-temp-path=/var/temp/nginx/client \
> --http-proxy-temp-path=/var/temp/nginx/proxy \
> --http-fastcgi-temp-path=/var/temp/nginx/fastcgi \
> --http-uwsgi-temp-path=/var/temp/nginx/uwsgi \
> --http-scgi-temp-path=/var/temp/nginx/scgi \
> --add-module=/usr/local/application/fastdfs/fastdfs-nginx-module/fastdfs-nginx-module/src


–prefix=/usr/local/nginx \ :是安装目录

配置成功如下图

image.png


进入nginx的解压目录,编译并安装

[root@root nginx-1.7.7]# make
[root@root nginx-1.7.7]# make install


6.2.3 nginx配置文件

修改nginx安装目录下的配置文件conf/nginx.conf

image.png



6.3 启动

启动Nginx

[root@root conf]# /usr/local/nginx/sbin/nginx


设置开机自动开启

[root@root conf]# vi /etc/rc.d/rc.local


将运行命令添加进文件,如下图

image.png



6.4 测试

访问上传的图片

[root@root 00]# /usr/bin/fdfs_test /etc/fdfs/client.conf upload /usr/local/application/love.jpg


返回访问路径


image.png


访问

image.png


image.png


目录
相关文章
|
2月前
|
存储 监控 固态存储
【vSAN分布式存储服务器数据恢复】VMware vSphere vSAN 分布式存储虚拟化平台VMDK文件1KB问题数据恢复案例
在一例vSAN分布式存储故障中,因替换故障闪存盘后磁盘组失效,一台采用RAID0策略且未使用置备的虚拟机VMDK文件受损,仅余1KB大小。经分析发现,该VMDK文件与内部虚拟对象关联失效导致。恢复方案包括定位虚拟对象及组件的具体物理位置,解析分配空间,并手动重组RAID0结构以恢复数据。此案例强调了深入理解vSAN分布式存储机制的重要性,以及定制化数据恢复方案的有效性。
66 5
|
2月前
|
负载均衡 前端开发 应用服务中间件
FastDFS+Nginx+fastdfs-nginx-module集群搭建
FastDFS+Nginx+fastdfs-nginx-module集群搭建
|
2月前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何配置Web服务器(如Apache或Nginx)?
在Linux中,如何配置Web服务器(如Apache或Nginx)?
|
2月前
|
负载均衡 应用服务中间件 Linux
"揭晓nginx的神秘力量:如何实现反向代理与负载均衡,拯救服务器于水火?"
【8月更文挑战第20天】在Linux环境下,nginx作为高性能HTTP服务器与反向代理工具,在网站优化及服务器负载均衡中扮演重要角色。本文通过电商平台案例,解析nginx如何解决服务器压力大、访问慢的问题。首先介绍反向代理原理,即客户端请求经由代理服务器转发至内部服务器,隐藏真实服务器地址;并给出配置示例。接着讲解负载均衡原理,通过将请求分发到多个服务器来分散负载,同样附有配置实例。实践表明,采用nginx后,不仅服务器压力得到缓解,还提升了访问速度与系统稳定性。
57 3
|
2月前
|
存储 固态存储 虚拟化
【vSAN分布式存储服务器数据恢复】VMware vSphere vSAN ESXi超融合HCI分布式存储数据恢复案例
近期,我司处理了一个由10台华为OceanStor存储组成的vSAN超融合架构,其中一台存储闪存盘出现故障,用户取下后用新的闪存盘代替,然后对该闪存盘所在的磁盘组进行重建,导致集群中一台使用0置备策略的虚拟机数据丢失。
47 6
|
2月前
|
应用服务中间件 Linux 网络安全
在Linux中,如何配置Apache或Nginx Web服务器?
在Linux中,如何配置Apache或Nginx Web服务器?
|
2月前
|
存储 负载均衡 应用服务中间件
FastDFS+Nginx:轻松搭建本地文件服务器
【8月更文挑战第19天】在现今互联网快速发展的时代,文件服务器作为支撑各种在线服务的重要基础设施,其稳定性和性能显得尤为关键。FastDFS作为一款开源的轻量级分布式文件系统,凭借其高效的文件管理功能,特别适合用于构建相册网站、视频网站等以文件为载体的在线服务。本文将详细介绍如何利用FastDFS和Nginx快速搭建一个本地文件服务器,为您的工作和学习提供技术支持。
134 0
|
2月前
|
关系型数据库 Linux 应用服务中间件
如何在 Ubuntu 14.04 服务器上使用 Nginx 安装和保护 phpMyAdmin
如何在 Ubuntu 14.04 服务器上使用 Nginx 安装和保护 phpMyAdmin
19 0
|
2月前
|
NoSQL Redis
基于Redis的高可用分布式锁——RedLock
这篇文章介绍了基于Redis的高可用分布式锁RedLock的概念、工作流程、获取和释放锁的方法,以及RedLock相比单机锁在高可用性上的优势,同时指出了其在某些特殊场景下的不足,并提到了ZooKeeper作为另一种实现分布式锁的方案。
73 2
基于Redis的高可用分布式锁——RedLock
|
2月前
|
缓存 NoSQL Java
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解分布式情况下如何添加分布式锁 【续篇】
这篇文章是关于如何在SpringBoot应用中整合Redis并处理分布式场景下的缓存问题,包括缓存穿透、缓存雪崩和缓存击穿。文章详细讨论了在分布式情况下如何添加分布式锁来解决缓存击穿问题,提供了加锁和解锁的实现过程,并展示了使用JMeter进行压力测试来验证锁机制有效性的方法。
SpringBoot整合Redis、以及缓存穿透、缓存雪崩、缓存击穿的理解分布式情况下如何添加分布式锁 【续篇】
下一篇
无影云桌面