FastDFS分布式文件系统安装和配置_亲测成功

FastDFS分布式文件系统安装和配置_亲测成功

介绍

分布式文件系统:Distributed file system, DFS,又叫做网络文件系统:Network File System。一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。

FastDFS:是一个开源的轻量级分布式文件系统,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合中小文件(建议范围:4KB < file_size <500MB),对以文件为载体的在线服务,如相册网站、视频网站等。

FastDFS是为互联网应用量身定做的分布式文件系统,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标。和现有的类Google FS分布式文件系统相比,FastDFS的架构和设计理念有其独到之处,主要体现在轻量级、分组方式和对等结构三个方面。

FastDFS架构

FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker server)、存储服务器(storage server)和客户端(client)三个部分组成,主要解决了海量数据存储问题,特别适合以中小文件(建议范围:4KB < file_size <500MB)为载体的在线服务。
FastDFS的系统结构图如下:

在这里插入图片描述

文件服务器搭建

文件服务器搭建参考于博客:http://blog.csdn.net/wlwlwlwl015/article/details/52619851

下载所需的包

yum -y install wget vim gcc-c++ git pcre pcre-devel zlib zlib-devel openssl openssl-devel

mkdir -p /data/software
cd /data/software

wget -O libfastcommon-1.0.7.tar.gz https://codeload.github.com/happyfish100/libfastcommon/tar.gz/V1.0.7

wget -O fastdfs-5.05.tar.gz https://codeload.github.com/happyfish100/fastdfs/tar.gz/V5.05

wget -O libfastcommon-1.0.39.tar.gz https://codeload.github.com/happyfish100/libfastcommon/tar.gz/V1.0.39

wget -O fastdfs-5.11.tar.gz https://codeload.github.com/happyfish100/fastdfs/tar.gz/V5.11

tar -zxvf libfastcommon-1.0.7.tar.gz
tar -zxvf fastdfs-5.05.tar.gz

安装fastdfs

cd /data/software/libfastcommon-1.0.7
./make.sh
./make.sh install
ln -s /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
ln -s /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so

cd /data/software/fastdfs-5.05
./make.sh
./make.sh install

cd /etc/fdfs
cp client.conf.sample client.conf
cp storage.conf.sample storage.conf
cp tracker.conf.sample tracker.conf
cp /data/software/fastdfs-5.05/conf/http.conf /etc/fdfs
cp /data/software/fastdfs-5.05/conf/mime.types /etc/fdfs

配置和启动tracker

配置tracker

mkdir -p /data/apps/fdfs/tracker
vim /etc/fdfs/tracker.conf
    disabled=false #启用配置文件(默认启用)
    port=22122 #设置tracker的端口号,通常采用22122这个默认端口
    base_path=/data/apps/fdfs/tracker #设置tracker的数据文件和日志目录
    http.server_port=6666 #设置http端口号,默认为8080

启动tracker服务

ln -s /usr/bin/fdfs_trackerd /usr/local/bin
ln -s /usr/bin/stop.sh /usr/local/bin
ln -s /usr/bin/restart.sh /usr/local/bin
service fdfs_trackerd start
#/usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf start

设置开机启动

echo 'service fdfs_trackerd start' >> /etc/rc.d/rc.local

echo '/usr/local/bin/fdfs_trackerd /etc/fdfs/tracker.conf start' >> /etc/rc.d/rc.local

配置和启动storage

#配置storage
mkdir -p /data/apps/fdfs/storage
mkdir -p /data/datas/fdfs
vim /etc/fdfs/storage.conf

    disabled=false #启用配置文件(默认启用)
    group_name=group1 #组名,根据实际情况修改
    port=23000 #设置storage的端口号,默认是23000,同一个组的storage端口号必须一致
    base_path=/data/apps/fdfs/storage #设置storage数据文件和日志目录
    store_path_count=2 #存储路径个数,需要和store_path个数匹配
    store_path0=/data/datas/fdfs/path0 #实际文件存储路径
    store_path1=/data/datas/fdfs/path1 #实际文件存储路径
    tracker_server=192.168.111.11:22122 #tracker 服务器的 IP地址和端口号,如果是单机搭建,IP不要写127.0.0.1,否则启动不成功
    http.server_port=8888 #设置 http 端口号
    
#启动storage服务
ln -s /usr/bin/fdfs_storaged /usr/local/bin
#启动需要一点时间
mkdir -p /data/datas/fdfs/path0
mkdir -p /data/datas/fdfs/path1
service fdfs_storaged start 
#/usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf start

#设置开机启动
echo 'service fdfs_storaged start' >> /etc/rc.d/rc.local

echo '/usr/local/bin/fdfs_storaged /etc/fdfs/storage.conf start' >> /etc/rc.d/rc.local

为storage安装nginx模块

安装Nginx

wget http://nginx.org/download/nginx-1.10.2.tar.gz

git clone https://github.com/happyfish100/fastdfs-nginx-module.git

tar -xzvf nginx-1.10.2.tar.gz

cd nginx-1.10.2

./configure --prefix=/data/apps/nginx-storaged \
    --pid-path=/data/logs/nginx-storaged/nginx.pid \
    --lock-path=/data/apps/nginx-storaged/nginx.lock \
    --error-log-path=/data/logs/nginx-storaged/error.log \
    --http-log-path=/data/logs/nginx-storaged/access.log \
    --http-client-body-temp-path=/data/temps/nginx-storaged/client_body_temp \
    --http-proxy-temp-path=/data/temps/nginx-storaged/proxy_temp \
    --http-fastcgi-temp-path=/data/temps/nginx-storaged/fastcgi_temp \
    --http-uwsgi-temp-path=/data/temps/nginx-storaged/uwsgi_temp \
    --http-scgi-temp-path=/data/temps/nginx-storaged/scgi_temp \
    --with-http_stub_status_module \
    --add-module=/data/software/fastdfs-nginx-module/src

make
make install

致命错误:common_define.h:没有那个文件或目录

参考链接:
https://blog.csdn.net/zzzgd_666/article/details/81911892

/usr/local/include/fastdfs/fdfs_define.h:15:27: 致命错误:common_define.h:没有那个文件或目录
vim fastdfs-nginx-module-1.20/src/config
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
还报错
错误:‘FDFSHTTPParams’没有名为‘support_multi_range’的成员
装新版本的 libfastcommon  fastdfs 后重新编译

配置Nginx

mkdir -p /data/datas/fdfs/path0/data
mkdir -p /data/datas/fdfs/path1/data

ln -s /data/datas/fdfs/path0/data  /data/datas/fdfs/path0/data/M00
ln -s /data/datas/fdfs/path1/data  /data/datas/fdfs/path0/data/M01

修改Nginx配置

vim /data/apps/nginx-storaged/conf/nginx.conf

user  root;
#根据CPU个数配置
worker_processes  2;

        listen       9999;
        
        access_log  /data/logs/nginx-storaged/access.log;

        location ~/group1 {
    
    
            root /data/datas/fdfs/path0/data;
            ngx_fastdfs_module;
        }

修改Nginx模块配置

cp -r /data/software/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs/
vim /etc/fdfs/mod_fastdfs.conf

    base_path=/data/logs/fdstdfs-ng-module #保存日志目录
    tracker_server=192.168.10.82:22122 
    tracker_server=192.168.10.83:22122 
    tracker_server=192.168.10.84:22122
    tracker_server=192.168.10.85:22122
    storage_server_port=23000 #storage服务器的端口号
    url_have_group_name = true #文件 url 中是否有 group 名
    
    store_path_count=2 #存储路径个数,需要和store_path个数匹配
    store_path0=/data/datas/fdfs/path0 #实际文件存储路径
    store_path0=/data/datas/fdfs/path1 #实际文件存储路径

    
    group_count = 2 #设置组的个数,事实上这次只使用了group1

    [group1]
    group_name=group1
    storage_server_port=23000
    store_path_count=2
    store_path0=/data/datas/fdfs/path0
    store_path1=/data/datas/fdfs/path1

    [group2]
    group_name=group2
    storage_server_port=23000
    store_path_count=2
    store_path0=/data/datas/fdfs/path0
    store_path1=/data/datas/fdfs/path1

启动Nginx

cp -r /data/software/fastdfs-5.05/conf/http.conf /etc/fdfs/
cp -r /data/software/fastdfs-5.05/conf/mime.types /etc/fdfs/

mkdir -p /data/temps/nginx-storaged/client_body_temp
mkdir -p /data/temps/nginx-storaged/client_body_temp
/data/apps/nginx-storaged/sbin/nginx


echo '/data/apps/nginx-storaged/sbin/nginx' >> /etc/rc.d/rc.local

测试安装是否成功

mkdir -p /data/apps/fdfs/client
vim /etc/fdfs/client.conf

base_path=/data/apps/fdfs/client
tracker_server=192.168.10.82:22122 
tracker_server=192.168.10.83:22122 
tracker_server=192.168.10.84:22122
tracker_server=192.168.10.85:22122
http.tracker_server_port=8080

fdfs_test1 /etc/fdfs/client.conf upload a.txt

Nginx官网upload-module模块代码

Nginx官网upload-module模块代码 指定的是vkholodkov这个地址的,但是自动跳转到fdintino
vkholodkov这个地址已经不存在了

git clone -b 2.2 https://github.com/vkholodkov/nginx-upload-module


git clone -b 2.3.0 https://github.com/fdintino/nginx-upload-module 

./configure --prefix=/u06/data/apps/nginx-main \
    --pid-path=/u06/data/logs/nginx-main/nginx.pid \
    --lock-path=/u06/data/apps/nginx-main/nginx.lock \
    --error-log-path=/u06/data/logs/nginx-main/error.log \
    --http-log-path=/u06/data/logs/nginx-main/access.log \
    --http-client-body-temp-path=/u06/data/temps/nginx-main/client_body_temp \
    --http-proxy-temp-path=/u06/data/temps/nginx-main/proxy_temp \
    --http-fastcgi-temp-path=/u06/data/temps/nginx-main/fastcgi_temp \
    --http-uwsgi-temp-path=/u06/data/temps/nginx-main/uwsgi_temp \
    --http-scgi-temp-path=/u06/data/temps/nginx-main/scgi_temp \
    --with-http_stub_status_module \
    --add-module=/u06/data/software/nginx-upload-module \
    --with-http_auth_request_module \
    --with-http_ssl_module \
    --with-http_realip_module \
    --with-pcre=/u06/data/software/pcre-8.35

--add-module=/u06/data/software/fastdfs-nginx-module/src \
前端对外的nginx不用这个fastdfs模块,使用负载到后端的fastdfs去下载文件

查看nginx编译参数
/u06/data/apps/nginx-main/sbin/nginx -V

./configure --prefix=/u06/data/apps/nginx-main \
    --pid-path=/u06/data/logs/nginx-main/nginx.pid \
    --lock-path=/u06/data/apps/nginx-main/nginx.lock \
    --error-log-path=/u06/data/logs/nginx-main/error.log \
    --http-log-path=/u06/data/logs/nginx-main/access.log \
    --http-client-body-temp-path=/u06/data/temps/nginx-main/client_body_temp \
    --http-proxy-temp-path=/u06/data/temps/nginx-main/proxy_temp \
    --http-fastcgi-temp-path=/u06/data/temps/nginx-main/fastcgi_temp \
    --http-uwsgi-temp-path=/u06/data/temps/nginx-main/uwsgi_temp \
    --http-scgi-temp-path=/u06/data/temps/nginx-main/scgi_temp \
    --with-http_stub_status_module \
    ####--add-module=/u06/data/software/fastdfs-nginx-module/src \
    --add-module=/u06/data/software/nginx-upload-module \
    --with-http_auth_request_module \
    --with-http_ssl_module \
    --with-http_realip_module \
    --with-pcre=/u06/data/software/pcre-8.35


查看nginx编译参数
/u06/data/apps/nginx-storaged/sbin/nginx -V

./configure --prefix=/u06/data/apps/nginx-storaged \
    --pid-path=/u06/data/logs/nginx-storaged/nginx.pid \
    --lock-path=/u06/data/apps/nginx-storaged/nginx.lock \
    --error-log-path=/u06/data/logs/nginx-storaged/error.log \
    --http-log-path=/u06/data/logs/nginx-storaged/access.log \
    --http-client-body-temp-path=/u06/data/temps/nginx-storaged/client_body_temp \
    --http-proxy-temp-path=/u06/data/temps/nginx-storaged/proxy_temp \
    --http-fastcgi-temp-path=/u06/data/temps/nginx-storaged/fastcgi_temp \
    --http-uwsgi-temp-path=/u06/data/temps/nginx-storaged/uwsgi_temp \
    --http-scgi-temp-path=/u06/data/temps/nginx-storaged/scgi_temp \
    --with-http_stub_status_module \
    --add-module=/u06/data/software/fastdfs-nginx-module/src

参考链接:
https://blog.csdn.net/wlwlwlwl015/article/details/52619851
https://blog.csdn.net/zzzgd_666/article/details/81911892
https://blog.csdn.net/u013378306/article/details/74852294
https://www.cnblogs.com/kevingrace/p/8471827.html
https://my.oschina.net/u/2481288/blog/1829110

猜你喜欢

转载自blog.csdn.net/yinjl123456/article/details/123723718