FastDFS集群部署

服务器规划

  • Tracker server:10.8.8.52,10.8.8.53
  • Storage server:10.8.8.50,10.8.8.51
  • Storage server服务器40T硬盘挂载路径 /home/hifo

一、所有tracker和storage节点都执行

1、安装所需的依赖包

1
yum install make cmake gcc gcc-c++

2、安装libfastcommon

1
cd /usr/local/src

        安装unzip命令

1
2
3
yum install –y unzip zip
unzip libfastcommon-master.zip

3、编译安装

1
2
3
cd libfastcommon-master
./make.sh
./make.sh install

4、安装FastDFS

1
2
3
4
5
cd /usr/local/src
tar -xzvf FastDFS_v5.08.tar.gz
cd FastDFS
./make.sh
./make.sh install

        采用默认安装方式,相应的文件与目录检查如下:

        服务脚本:

1
2
/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_trackerd

        配置文件:

1
2
3
4
ll /etc/fdfs/
-rw-r--r-- 1 root root 1461 1月 4 14:34 client.conf.sample
-rw-r--r-- 1 root root 7927 1月 4 14:34 storage.conf.sample
-rw-r--r-- 1 root root 7200 1月 4 14:34 tracker.conf.sample

        命令工具:(/usr/bin目录下)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
ll /usr/bin/fdfs_*
-rwxr-xr-x 1 root root 260584 1月 4 14:34 fdfs_appender_test
-rwxr-xr-x 1 root root 260281 1月 4 14:34 fdfs_appender_test1
-rwxr-xr-x 1 root root 250625 1月 4 14:34 fdfs_append_file
-rwxr-xr-x 1 root root 250045 1月 4 14:34 fdfs_crc32
-rwxr-xr-x 1 root root 250708 1月 4 14:34 fdfs_delete_file
-rwxr-xr-x 1 root root 251515 1月 4 14:34 fdfs_download_file
-rwxr-xr-x 1 root root 251273 1月 4 14:34 fdfs_file_info
-rwxr-xr-x 1 root root 266401 1月 4 14:34 fdfs_monitor
-rwxr-xr-x 1 root root 873233 1月 4 14:34 fdfs_storaged
-rwxr-xr-x 1 root root 266952 1月 4 14:34 fdfs_test
-rwxr-xr-x 1 root root 266153 1月 4 14:34 fdfs_test1
-rwxr-xr-x 1 root root 371336 1月 4 14:34 fdfs_trackerd
-rwxr-xr-x 1 root root 251651 1月 4 14:34 fdfs_upload_appender
-rwxr-xr-x 1 root root 252781 1月 4 14:34 fdfs_upload_file

二、配置tracker服务器

1、复制tracker样例配置文件,并重命名

1
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf

2、修改tracker配置文件

1
vim /etc/fdfs/tracker.conf

        修改内容如下:

1
2
3
4
disabled=false # 启用配置文件
port=22122 # tracker服务器端口(默认22122)
base_path=/fastdfs/tracker # 存储日志和数据的根目录
store_group=g02

        其他参数保留默认配置

3、创建base_path指定目录

1
mkdir –p /fastdfs/tracker

        启动tracker服务器

1
/etc/init.d/fdfs_trackerd start

        初次启动会在/fastdfs/tracker目录下生成logs、data两个目录。

        检查 FastDFS Tarcker Server是否启动成功:

1
ps aux|grep fdfs_trackerd

01

三、配置storage服务器

1、复制storage样例配置文件,并重命名

1
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf

2、编辑配置文件

1
vim /etc/fdfs/storage.conf

        修改内容:

1
2
3
4
5
6
7
disabled=false # 启用配置文件
port=23000 # storage服务端口
base_path=/home/hifo # 数据和日志文件存储根目录
store_path0=/home/hifo # 第一个存储目录
tracker_server=10.8.8.52:22122 # tracker服务器IP和端口
tracker_server=10.8.8.3:22122 #tracker服务器IP2和端口
http.server_port=8888 # http访问文件的端口

        其他参数保留默认配置

3、创建基础数据目录

1
mkdir –p /home/hifo

        因挂载40T硬盘的时候已创建,所以现在不用创建。

4、启动storage服务器

