返回介绍

7.1 FastDFS 安装

发布于 2025-04-26 13:26:34 字数 9465 浏览 0 评论 0 收藏

FastDFS 分为服务端和客户端 API 两部分,服务端又分为跟踪器(Tracker)和存储节点(Storage)两个角色。跟踪器主要负责服务调度,起着负载均衡的作用。存储节点主要负责文件的存储、读取和同步等功能。客户端 API 提供了文件的上传、下载和删除等操作方法。

典型的 FastDFS 服务器的网络拓扑结构如图 7-1 所示,客户端连接跟踪器服务器集群,跟踪器管理存储节点集群,为客户端提供可用的存储节点。

图 7-1 FastDFS 服务器网络拓扑

FastDFS 支持动态扩展,当资源快要耗尽时,可以通过增加新卷(或新组)的方法,增加更多的存储节点。

存储节点的文件使用了分卷(或分组)的组织方式,所以一个文件的标识由卷名(或组名)、路径和文件名等部分组成。

为了演示使用 FastFDS,使用虚拟机安装了三个 Linux 系统。表 7-1 列出了三个服务器的 IP 地址、安装的操作系统和各自的用途。

表 7-1 FastFDS 服务器列表

下面将按照步骤说明安装的过程,由于使用 Nginx 提供文件的浏览访问功能,同时也需要安装 Nginx 服务,对于文件的组织方式使用了分组的方法,并建立了一个分组:group1。

7.1.1 下载安装包

登录 Tracker Server,使用下列指令切换到 opt 目录。

#cd  /opt

然后使用 wget 指令下载下列各个安装包,最后将下载的文件拷贝到其他两台服务器的相同目录中(注:检出实例工程后,在 doc 目录中包含下列安装包)。

1.下载 FastDFS 5.01

#wget  http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Server%20
Source%20Code/FastDFS%20Server%20with%20PHP%20Extension%20Source%20Code%20
V5.01/FastDFS_v5.01.tar.gz

2.下载 nginx 1.7.0

#wget http://nginx.org/download/nginx-1.7.0.tar.gz

3.下载 fastdfs-nginx-module_v1.16

#wget http://jaist.dl.sourceforge.net/project/fastdfs/FastDFS%20Nginx%20
Module%20Source%20Code/fastdfs-nginx-module_v1.16.tar.gz

7.1.2 安装服务

三台服务器上都要安装 FastDFS 和 Nginx,其中 FastFDS 使用了默认的安装配置,Nginx 使用了自定义的安装配置。

要执行安装指令,系统中必须具有编译环境,如果系统还没有编译环境,可以使用下列指令增加编译环境。

#yum -y install gcc gcc+ gcc-c++ openssl openssl-devel pcre pcre-deve

1.创建系统用户

#useradd fastdfs -M -s /sbin/nologin
#useradd nginx -M -s /sbin/nologin

2.安装 FastFDS

#tar xf FastDFS_v5.01.tar.gz
#cd FastDFS
#./make.sh
#./make.sh install

3.安装 Nginx

#cd ..
#tar xf fastdfs-nginx-module_v1.16.tar.gz
#tar xf nginx-1.7.0.tar.gz
#cd nginx-1.7.0
#./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --add-module=
../fastdfs-nginx-module/src
#make
#make install

注意 在 Tracker Server 上安装 Nginx,不需要--add-module=../fastdfs-nginx-module/src 这个配置项,而两个 Storage Server 的安装必须加上这个配置项。

7.1.3 Tracker Server 配置

1.创建数据及日志存放目录

#mkdir -p /data/fastdfs/tracker

2.修改 tracker.conf 配置

#vi /etc/fdfs/tracker.conf

更改下列两行配置:

base_path=/data/fastdfs/tracker
group_name=group1

3.修改 nginx.conf 配置

#vi /usr/local/nginx/conf/nginx.conf

修改完成后如代码清单 7-1 所示,这是 Tracker Server 的一个负载均衡配置(代码内容可以从工程的 doc 目录 nginx.conf-tracker 文件中复制进来)。注意这里的 Tracker Server 开放访问端口为 84(非必须,只因为 80 端口已经作为其他用途)。

代码清单 7-1 Tracker Server 的 Nginx 配置

user  nginx nginx;
worker_processes 4;
pid /usr/local/nginx/nginx.pid;
worker_rlimit_nofile 51200;
events
{
use epoll;
worker_connections 20480;
}
http
{
    include       mime.types;
    default_type  application/octet-stream;
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request"'
            '$status $body_bytes_sent "$http_referer"'
            '"$http_user_agent" "$http_x_forwarded_for" "$request_time"';
    access_log /usr/local/nginx/logs/access.log main;
    upstream server_group1{
            server 192.168.1.215;
            server 192.168.1.216;
    }
    server {
            listen 84;
            server_name 192.168.1.214;
            location /group1 {
                include proxy.conf;
                proxy_pass http://server_group1;
            }
    }
}

4.配置 Tracker Server 启动程序

使用如下指令配置 Tracker Server 的启动程序,并将其设置为随系统启动自动启动。

#cp /opt/FastDFS/init.d/fdfs_trackerd /etc/init.d/
#chkconfig --add fdfs_trackerd
#chkconfig fdfs_trackerd on

5.配置 Nginx 的启动程序

使用下面指令创建一个启动文件:

#vi /etc/init.d/nginx

然后编辑(可以复制实例工程中 doc 目录的 nginx 文件内容)如代码清单 7-2 所示的内容。

代码清单 7-2 Nginx 启动程序

