4

第2-1-2章 传统方式安装FastDFS-附FastDFS常用命令 - 假装文艺范儿

 1 year ago
source link: https://www.cnblogs.com/gitBook/p/16861923.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

3 安装配置

下面我们在单台机器上安装FastDFS,操作系统是64位的CentOS7。

名称 说明
centos 7.x
libfatscommon FastDFS分离出的一些公用函数包
FastDFS FastDFS本体
fastdfs-nginx-module FastDFS和nginx的关联模块
nginx nginx1.15.4

3.1 安装GCC

FastDFS是由C语言开发的,所以首先我们先安装C/C++的一个编译器:GCC。

[root@node5-vm10 ~]# yum -y install gcc-c++

#验证GCC
[root@node5-vm10 ~]# whereis gcc
gcc: /usr/bin/gcc /usr/lib/gcc /usr/libexec/gcc /usr/share/man/man1/gcc.1.gz

3.2 安装libevent

事件通知库libevent也是需要提前安装的,这个库是由C语言开发的,具有轻量级、开源的、高性能的特点。

[root@node5-vm10 ~]# yum -y install libevent

3.3 安装libfastcommon

libfastcommon是FastDFS官方提供的,libfastcommon包含了FastDFS运行所需要的一些基础库。

下载地址: https://github.com/happyfish100/libfastcommon/releases 选择合适的版本进行安装。

#下载
[root@node5-vm10 ~]# cd /usr/local/src
[root@node5-vm10 src]#  wget -O libfastcommon-1.0.43.tar.gz  https://codeload.github.com/happyfish100/libfastcommon/tar.gz/V1.0.43

#解压
[root@node5-vm10 src]# tar -zxvf libfastcommon-1.0.43.tar.gz 

#编译安装
[root@node5-vm10 src]# cd libfastcommon-1.0.43
[root@node5-vm10 libfastcommon-1.0.43]# ./make.sh 
[root@node5-vm10 libfastcommon-1.0.43]# ./make.sh install

3.4 安装FastDFS

下载地址:https://github.com/happyfish100/fastdfs/releases 选择合适的版本,当前最新release版本是6.06

#切换目录
[root@node5-vm10 libfastcommon-1.0.43]# cd /usr/local/src/ 

#下载
[root@node5-vm10 src]# wget -O fastdfs-6.06.tar.gz https://codeload.github.com/happyfish100/fastdfs/tar.gz/V6.06

#解压
[root@node5-vm10 src]# tar -zxvf fastdfs-6.06.tar.gz 

#安装
[root@node5-vm10 src]# cd fastdfs-6.06
[root@node5-vm10 fastdfs-6.06]# ./make.sh
[root@node5-vm10 fastdfs-6.06]# ./make.sh install

默认安装方式安装后的相应文件与目录

A、服务脚本:

/etc/init.d/fdfs_storaged
/etc/init.d/fdfs_trackerd

B、配置文件(这三个是作者给的样例配置文件)

/etc/fdfs/client.conf.sample
/etc/fdfs/storage.conf.sample
/etc/fdfs/tracker.conf.sample

C、命令工具在 /usr/bin/ 目录下:

fdfs_appender_test
fdfs_appender_test1
fdfs_append_file
fdfs_crc32
fdfs_delete_file
fdfs_download_file
fdfs_file_info
fdfs_monitor
fdfs_regenerate_filename
fdfs_storaged
fdfs_test
fdfs_test1
fdfs_trackerd
fdfs_upload_appender
fdfs_upload_file

D、服务启动命令在:/usr/local/src/fastdfs-6.06

restart.sh
setup.sh
stop.sh

3.5 安装fastdfs-nginx-module

我们在使用FastDFS部署一个分布式文件系统的时候,通过FastDFS的客户端API来进行文件的上传、下载、删除等操作。同时通过FastDFS的HTTP服务器来提供HTTP服务。但是FastDFS的HTTP服务较为简单,无法提供负载均衡等高性能的服务,所以FastDFS的开发者(淘宝的架构师余庆)为我们提供了Nginx上使用的FastDFS模块(也可以叫FastDFS的Nginx模块)。

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

[root@node5-vm10 fdfs]# cd /usr/local/src
[root@node5-vm10 src]# git clone https://github.com/happyfish100/fastdfs-nginx-module.git --depth 1

[root@node5-vm10 src]# cp /usr/local/src/fastdfs-nginx-module/src/mod_fastdfs.conf /etc/fdfs
[root@node5-vm10 src]# cp /usr/local/src/fastdfs-6.06/conf/http.conf /etc/fdfs/
[root@node5-vm10 src]# cp /usr/local/src/fastdfs-6.06/conf/mime.types /etc/fdfs/

3.5 安装Nginx

安装nginx的主要目的是做负载均衡及实现高可用。tracker集群环境下,需要在每个Tracker上安装Nginx, 如果只有一台tracker服务器,可以不配置Nginx

Storage服务器安装Nginx:

cd /usr/local/src

#下载nginx压缩包
wget http://nginx.org/download/nginx-1.15.4.tar.gz 

#解压
tar -zxvf nginx-1.15.4.tar.gz
cd nginx-1.15.4/

#添加fastdfs-nginx-module模块
./configure --add-module=/usr/local/src/fastdfs-nginx-module/src/ 

#编译安装
make && make install 

配置Nginx:

vim /etc/fdfs/mod_fastdfs.conf
#需要修改的内容如下
tracker_server=172.17.0.115:22122  #tracker服务器IP和端口
url_have_group_name=true
base_path=/home/fastdfs/storage
store_path0=/home/fastdfs/storage/base

#配置nginx.config
vim /usr/local/nginx/conf/nginx.conf
#添加如下配置
server {
    listen       8188;    ## 该端口为storage.conf中的http.server_port相同
    server_name  localhost;
    location ~/group[0-9]/ {
        ngx_fastdfs_module;
    }
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
    root   html;
    }
}

启动Nginx:

/usr/local/nginx/sbin/nginx
/usr/local/nginx/sbin/nginx -t
/usr/local/nginx/sbin/nginx -s reload

3.6 配置FastDFS Tracker

3.5.1 配置Tracker

复制创建tracker.conf

[root@node5-vm10 fastdfs-6.06]# cd /etc/fdfs
[root@node5-vm10 fdfs]# ll
total 32
-rw-r--r--. 1 root root  1909 Apr  3 11:11 client.conf.sample
-rw-r--r--. 1 root root 10246 Apr  3 11:11 storage.conf.sample
-rw-r--r--. 1 root root   620 Apr  3 11:11 storage_ids.conf.sample
-rw-r--r--. 1 root root  9138 Apr  3 11:11 tracker.conf.sample

[root@node5-vm10 fdfs]# cp tracker.conf.sample tracker.conf

修改配置文件:

[root@node5-vm10 fdfs]# vim tracker.conf
# HTTP port on this tracker server
# 修改端口
http.server_port = 8180   
# the base path to store data and log files
base_path =  /home/fastdfs/tracker

注意文件夹要手工创建好:

[root@node5-vm10 fdfs]# mkdir -p  /home/fastdfs/tracker

3.5.2 启动与关闭

使用以下任一命令启动Tracker服务:

[root@node5-vm10 fdfs]# /etc/init.d/fdfs_trackerd start
Reloading systemd:                                         [  OK  ]
Starting fdfs_trackerd (via systemctl):                    [  OK  ]
# 或
[root@node5-vm10 fdfs]# service fdfs_trackerd start
Starting fdfs_trackerd (via systemctl):                    [  OK  ]
# 或
[root@node5-vm10 fdfs]# systemctl start fdfs_trackerd

查看 FastDFS Tracker 是否已成功启动:

#初次成功启动后会在 /fdfsdfs/tracker/ (配置的base_path)下创建 data、logs 两个目录。
[root@node5-vm10 fdfs]# cd /fastdfs/tracker/
[root@node5-vm10 tracker]# ll
total 0
drwxr-xr-x. 2 root root 58 Apr  3 11:28 data
drwxr-xr-x. 2 root root 25 Apr  3 11:28 logs

[root@node5-vm10 tracker]# systemctl status fdfs_trackerd
● fdfs_trackerd.service - LSB: FastDFS tracker server
   Loaded: loaded (/etc/rc.d/init.d/fdfs_trackerd; bad; vendor preset: disabled)
   Active: active (running) since Fri 2020-04-03 11:28:11 CST; 1min 8s ago
     Docs: man:systemd-sysv-generator(8)
  Process: 26724 ExecStart=/etc/rc.d/init.d/fdfs_trackerd start (code=exited, status=0/SUCCESS)
   Memory: 4.4M
   CGroup: /system.slice/fdfs_trackerd.service
           └─26727 /usr/bin/fdfs_trackerd /etc/fdfs/tracker.conf

Apr 03 11:28:09 node5-vm10.xxzx systemd[1]: Starting LSB: FastDFS tracker server...
Apr 03 11:28:09 node5-vm10.xxzx fdfs_trackerd[26724]: Starting FastDFS tracker server:
Apr 03 11:28:11 node5-vm10.xxzx systemd[1]: Started LSB: FastDFS tracker server.

使用以下任一命令关闭Tracker服务

service fdfs_trackerd stop
或
systemctl stop fdfs_trackerd
或
/etc/init.d/fdfs_trackerd stop

设置开机启动:

chkconfig fdfs_trackerd on
或
systemctl enable fdfs_trackerd.service
或者:
vim /etc/rc.d/rc.local
/etc/init.d/fdfs_trackerd start 	#加入配置

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

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

3.6 配置FastDFS Storage

3.6.1 配置Storage

进入 /etc/fdfs 目录,复制 FastDFS 存储器样例配置文件 storage.conf.sample,并重命名为 storage.conf

[root@node5-vm10 ~]# cd /etc/fdfs/
[root@node5-vm10 fdfs]# cp storage.conf.sample storage.conf
[root@node5-vm10 fdfs]# vim storage.conf

修改以下配置信息,其他默认即可:

# Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成)  
# 这里不是上传的文件存放的地址
base_path =  /home/fastdfs/storage

# 逐一配置 store_path_count 个路径,索引号基于 0。
# 如果不配置 store_path0,那它就和 base_path 对应的路径一样。
store_path0 =  /home/fastdfs/storage/base

# FastDFS 存储文件时,采用了两级目录。这里配置存放文件的目录个数。 
# 如果本参数只为 N(如: 256),那么 storage server 在初次运行时,会在 store_path 下自动创建 N * N 个存放文件的子目录。
subdir_count_per_path=256

# tracker_server 的列表 ,会主动连接 tracker_server
# 有多个 tracker server 时,每个 tracker server 写一行
tracker_server = 172.17.0.115:22122

#访问端口 默认8888
http.server_port = 8188

创建Storage基础数据目录,对应base_path目录

# 对应base_path
[root@node5-vm10 fdfs]# mkdir -p  /home/fastdfs/storage
     
# 这是配置的store_path0路径,有多个要创建多个
mkdir -p  /home/fastdfs/storage/base

3.6.2 启动与关闭

启动Storage前确保Tracker是启动的,可以用以下任一方式启动Storage:

/etc/init.d/fdfs_storaged start
或
service fdfs_storaged start
或
systemctl start fdfs_storaged

查看 Storage 是否成功启动:

[root@node5-vm10 ~]# netstat -unltp|grep 23000
tcp        0      0 0.0.0.0:23000           0.0.0.0:*      LISTEN   28737/fdfs_storaged 

[root@node5-vm10 ~]# systemctl status fdfs_storaged
● fdfs_storaged.service - LSB: FastDFS storage server
   Loaded: loaded (/etc/rc.d/init.d/fdfs_storaged; bad; vendor preset: disabled)
   Active: active (running) since Fri 2020-04-03 11:59:31 CST; 39min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 28716 ExecStop=/etc/rc.d/init.d/fdfs_storaged stop (code=exited, status=2)
  Process: 28734 ExecStart=/etc/rc.d/init.d/fdfs_storaged start (code=exited, status=0/SUCCESS)
   Memory: 66.9M
   CGroup: /system.slice/fdfs_storaged.service
           └─28737 /usr/bin/fdfs_storaged /etc/fdfs/storage.conf

