FastDFS分布式文件系统Linux环境搭建
序言
FastDFS 是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。
在阅读本文之前,你可以对FastDFS有个初步的了解,以方便下面步骤的进行。
一、配置方案
Tarcker 服务器 1 台,Storage 服务器 2 台。
- Tarcker 192.168.10.100 Centos 7
- Storage 192.168.10.101 Centos 7
- Storage 192.168.10.102 Centos 7
在正式环境当中,通常会采用多 Tracker 以及多 Storage Group 同时Group中多节点备份,但本教程主要熟悉基础搭建,在下文配置中会对应提示大规模集群配置方法。
二、选择版本
- fastdfs-5.05.tar.gz
- fastdfs-nginx-module_v1.16.tar.gz
- libfastcommon-master.zip
- nginx-1.7.8.tar.gz
- perl-5.20.2.tar.gz
三、配置 Tracker 服务器
1. 创建文件路径
在Linux下创建一个安装FastDFS的文件夹,本文以
/opt/fastdfs
为准。在
/opt/fastdfs
下创建 Tracker 日志文件夹tracker
。
2. 安装 libfastcommon-master.zip
libfastcommon 中封装了一些fastdfs的公共函数等,所以在安装fastdfs前需要先安装 libfastcommon 包。
在
/opt/fastdfs/
下解压安装 libfastcommon ,在这过程中可能需要一些工具,例如 unzip、gcc、perl等。本文以没有安装为准,进行详细的说明。安装gcc、gcc-c++、perl,执行perl -version返回有结果表示安装成功。
yum -y install gcc
yum -y install gcc-c++
tar zxvf perl-5.20.2.tar.gz
mkdir /usr/local/perl
./Configure -des -Dprefix=/usr/local/perl -Dusethreads -Uversiononly
make
make install
perl -version
- 到
/opt/fastdfs/
下解压 libfastcommon-master.zip 包,并进行安装。
tar -zxvf libfastcommon-master.zip
cd libfastcommon/
chmod 777 make.sh
./make.sh
./make.sh install
- 因为libfastcommon安装路径在
/usr/lib64/
下,所以需要手动软连接。
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so
3.安装 FastDFS 5.05 包。
- 这里操作大致相同,进入
/opt/fastdfs/
下,解压fastdfs-5.05.tar.gz
并进行安装,执行完安装操作之后,看是否有/etc/fdfs/
文件路径,有的话则安装成功。
tar -zvxf fastdfs-5.05.tar.gz
cd FastDFS/
chmod 777 make.sh
./make.sh
./make.sh install
ln -s /usr/lib64/libfdfsclient.so /usr/local/lib/libfdfsclient.so
ln -s /usr/lib64/libfdfsclient.so /usr/lib/libfdfsclient.so
4.配置 Tracker
- 根据样例创建 tracker 配置文件,并进入编辑。
cd /etc/fdfs/
cp tracker.conf.sample tracker.conf
vi tracker.conf
修改如下:
disabled=false #启用配置文件
port=22122 #设置tracker的端口号,一般采用22122这个默认端口
base_path=/opt/fastdfs/tracker #设置tracker的日志目录)
- 启动tracker,并查看端口占用情况,启动成功则可以显示窗口占用情况。
/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
netstat -unltp|grep fdfs
- 打开文件
vi /etc/rc.d/rc.local
,将如下命令添加到该文件中/usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart
,即开启自动启动。 - 此时关于 tarker 的配置已经完成。
四、配置 Storage 服务器
配置 storage 与配置 tracker 的方式几乎一样,所以相同部分不再复述,不同点会进行详细步骤说明。
1. 创建文件路径
在Linux下创建一个安装FastDFS的文件夹,本文以
/opt/fastdfs
为准。在
/opt/fastdfs
下创建 storage 日志文件夹storage_info
。在
/opt/fastdfs
下创建 storage 数据文件夹storage_data
。
2. 安装 libfastcommon-master.zip
同上。
3.安装 FastDFS 5.05 包。
同上。
4. 配置 Storage
- 根据样例创建 storage 配置文件,并进入编辑。
cd /etc/fdfs/
cp storage.conf.sample storage.conf
vi storage.conf
修改如下:
disabled=false #启用配置文件
group_name=group1 #组名,根据此服务器修改
port=23001 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
base_path=/opt/fastdfs/storage_info #设置storage的日志目录
store_path_count=1 #存储路径个数,需要和store_path个数匹配
store_path0=/opt/fastdfs/storage_data #存储路径
tracker_server=192.168.10.100:22122 #tracker服务器的IP地址和端口号
- 启动 storage 并查看端口占用情况,启动成功则可以显示窗口占用情况。
/usr/bin/fdfs_storage /etc/fdfs/storage.conf restart
netstat -unltp|grep fdfs
通过以下命令查看storage的启动日志,看是否有错误: tail -100f /opt/fastdfs/storage_info/logs/storage.log
启动成功后,可以通过fdfs_monitor查看集群的情况,即storage是否已经注册到tracker服务器中,查看192.168.10.101:23001 是ACTIVE状态即可。
/usr/bin/fdfs_monitor /etc/fdfs/storage.conf
打开文件
vi /etc/rc.d/rc.local
,将如下命令添加到该文件中/usr/bin/fdfs_storage /etc/fdfs/storage.conf restart
,即开启自动启动。此时关于 storage 的配置已经完成。
关于 tracker 与 storage 关于 nginx 的配置
一、tracker 配置 nginx
tracker 配置 nginx 的作用主要是反向代理、负载均衡。
这里配置需要到fastdfs-nginx-module_v1.16.tar.gz
fastdfs的一个nginx插件,以及nginx包 nginx1.7.8.tar.gz
,在安装nginx过程中可能要安装一些工具,下面也会进行介绍。
安装工具:
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
安装nginx:
cd /opt/fastdfs/
tar -vxzf fastdfs-nginx-module_v1.16.tar.gz
tar -vxzf nginx1.7.8.tar.gz
cd nginx1.7.8/
mkdir /usr/local/nginx
./configure --prefix=/usr/local/nginx --add-module=/opt/fastdfs/fastdfs-nginx-module/fastdfs-nginx-module/src
- 执行到这一步可能会有错误提示,如果有错误提示的话,需要进入fastdfs-nginx-module/src目 录,编辑config文件,找到包含CORE_INCS这个一行,将路径中local全部去掉,变为CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"。修改完成后重复执行
./configure --prefix=/usr/local/nginx --add-module=/opt/fastdfs/fastdfs-nginx-module/fastdfs-nginx-module/src
make
make install
- 然后再依次执行 make 和 make install 这两个命令,没有报错误就是安装成功了。
- 执行命令 cd /usr/local/nginx/conf,编辑 nginx.conf 这个文件,对应增加以及修改,修改增加如下:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
upstream fdfs_group1 {
server 192.168.10.101:10050 ;
}
upstream fdfs_group2 {
server 192.168.10.102:10050 ;
}
server {
listen 10030;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location /group1/M00 {
proxy_pass http://fdfs_group1;
}
location /group2/M00 {
proxy_pass http://fdfs_group2;
}
}
}
- 执行命令
cd /myself_settings/fastdfs5.0.5/fastdfs-5.05/conf
,即进入fastdfs5.0.5
的安装文件夹的conf
目录下,将目录下面的http.conf
和mime.types
拷贝到/etc/fdfs/
下,如果不执行这一步,后边在启动nginx时会报错。 - 执行命令启动
nginx: /usr/local/nginx/sbin/nginx
,如果/usr/local/nginx/logs/error.log
中没有报错,同时访问192.168.10.100:10030
这个url能看到 nginx的欢迎页面。
一、storage 配置 nginx
storage 配置 nginx 的作用主要是storage中安装nginx,主要是为了为提供http的访问服务,同时解决group中storage服务器的同步延迟问题。
这里配置需要到fastdfs-nginx-module_v1.16.tar.gz
fastdfs的一个nginx插件,以及nginx包 nginx1.7.8.tar.gz
,在安装nginx过程中可能要安装一些工具,同上。
安装工具同上
安装nginx同上
- 执行到这一步可能会有错误提示,如果有错误提示的话,需要进入fastdfs-nginx-module/src目 录,编辑config文件,找到包含CORE_INCS这个一行,将路径中local全部去掉,变为CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"。修改完成后重复执行
./configure --prefix=/usr/local/nginx --add-module=/opt/fastdfs/fastdfs-nginx-module/fastdfs-nginx-module/src
make
make install
- 然后再依次执行 make 和 make install 这两个命令,没有报错误就是安装成功了。
- 执行命令 cd /usr/local/nginx/conf,编辑 nginx.conf 这个文件,对应增加以及修改,修改增加如下:
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
server {
listen 10050;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location ~/group1/M00{
root /opt/fastDFS/storage_data/data;
ngx_fastdfs_module;
}
}
}
执行命令
cd /myself_settings/fastdfs5.0.5/fastdfs-5.05/conf
,即进入fastdfs5.0.5
的安装文件夹的conf
目录下,将目录下面的http.conf
和mime.types
拷贝到/etc/fdfs/
下,如果不执行这一步,后边在启动nginx时会报错。执行命令
cd /myself_settings/fastdfs_nginx_module/fastdfs-nginx-module/src
,即进入fastdfs-nginx-module_v1.16
的安装文件夹的src
目录下,将目录下面的mod_fastdfs.conf
这个文件拷贝到/etc/fdfs
目录下。
vi mod_fastdfs.conf
group_name=group1 #当前服务器的group名
store_path_count=1 #存储路径个数,需要和store_path个数匹配
base_path=/opt/fastdfs/storage_info
store_path0=/opt/fastdfs/storage_data
tracker_server=192.168.10.100:22122 #storage服务器的端口号
#tracker_server=192.168.10.100:22122
url_have_group_name = true #文件url中是否有group名
group_count= 2 #设置组的个数
- 建立软连接
ln -s /opt/fastdfs_storage_data/data /opt/fastdfs_storage_data/data/M00
- 执行命令启动
nginx: /usr/local/nginx/sbin/nginx
,如果/usr/local/nginx/logs/error.log
中没有报错,同时访问192.168.10.101:10050
这个url能看到 nginx的欢迎页面。
测试 上传 / 下载
- 打开 /etc/fdfs 文件夹,编辑 client.conf 文件,编辑内容如下:
base_path=/opt/fastdfs_tracker #存放路径
tracker_server=192.168.10.100:22122 #tracker服务器IP地址和端口号
模拟上传文件,执行如下命令:
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /opt/1.txt
,执行之后会马上返回一个字符串路径。在浏览器中执行
192.168.10.100/group1/M00/00/00/wKjgGlVYgi6AAv3tAAAADv4ZzcQ572.txt
即可下载。