#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
# It has a lot of features, but it's not for everyone.
# processname: nginx
# pidfile: /var/run/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf
nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/var/run/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ ${NETWORKING} = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
    echo "nginx already running...."
    exit 1
fi
    echo -n $"Starting $prog: "
    daemon $nginxd -c ${nginx_config}
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
    return $RETVAL
}
# Stop nginx daemons functions.
stop() {
        echo -n $"Stopping $prog: "
        killproc $nginxd
        RETVAL=$?
        echo
        [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /var/run/nginx.pid
}
# reload nginx service functions.
reload() {
    echo -n $"Reloading $prog: "
    #kill -HUP `cat ${nginx_pid}`
    killproc $nginxd -HUP
    RETVAL=$?
    echo
}
# See how we were called.
case "$1" in
start)
        start
        ;;
stop)
        stop
        ;;
reload)
        reload
        ;;
restart)
        stop
        start
        ;;
status)
        status $prog
        RETVAL=$?
        ;;
*)
        echo $"Usage: $prog {start|stop|restart|reload|status|help}"
        exit 1
esac
exit $RETVAL

将上面文件保存后,使用下列指令,修改为任何人可执行,并将其设定为随系统启动自动启动:

#chmod 755 /etc/init.d/nginx
#chkconfig --add nginx
#chkconfig nginx on

7.1.4 Storage Server 配置

两台 Storage Server 都要进行下列相关的配置。

1.创建数据及日志保存目录

#mkdir -p /data/fastdfs/storage/data

2.修改 storage.conf 配置

# vi /etc/fdfs/storage.conf

修改下列配置项,其他保持默认设置:

group_name=group1
base_path=/data/fastdfs
store_path0=/data/fastdfs/storage
tracker_server=192.168.1.214:22122
run_by_group=fastdfs
run_by_user=fastdfs
file_distribute_path_mode=1
rotate_error_log=true

3.修改 mod_fastdfs.conf 配置

#cp /opt/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
#vi /etc/fdfs/mod_fastdfs.conf

修改下列各项配置:

connect_timeout=30
tracker_server=192.168.1.214:22122
group_name=group1
url_have_group_name = true
store_path_count=1
store_path0=/data/fastdfs/storage

4.修改 nginx.conf 配置

Storage Server 的 Nginx 配置如代码清单 7-3 所示,监听 80 端口,并使用 fastdfs-nginx-module 模块(代码内容保存在工程的 doc 目录 nginx.conf-storage 文件中)。

代码清单 7-3 Storage Server 的 Nginx 配置

user nginx nginx;
worker_processes 4;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 1024;
events {
    use epoll;
    worker_connections 1024;
}
http {
    include mime.types;
    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 20m;
    limit_rate  1024k;
    default_type application/octet-stream;
    log_format main '$remote_addr - $remote_user [$time_local] "$request" '
    '$status $body_bytes_sent "$http_referer" '
    '"$http_user_agent" "$http_x_forwarded_for"';
    access_log /usr/local/nginx/logs/access.log main;
    server {
        listen 80;
        server_name localhost;
        location /group1/M00{
            root /data/fastdfs/storage/data;
            ngx_fastdfs_module;
        }
    }
}

使用下列指令创建一个 M00 软连接,让配置中的 M00 同样指向 data 目录。

#ln -s /data/fastdfs/storage/data /data/fastdfs/storage/data/M00

5.配置 Storage Server 的启动程序

#cp /opt/FastDFS/init.d/fdfs_storaged /etc/init.d/
#chkconfig --add fdfs_storaged
#chkconfig fdfs_storaged on

6.配置 Nginx 的启动程序

Nginx 的启动程序配置与 Tracker Server 的配置相同。如果不使用自定义的启动程序,也可以使用下列指令启动 Nginx。

#/usr/local/nginx/sbin/nginx

7.1.5 启动服务

1.启动 Tracker Server

#service fdfs_trackerd start
#service nginx start

2.启动 Storage Server

#service fdfs_storaged start
#service nginx start

启动后,可以使用下列指令来查看各个服务的进程。

#ps -ef|grep fdfs
#ps-ef|grep nginx

如果能查看到服务进程,一般就说明已经启动成功。

7.1.6 客户端测试

1.在 Tracker Server 中配置一个客户端

#vi /etc/fdfs/client.conf

修改下列配置项:

base_path=/data/fastdfs
tracker_server=192.168.10.214:22122

2.查看服务的运行情况

在 Tracker Server 使用下列指令可以查看服务的运行情况:

#fdfs_monitor /etc/fdfs/client.conf

3.测试文件上传

如果在当前路径(例如/opt)中存在一个图片文件:01.jpg,即可使用下列指令来测试上传文件:

#fdfs_upload_file /etc/fdfs/client.conf 01.jpg

上传成功后将返回已经保存的文件标识,它包含组名、路径和文件名,如下所示:

group1/M00/00/00/wKgB2FdH892AclCqAAA2FfBeCgg517.jpg

4.使用浏览器访问文件

使用上面配置的 Tracker Server 的 Web 服务端口,就可以使用下面完整的 URL 访问上面上传的文件:

http://192.168.1.214:84/group1/M00/00/00/wKgB2FdH892AclCqAAA2FfBeCgg517.jpg

注意 上面这个链接只是本地局域网的地址,如果要在互联网中使用,必须使用外网 IP 或者域名。

现在,就可以在安装的两台 Storage Server 服务器中其中一台的/data 目录中找到已经保存的文件。

上面测试成功,表明 FastFDS 安装成功,并且已经正常运行,接着介绍如何在应用系统中使用分布式文件系统。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。