1
/etc/init.d/fdfs_storaged start

        初次启动,会在/home/hifo目录下生成logs、data两个目录。

        检查FastDFS Storage Server是否启动成功

1
ps aux|grep fdfs_storaged

02

四、文件上传测试

1、修改tracker服务器客户端配置文件

1
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
1
vim /etc/fdfs/client.conf

        修改以下配置,其他保持默认

1
2
3
base_path=/fastdfs/tracker
tracker_server=10.8.8.52:22122 # tracker服务器IP和端口
tracker_server=10.8.8.53:22122 #tracker服务器IP2和端口

2、执行文件上传命令

        /usr/local/src/1.png是需要上传文件路径

1
/usr/bin/fdfs_upload_file /etc/fdfs/client.conf /usr/local/src/1.png

03

        返回文件ID号:group1/M00/00/00/CggIM1o6bpKAcmdXAABUIb1c0_k448.png

五、在storage节点安装fastdfs-nginx-module

1、fasgdfs-nginx-module作用说明

        FastDFS通过Tracker服务器,将文件放在Storage服务器存储,但是同组存储服务器之间需要进入文件复制,有同步延迟的问题。假设Tracker服务器将文件上传到了IP01,上传成功后文件ID已经返回给客户端。此时FastDFS存储集群机制会将这个文件同步到同组存储IP02,在文件还没有复制完成的情况下,客户端如果用这个文件ID在IP02上取文件,就会出现文件无法访问的错误。而fastdfs-nginx-module可以重定向文件连接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问的错误。(解压后的fastdfs-nginx-module在nginx安装时使用)

2、解压fastdfs-nginx-module

1
2
cd /usr/local/src
tar -xzvf fastdfs-nginx-module_v1.16.tar.gz

3、修改fastdfs-nginx-module的config配置文件

1
2
cd fastdfs-nginx-module/src
vim config

        将

1
CORE_INCS="$CORE_INCS /usr/local/include/fastdfs /usr/local/include/fastcommon/"

        修改为:

1
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/

4、安装Nginx上传当前的版本Nginx(nginx-1.10.0.tar.gz)到/us/local/src目录

5、安装编译Nginx所需的依赖包

1
yum install gcc gcc-c++ make automake autoconf libtool pcre* zlib openssl openssl-devel

6、编译安装Nginx(添加fastdfs-nginx-module模块)

1
2
3
4
5
6
7
8
9
cd /usr/local/src/
tar -zxvf nginx-1.10.0.tar.gz
tar –zxvf ngx_cache_purge_2.3.tar.gz
cd nginx-1.10.0
./configure --prefix=/opt/nginx --add-module=/usr/local/src/fastdfs-nginx-module/src --add-module=/usr/local/src/ngx_cache_purge-2.3
make && make install

7、复制fastdfs-nginx-module源码中的配置文件到/etc/fdfs目录,并修改

1
2
cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
vim /etc/fdfs/mod_fastdfs.conf

        修改以下配置

1
2
3
4
5
connect_timeout=10
base_path=/tmp
tracker_server=10.8.8.52:22122 # tracker服务器IP和端口
tracker_server=10.8.8.53:22122 #tracker服务器IP2和端口
url_have_group_name=true #url中包含group名称

        在最后添加[g02]

1
2
3
4
5
[g02]
group_name=g02
storage_server_port=23000
store_path_count=1
store_path0=/home/hifo

8、复制fastdfs的部分配置文件到/etc/fdfs目录

1
2
cd /usr/local/src/FastDFS/conf
cp http.conf mime.types /etc/fdfs/

9、在/fastdfs/storage文件存储目录下创建软连接,将其连接到实际存放数据的目录

1
2
ln -s /home/hifo/data/ /home/hifo/data/M00
ln -s /home/hifo/data/ /opt/nginx/html/g02/M00

10、配置nginx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
user nobody;
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
sendfile on;
keepalive_timeout 65;
server {
listen 4141;
server_name 10.8.8.50 #本机IP
location ~/g02/M00 {
ngx_fastdfs_module;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
upstream storage_server_g02{
server 10.8.8.50:8888 weight=10;
server 10.8.8.51:8888 weight=10;
}
}

        启动nginx

1
/opt/nginx/sbin/nginx -c /opt/nginx/conf/nginx.conf

六、验证

        通过浏览器方法测试上传的文件

04