随着文件数据的越来越多,通过 tomcat 或 nginx 虚拟化的静态资源文件在单一的一个服务器节点内是存不下的,如果用多个节点来存储就会不利于管理和维护,所以需要一个系统来管理多态计算机节点上的文件数据,这就是 分布式文件系统。
分布式文件系统是一个允许文件通过网络在多态节点上分享的文件系统,多台计算机节点共同组成一个整体。
它的优点:
- 提供 冗余备份,所以容错能力高,系统中某个节点宕机了,整体的文件服务不会停止,数据也不会丢失。
- 它的可扩展性强,增加或减少节点简单
- 提供负载均衡能力,在读取文件副本的时候可以有多个节点共同服务,而且可以通过横向扩展确保性能的提升与负载。
FastDFS 是一个轻量级分布式文件系统,它的功能有:文件存储、文件同步,文件访问(文件的上传、下载)。
FastDFS 服务端有两个角色,跟踪器 和 存储节点 :
- 跟踪器主要做调度工作,在访问上起到负载均衡的作用
- 存储节点,完成文件管理的所有功能,如存储、同步和提供存取接口等,同时对文件的 进行管理( 就是文件的相关属性,以键值对的方式表示)
- FastDFS 中的文件标识分为两个部分:卷名和文件名,二者缺一不可
- 和 之间会有定时发送心跳服务, 会定时地向 提交、同步相应的状态信息,因此要先启动 后再启动
环境准备:
- :FastDFS 分离出的一些公用函数包,github下载地址,这里下载 版本
- :FastDFS 本体,github下载地址,这里下载 版本
- :FastDFS 和 nginx 的关联模块,github下载地址,这里下载 版本
然后在两台Linux下( 和 )执行一下操作:
- 安装基础环境
- 安装 函数库
进入解压文件夹,编译并安装
- 安装 FastDFS 主程序
进入解压文件夹,编译并安装
和 都是同一个 FastDFS 的主程序的两个不同概念,配置不同的配置文件就可以设定为 或者
上面安装的时候就说过 目录下是一些配置文件,要配置 tracker 服务则配置 文件即可,这里修改 属性(修改之后需要手动创建对应的目录 ),它表示 tracker 的工作目录:
启动 tracker 服务:
关闭 tracker 服务:
防火墙要开对应的默认端口
如下修改 storage 配置文件 ,同时记得添加对应的文件目录
启动 storage 服务,必须首先启动 tracker
防火墙要开启默认的端口
1.2.1 使用客户端测试上传文件
在配置 的节点服务器上修改 配置文件(配置好 后可以实现上传功能),并创建对应目录
上传文件 到 上:
它会返回一些相应上传后的文件信息,如:
其中:
- 表示卷名(组名)
- 表示虚拟路径,如果是按照上述的配置,指向的就是 这个目录
- 再进入到 这个目录下,就可以发现对应的上传文件了
不过此时在外部直接输入 url 访问,是无法访问的,它需要借助 nginx。
- 解压、配置 nginx 插件
解压 Nginx 的 Fastdfs 的压缩包
解压之后,进入到对应解压目录如 ,复制 配置文件到 目录下
- 修改 配置文件
- 修改 文件,主要是以下两个变量
- Nginx 添加对应模块配置
在 Nginx 的源文件目录(即解压缩的文件目录),使用 命令,后面的具体操作参考 这里
最后在 Nignx 配置文件添加虚拟主机:
重新启动 Nginx 后,查看一下上述上传的图片,访问 url 如下: