Nginx && FastDFS实现分布式文件服务器

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: Nginx && FastDFS实现分布式文件服务器

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。


FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。


1. 下载安装 libfastcommon


libfastcommon是从 FastDFS 和 FastDHT 中提取出来的公共 C 函数库,基础环境,安装即可 。


1.1 下载:
  1. wget https://github.com/happyfish100/libfastcommon/archive/V1.0.7.tar.gz

1.2 解压:
  1. tar -zxvf V1.0.7.tar.gz

1.3 安装:
  1. cd libfastcommon-1.0.7
  2. ./make.sh
  3. ./make.sh install

1.4 复制文件:


解决FastDFS中lib配置文件路径问题。


  1. cp /usr/lib64/libfastcommon.so /usr/local/lib/libfastcommon.so
  2. cp /usr/lib64/libfastcommon.so /usr/lib/libfastcommon.so


2. 下载安装FastDFS


2.1 下载:
  1. wget https://github.com/happyfish100/fastdfs/archive/V5.05.tar.gz


2.2 解压:
  1. tar -zxvf V5.05.tar.gz

2.3 安装:


  1. cd fastdfs-5.05
  2. ./make.sh  
  3. ./make.sh install


安装完成后,默认配置文件目录为: /etc/fdfs/,默认命令放在 /usr/bin/中,以 fdfs_开头。


3. 配置FastDFS


首先将配置文件复制到 /etc/fdfs目录下。


  1. cd /home/fantj/download/fastdfs-5.05/conf
  2. cp */etc/fdfs/
  3. 如下:
  4. [root@s168 conf]# cd /etc/fdfs/
  5. [root@s168 fdfs]# ls
  6. anti-steal.jpg  client.conf.sample  mime.types    storage.conf.sample  tracker.conf
  7. client.conf     http.conf           storage.conf  storage_ids.conf     tracker.conf.sample


3.1. 配置tracker.conf


FastDFS跟踪器


修改如下配置:


  1. #Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建)
  2. base_path=/fastdfs/tracker
  3. port=22122

3.1.1 创建该目录:


mkdir-p/fastdfs/tracker


3.1.2 启动/关闭:


fdfs_trackerd/etc/fdfs/tracker.conf start/stop


默认使用 /etc/fdfs下的配置文件,如有指定配置可在后面追加参数。如有防火墙,开放防火墙规则。


3.1.3 设置开机启动:


  1. # systemctl enable fdfs_trackerd
  2. 或者:
  3. # vim /etc/rc.d/rc.local
  4. 加入配置:
  5. /etc/init.d/fdfs_trackerd start

3.1.4 tracker server 目录及文件结构 :


Tracker服务启动成功后,会在base_path下创建data、logs两个目录。目录结构如下:


  1. ${base_path}
  2.  |__data
  3.  |   |__storage_groups.dat:存储分组信息
  4.  |   |__storage_servers.dat:存储服务器列表
  5.  |__logs
  6.  |   |__trackerd.log tracker server 日志文件


3.2. 配置storage


下面只是基本配置,如有更细微的需要,则请查看所有配置。


  1. group_name=fantj     #组名
  2. base_path=/fastdfs/storage   #日志目录
  3. store_path0=/fastdfs/storage     #存储目录
  4. tracker_server=192.168.27.168:22122    #tracker节点
  5. http.server_port=8888    #端口

3.2.1 启动


  1. 可以用这种方式启动
  2. fdfs_storaged /etc/fdfs/storage.conf start
  3. 也可以用这种方式,后面都用这种
  4. # service fdfs_storaged start

3.2.2 检查进程


netstat-unltp|grep fdfs


3.2.3 Storage 开机启动


  1. # systemctl enable fdfs_storaged
  2. 或者:
  3. # vim /etc/rc.d/rc.local
  4. 加入配置:
  5. /etc/init.d/fdfs_storaged start

3.2.4 Storage 目录


Storage 启动成功后,在base_path 下创建了data、logs目录,记录着 Storage Server 的信息。


在 store_path0 目录下,创建了N*N个子目录:


  1. [root@s168 data]# pwd
  2. /fastdfs/storage/data
  3. [root@s168 data]# ls
  4. 00  07  0E  15  1C  23  2A  31  38  3F  46  4D  54  5B  62  69  70  77  7E  85  8C  93  9A  A1  A8  AF  B6  BD  C4  CB  D2  D9  E0  E7  EE  F5  FC
  5. 01  08  0F  16  1D  24  2B  32  39  40  47  4E  55  5C  63  6A  71  78  7F  86  8D  94  9B  A2  A9  B0  B7  BE  C5  CC  D3  DA  E1  E8  EF  F6  FD
  6. 02  09  10  17  1E  25  2C  33  3A  41  48  4F  56  5D  64  6B  72  79  80  87  8E  95  9C  A3  AA  B1  B8  BF  C6  CD  D4  DB  E2  E9  F0  F7  fdfs_storaged.pid
  7. 03  0A  11  18  1F  26  2D  34  3B  42  49  50  57  5E  65  6C  73  7A  81  88  8F  96  9D  A4  AB  B2  B9  C0  C7  CE  D5  DC  E3  EA  F1  F8  FE
  8. 04  0B  12  19  20  27  2E  35  3C  43  4A  51  58  5F  66  6D  74  7B  82  89  90  97  9E  A5  AC  B3  BA  C1  C8  CF  D6  DD  E4  EB  F2  F9  FF
  9. 05  0C  13  1A  21  28  2F  36  3D  44  4B  52  59  60  67  6E  75  7C  83  8A  91  98  9F  A6  AD  B4  BB  C2  C9  D0  D7  DE  E5  EC  F3  FA  storage_stat.dat
  10. 06  0D  14  1B  22  29  30  37  3E  45  4C  53  5A  61  68  6F  76  7D  84  8B  92  99  A0  A7  AE  B5  BC  C3  CA  D1  D8  DF  E6  ED  F4  FB  sync


3.3. 配置client


  1. vim client.conf
  2. tracker_server=192.168.27.168:22122   #tracker节点
  3. base_path=/fastdfs/client   #日志路径



3.4. 本地图片上传测试


  1. [root@s168 fdfs]# fdfs_upload_file /etc/fdfs/client.conf /home/test.png
  2. fantj/M00/00/00/wKgbqFu7T7iAJh7lAABDYbhAMC4812.png
  3. 或者:
  4. [root@s168 fdfs]# fdfs_test /etc/fdfs/client.conf /home/test.png
  5. ThisisFastDFS client test program v5.05
  6. Copyright(C)2008,HappyFish/YuQing
  7. FastDFS may be copied only under the terms of the GNU General
  8. PublicLicense V3, which may be found in the FastDFS source kit.
  9. Please visit the FastDFSHomePage http://www.csource.org/
  10. for more detail.
  11. [2018-5-0820:41:15] DEBUG - base_path=/fastdfs/client, connect_timeout=30, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=0, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count:0
  12. invalid operation:/home/test.png


4. 安装nginx


之前有写过nginx的安装文章,在这里不重复。没有安装过的请点击:

点击查看我的文章:nginx安装


5. FastDFS 配置 Nginx 模块


fastdfs-nginx-module 可以重定向文件链接到源服务器取文件,避免客户端由于复制延迟导致的文件无法访问错误。


5.1 下载安装


  1. wget https://github.com/happyfish100/fastdfs-nginx-module/archive/5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip
  2. unzip 5e5f3566bbfa57418b5506aaefbe107a42c9fcb1.zip
  3. mv fastdfs-nginx-module-5e5f3566bbfa57418b5506aaefbe107a42c9fcb1/ fastdfs-nginx-module

5.2 配置Nginx


  1. ngix -s stop
  2. cd nginx-1.12.1
  3. #添加模块
  4. ./configure --add-module=../fastdfs-nginx-module/src
  5. (如果你是yum安装的nginx,我暂时还没找到解决办法,目前的方法是nginx -V 查看nginx版本,然后下载一个同版本的nginx
  6. 然后将/etc/nginx 下数据整体备份,make && make install 完成后再做恢复)
  7. #重新编译和安装
  8. make
  9. make install
  10. #拷贝配置文件
  11. [root@s168 src]# pwd
  12. /home/fantj/download/fastdfs-nginx-module/src
  13. [root@s168 src]# cp mod_fastdfs.conf /etc/fdfs/


配置 /etc/fdfs/mod_fastdfs.conf文件


  1. #配置 /etc/fdfs/mod_fastdfs.conf文件
  2. base_path=/fastdfs/tmp  #日志目录
  3. store_path0=/fastdfs/storage
  4. tracker_server=192.168.27.168:22122
  5. # the group name of the local storage server
  6. group_name=fantj   #和storage的groupname一一对应
  7. url_have_group_name =true   #开启url中附带group_name


配置nginx


  1. # 配置nginx
  2. [root@s168 fdfs]# cd /usr/local/nginx/conf/
  3. [root@s168 conf]# vim nginx.conf
  4. #添加如下配置
  5. server {
  6.    listen 88;
  7.    server_name 192.168.27.168;
  8.    location /fantj/M00{
  9.            ngx_fastdfs_module;
  10.    }
  11. }
  12. # 进入/usr/local/nginx/sbin目录执行配置检测
  13. [root@s168 sbin]#./nginx  -t
  14. ngx_http_fastdfs_set pid=6431
  15. nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
  16. nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  17. # 启动nginx
  18. [root@s168 sbin]#./nginx
  19. ngx_http_fastdfs_set pid=6436


服务重启并测试


  1. [root@s168 fdfs]# fdfs_trackerd tracker.conf restart
  2. waiting for pid [1202]exit...
  3. starting ...
  4. [root@s168 fdfs]# fdfs_storaged storage.conf restart
  5. waiting for pid [1211]exit...
  6. starting ...
  7. [root@s168 fdfs]#/usr/local/nginx/sbin/nginx -s reload
  8. ngx_http_fastdfs_set pid=6463


6. 配置成功测试

image.png

相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
3月前
|
存储 监控 固态存储
【vSAN分布式存储服务器数据恢复】VMware vSphere vSAN 分布式存储虚拟化平台VMDK文件1KB问题数据恢复案例
在一例vSAN分布式存储故障中,因替换故障闪存盘后磁盘组失效,一台采用RAID0策略且未使用置备的虚拟机VMDK文件受损,仅余1KB大小。经分析发现,该VMDK文件与内部虚拟对象关联失效导致。恢复方案包括定位虚拟对象及组件的具体物理位置,解析分配空间,并手动重组RAID0结构以恢复数据。此案例强调了深入理解vSAN分布式存储机制的重要性,以及定制化数据恢复方案的有效性。
96 5
|
1月前
|
缓存 NoSQL Ubuntu
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
大数据-39 Redis 高并发分布式缓存 Ubuntu源码编译安装 云服务器 启动并测试 redis-server redis-cli
56 3
|
1月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
48 1
|
1月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
44 1
|
1月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
49 0
|
3月前
|
负载均衡 前端开发 应用服务中间件
FastDFS+Nginx+fastdfs-nginx-module集群搭建
FastDFS+Nginx+fastdfs-nginx-module集群搭建
|
3月前
|
Ubuntu 应用服务中间件 Linux
在Linux中,如何配置Web服务器(如Apache或Nginx)?
在Linux中,如何配置Web服务器(如Apache或Nginx)?
|
3月前
|
负载均衡 应用服务中间件 Linux
"揭晓nginx的神秘力量:如何实现反向代理与负载均衡,拯救服务器于水火?"
【8月更文挑战第20天】在Linux环境下,nginx作为高性能HTTP服务器与反向代理工具,在网站优化及服务器负载均衡中扮演重要角色。本文通过电商平台案例,解析nginx如何解决服务器压力大、访问慢的问题。首先介绍反向代理原理,即客户端请求经由代理服务器转发至内部服务器,隐藏真实服务器地址;并给出配置示例。接着讲解负载均衡原理,通过将请求分发到多个服务器来分散负载,同样附有配置实例。实践表明,采用nginx后,不仅服务器压力得到缓解,还提升了访问速度与系统稳定性。
86 3
|
3月前
|
存储 固态存储 虚拟化
【vSAN分布式存储服务器数据恢复】VMware vSphere vSAN ESXi超融合HCI分布式存储数据恢复案例
近期,我司处理了一个由10台华为OceanStor存储组成的vSAN超融合架构,其中一台存储闪存盘出现故障,用户取下后用新的闪存盘代替,然后对该闪存盘所在的磁盘组进行重建,导致集群中一台使用0置备策略的虚拟机数据丢失。
89 6
|
3月前
|
应用服务中间件 Linux 网络安全
在Linux中,如何配置Apache或Nginx Web服务器?
在Linux中,如何配置Apache或Nginx Web服务器?
下一篇
无影云桌面