Apr 03 11:59:31 node5-vm10.xxzx systemd[1]: Starting LSB: FastDFS storage server...
Apr 03 11:59:31 node5-vm10.xxzx systemd[1]: Started LSB: FastDFS storage server.
Apr 03 11:59:31 node5-vm10.xxzx fdfs_storaged[28734]: Starting FastDFS storage server:

使用以下任一命令关闭Storage:

  • service fdfs_storaged stop
  • systemctl stop fdfs_storaged
  • /etc/init.d/ fdfs_storaged stop

查看Storage和Tracker是否在通信:

[root@node5-vm10 ~]# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
[2020-04-03 12:41:17] DEBUG - base_path=/fastdfs/storage, connect_timeout=5, network_timeout=60, tracker_server_count=1, anti_steal_token=0, anti_steal_secret_key length=0, use_connection_pool=1, g_connection_pool_max_idle_time=3600s, use_storage_id=0, storage server id count: 0

server_count=1, server_index=0

tracker server is 172.17.0.115:22122

group count: 1

Group 1:
group name = group1
disk total space = 196,011 MB
disk free space = 29,774 MB
...

使用以下任一命令设置 Storage 开机启动:

  • chkconfig fdfs_storaged on

  • systemctl enable fdfs_storaged.service

  • vim /etc/rc.d/rc.local
    加入配置:
    /etc/init.d/fdfs_storaged  start 
    

Storage 目录:

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

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

[root@node5-vm10 ~]# ls /fastdfs/storage/data/
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
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
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  FE
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  FF
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
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
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

3.7 文件测试

修改客户端配置:

[root@node5-vm10 ~]# cd /etc/fdfs
[root@node5-vm10 fdfs]# cp client.conf.sample client.conf

[root@node5-vm10 fdfs]# mkdir -p /home/fastdfs/client

[root@node5-vm10 fdfs]# vim client.conf
base_path = /home/fastdfs/client
tracker_server = 172.17.0.115:22122
http.tracker_server_port = 8180 

上传测试:

[root@node5-vm10 fdfs]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf /mnt/test.txt
group1/M00/00/00/rBEAc16Hf5iAPXaNAAAAGWIeu9w946.txt

返回的文件ID由group、存储目录、二级子目录、fileid、文件后缀名(由客户端指定,主要用于区分文件类型)拼接而成。上边示例中:

  • 组名:group1
  • 磁盘:M00
  • 存储目录:00
  • 二级子目录:00
  • fileid: rBEAc16Hf5iAPXaNAAAAGWIeu9w946
  • 文件后缀: .txt

下载测试:

经过Nginx服务配置后,我们可以通过以下路径下载文件:

http://172.17.0.115:8188/group1/M00/00/00/rBEAc16Hf5iAPXaNAAAAGWIeu9w946.txt

3.8 FastDFS命令

  • fdfs_upload_file:

    Usage: fdfs_upload_file <config_file> <local_filename> [storage_ip:port][store_path_index]

    作用: 用于上传文件,用法为 fdfs_upload_file + 配置文件 + 文件

  • fdfs_download_file

    Usage: fdfs_download_file <config_file> <file_id> [local_filename][ ]

    用于下载文件,用法为 fdfs_download_file + 配置文件 + 文件

  • fdfs_file_info

    Usage: fdfs_file_info <config_file> <file_id>

    用于查看文件信息,用法为 fdfs_file_info + 配置文件 + 文件

  • fdfs_delete_file

    Usage: fdfs_delete_file <config_file> <file_id>

    用于删除文件,用法为 fdfs_delete_file + 配置文件 + 文件

  • fdfs_monitor

    Usage: fdfs_monitor <config_file> [-h <tracker_server>][list|delete|set_trunk_server [storage_id]]

    用于查看集群信息,用法为 fdfs_monitor + 配置文件

    [root@node5-vm10 ~]# fdfs_monitor /etc/fdfs/storage.conf
    

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK