fastdfs学习笔记

原创
07/07 21:13
阅读数 3.1K

前言

​ 已经学习了几个月拉勾教育架构师课程了,课程质量真的是好的没话说。拉勾美女很多,老师讲课生动有趣,

张同学班级第一(没有之一)。

这里贴个链接,

oschina的小伙伴们可以看看:

https://kaiwu.lagou.com/

​ 本文主要是我自己学习搭建fastdfs集群时做的笔记。

fastdfs介绍

​ FastDFS 是一个开源的分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS 服务端有两个角色:跟踪器(tracker)和存储节点(storage)。跟踪器主要做调度工作,在访问上起负载均衡的作用。存储节点存储文件,完成文件管理的所有功能:存储、同步和提供存取接口, FastDFS 同时对文件的 meta data 进行管理。 ​ 跟踪器和存储节点都可以由一台多台服务器构成。跟踪器和存储节点中的服务器均可以随时增加或下线而不会影响线上服务。其中跟踪器中的所有服务器都是对等的,可以根据服务器的压力情况随时增加或减少。为了支持大容量,存储节点(服务器)采用了分卷(或分组)的组织方式。存储系统由一个或多个卷组成,卷与卷之间的文件是相互独立的,所有卷的文件容量累加就是整个存储系统中的文件容量。一个卷可以由一台或多台存储服务器组成,一个卷下的存储服务器中的文件都是相同的,卷中的多台存储服务器起到了冗余备份和负载均衡的作用。在卷中增加服务器时,同步已有的文件由系统自动完成,同步完成后,系统自动将新增服务器切换到线上提供服务。当存储空间不足或即将耗尽时,可以动态添加卷。只需要增加一台或多台服务器,并将它们配置为一个新的卷,这样就扩大了存储系统的容量。FastDFS 中的文件标识分为两个部分:卷名和文件名,二者缺一不可。

集群环境搭建

简单的介绍之后,我们进入集群环境的搭建。

集群规划

跟踪服务器 1 : 192.168.3.7 tracker-1

跟踪服务器 2 : 192.168.3.8 tracker-2 存储服务器 1 : 192.168.3.7 storage-group1-1

存储服务器 2 : 192.168.3.8 storage-group1-2

首先我们准备两台虚拟机,192.168.3.7,192.168.3.8,在虚拟机安装上fastdfs,命令如下:

yum install git gcc gcc-c++ make automake vim wget libevent -y
cd /opt/soft/fdfs
git clone https://github.com/happyfish100/libfastcommon.git --depth 1 
cd libfastcommon/
./make.sh && ./make.sh install
cd /opt/soft/fdfs
wget https://github.com/happyfish100/fastdfs/archive/V5.11.tar.gz
tar -zxvf V5.11.tar.gz
cd fastdfs-5.11
./make.sh && ./make.sh install
#配置文件准备
cp /etc/fdfs/tracker.conf.sample /etc/fdfs/tracker.conf
cp /etc/fdfs/storage.conf.sample /etc/fdfs/storage.conf
cp /etc/fdfs/client.conf.sample /etc/fdfs/client.conf
cp /opt/soft/fdfs/fastdfs-5.11/conf/http.conf /etc/fdfs
cp /opt/soft/fdfs/fastdfs-5.11/conf/mime.types /etc/fdfs

确保上面步骤完成后,编辑配置文件:

vi /etc/fdfs/tracker.conf

#需要修改的内容如下 port=22122 base_path=/opt/soft/fdfs/data store_lookup=0 # 0是轮询,1是指定组,2是剩余存储空间多的group优先

vi /etc/fdfs/storage.conf

port=23000 base_path=/opt/soft/fdfs/data # 数据和日志文件存储根目录 store_path0=/opt/soft/fdfs/data # 第一个存储目录 tracker_server=192.168.3.7:22122 tracker_server=192.168.3.8:22122 http.server_port=8888 subdir_count_per_path=32 group_name=group1 #注意组名 port=23000 #storage 的端口号,同一个组的 storage 端口号必须相同

启动 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf restart

/usr/bin/fdfs_storaged /etc/fdfs/storage.conf restart

使用/usr/bin/fdfs_monitor /etc/fdfs/storage.conf验证,输出以下内容:

安装fastdfs-nginx-module

确保上面步骤完成后,继续。

cd /opt/soft/fdfs
wget https://github.com/happyfish100/fastdfs-nginx-module/archive/V1.20.tar.gz
#解压
tar -xvf V1.20.tar.gz
cd fastdfs-nginx-module-1.20/src
vim config
#修改第5 行 和 15 行 修改成
ngx_module_incs="/usr/include/fastdfs /usr/include/fastcommon/"
CORE_INCS="$CORE_INCS /usr/include/fastdfs /usr/include/fastcommon/"
cp mod_fastdfs.conf /etc/fdfs/
vim /etc/fdfs/mod_fastdfs.conf
#需要修改的内容如下
tracker_server=192.168.3.7:22122 #注意192.168.3.8(另一台机)这里要修改
url_have_group_name=true
store_path0=/opt/soft/fdfs/data
mkdir -p /var/temp/nginx/

安装nginx

前提:要下载nginx安装包

cd /opt/soft/nginx/nginx-1.17.8
yum -y install pcre-devel openssl openssl-devel
# 添加fastdfs-nginx-module模块
./configure --add-module=/opt/soft/fdfs/fastdfs-nginx-module-1.20/src
make && make install

之后,我们可以配置以下两台机的nginx.conf

192.168.3.7的nginx.conf如下:

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"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    server {
     listen 8888;
     server_name localhost;
     location ~/group[0-9]/ {
     ngx_fastdfs_module;
     }
    }
    upstream app{
          server 192.168.3.7:8888;
          server 192.168.3.8:8888;
    }

    #gzip  on;

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
          proxy_pass http://app/;
        }
      }
      }

192.168.3.8的nginx.conf如下:

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"';

    #access_log  logs/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;
    server {
     listen 8888;
     server_name localhost;
     location ~/group[0-9]/ {
     ngx_fastdfs_module;
     }
    }

然后,访问http://192.168.3.7/group1/M00/00/00/wKgDB18AXzeAYdkCAABFKo-iNhg171.png

进行一下测试,多刷新几次,发现图片显示正常,完成了基于nginx的fastdfs负载均衡。

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部