Linux FastDFS安装(服务器架设篇)

FastDFS介绍

FastDFS是一个开源的轻量级分布式文件系统,它对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、文件下载)等,解决了大容量存储和负载均衡的问题。特别适合以文件为载体的在线服务,如相册网站、视频网站等等。FastDFS为互联网量身定制,充分考虑了冗余备份、负载均衡、线性扩容等机制,并注重高可用、高性能等指标,使用FastDFS很容易搭建一套高性能的文件服务器集群提供文件上传、下载等服务。

起源

淘宝网开放平台技术部资深架构师余庆先生首先回顾了自己在Yahoo工作时的经历,他表示Yahoo当时的相册和论坛系统整个结构都进行了针对大规模分布式存储和并发操作的改进。余庆从整个分布式文件系统的发展说起,谈到了FastDFS文件系统的概念和具体优缺点。据了解,yahoo论坛和相册以前一直面临着扩容问题,同步延迟问题,同步失败问题等。其pat同步、定式扫描以及farm式集中式存储的热备都带来立刻高昂的成本消耗。2008年底,处于减低成本的考虑,中国yahoo采用分布式文件系统替换了古老的YMDB系统。

简介

  1. FastDFS是一款类似Google FS的开源分布式文件系统,是纯C语言开发的。它是一个开源的轻量级分布式文件系统,对文件进行管理,功能包括:文件存储、文件同步、文件访问(文件上传、下载)等。可参考其作者淘宝架构师余庆的github地址:FastDFS GitHub
  2. 解决了大容量存储(大量存储,不是大文件存储)和负载均衡的问题,高度追求高性能和扩展性,其可安装的插件模块非常多,包括Nginx模块(提供文件访问的负载均衡)。
  3. 支持横向组拓展,支持同步热备,支持token防盗链等。
  4. fdfs不是通用文件系统,访问需要走api,可以在作者的github上找到对应各平台的api,也可以根据源码定制自己的api,目前支持的平台有java,php,c,python等。

FastDFS详解(一)——简介

单机安装

环境准备

环境 版本
RHEL/CentOS 7.x
FastDFS 5.11
libfastcommon 1.0.39

我们先下载libfastcommon和FastDFS源代码,下载链接我在表格里面附加上了,直接点击下载即可。

我们先安装GCC与GCC-C++以及FastDFS依赖的组件库 libevent libevent-devel

1
[root@bogon thinktik]# yum install gcc gcc-c++  libevent libevent-devel

安装

添加一个host,方便后续的ip映射

1
2
3
4
5
6
7
8
9
10
# 修改host
[root@bogon thinktik]# vim /etc/hosts
# 将自己的服务器ip和自己要映射的域名写入hosts后保存
# 改完后ping下自己的域名,和自己的ip对的上就行
[root@bogon thinktik]# ping myconfig.com
PING myconfig.com (192.168.50.208) 56(84) bytes of data.
64 bytes from myconfig.com (192.168.50.208): icmp_seq=1 ttl=64 time=0.070 ms
64 bytes from myconfig.com (192.168.50.208): icmp_seq=2 ttl=64 time=0.042 ms
64 bytes from myconfig.com (192.168.50.208): icmp_seq=3 ttl=64 time=0.042 ms
^C

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 将下载的2个文件传输在linux上的合适位置,再解压
[root@bogon thinktik]# ls
fastdfs-5.11.tar.gz libfastcommon-1.0.39.tar.gz
[root@bogon thinktik]# tar -zxvf libfastcommon-1.0.39.tar.gz
[root@bogon thinktik]# tar -zxvf fastdfs-5.11.tar.gz
# 解压后
[root@bogon thinktik]# ls
fastdfs-5.11 fastdfs-5.11.tar.gz libfastcommon-1.0.39 libfastcommon-1.0.39.tar.gz


# 安装libfastcommon
[root@bogon libfastcommon-1.0.39]# ls
doc HISTORY INSTALL libfastcommon.spec make.sh php-fastcommon README src
# 编译
[root@bogon libfastcommon-1.0.39]# ./make.sh
...
# 安装
[root@bogon libfastcommon-1.0.39]# ./make.sh install
...
# 安装FastDFS
[root@bogon libfastcommon-1.0.39]# cd ..
[root@bogon thinktik]# ls
fastdfs-5.11 fastdfs-5.11.tar.gz libfastcommon-1.0.39 libfastcommon-1.0.39.tar.gz
[root@bogon thinktik]# cd fastdfs-5.11
[root@bogon fastdfs-5.11]# ls
client common conf COPYING-3_0.txt fastdfs.spec HISTORY init.d INSTALL make.sh php_client README.md restart.sh stop.sh storage test tracker
# 编译
[root@bogon fastdfs-5.11]# ./make.sh
...
# 安装
[root@bogon fastdfs-5.11]# ./make.sh install
...

配置

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 服务脚本
[root@bogon fastdfs-5.11]# ls /etc/init.d/
fdfs_storaged fdfs_trackerd functions netconsole network README
# 配置文件(这三个是作者给的样例配置文件)
[root@bogon fastdfs-5.11]# ls /etc/fdfs/
client.conf.sample storage.conf.sample storage_ids.conf.sample tracker.conf.sample
# 命令工具在 /usr/bin/ 目录下
[root@bogon fastdfs-5.11]# ls /usr/bin/ | grep fdfs
fdfs_appender_test
fdfs_appender_test1
fdfs_append_file
fdfs_crc32
fdfs_delete_file
fdfs_download_file
fdfs_file_info
fdfs_monitor
fdfs_storaged
fdfs_test
fdfs_test1
fdfs_trackerd
fdfs_upload_appender
fdfs_upload_file

配置FastDFS执行文件软连接

很多文章讲要配置软连接什么的,我自己安装的时候没配软连接也是可以的。可能别人的版本比较老,新的版本完善这个问题。

其实我安装测试这几个软连接不要没什么问题

那么我不配了,上面的截图是有些文章的建议

配置FastDFS跟踪器(Tracker)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
[root@bogon fastdfs-5.11]# cd /etc/fdfs/
[root@bogon fdfs]# ls
client.conf.sample storage.conf.sample storage_ids.conf.sample tracker.conf.sample
# 复制 FastDFS 跟踪器样例配置文件 tracker.conf.sample,并重命名为 tracker.conf
[root@bogon fdfs]# cp tracker.conf.sample tracker.conf
[root@bogon fdfs]# ls
client.conf.sample storage.conf.sample storage_ids.conf.sample tracker.conf tracker.conf.sample
# 创建fastdfs存储根目录
[root@bogon fdfs]# mkdir /home/thinktik/fastdfs_base
# 在根目录下创建tracker目录
[root@bogon fdfs]# mkdir /home/thinktik/fastdfs_base/tracker
# 编辑tracker配置
[root@bogon fdfs]# vim tracker.conf

# 按这个改文件。这两个要改成自己的配置,其余保持默认就好。
# Tracker 数据和日志目录地址(根目录必须存在,子目录会自动创建)
base_path=/home/thinktik/fastdfs_base/tracker

# tracker被HTTP服务访问端口 可自己定义
http.server_port=8090

# 防火墙放行tracker监听端口
[root@bogon fdfs]# firewall-cmd --zone=public --add-port=22122/tcp --permanent
success
[root@bogon fdfs]# firewall-cmd --reload
success

# 启动Tracker
[root@bogon fdfs]# /etc/init.d/fdfs_trackerd start
Reloading systemd: [ OK ]
Starting fdfs_trackerd (via systemctl): [ OK ]
# 查看tracker监听状态,这样就可以了
[root@bogon fdfs]# netstat -unltp|grep fdfs
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 11775/fdfs_trackerd
# 以后可以service fdfs_trackerd start (CentOS6)或者systemctl restart fdfs_trackerd (CentOS7)来重启服务。
# 例如 重启服务
[root@bogon fdfs]# systemctl restart fdfs_trackerd
[root@bogon fdfs]# netstat -unltp|grep fdfs
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 11821/fdfs_trackerd
# 例如 关闭服务
[root@bogon fdfs]# systemctl stop fdfs_trackerd
# 设置开机自启动
[root@bogon fdfs]# systemctl enable fdfs_trackerd
fdfs_trackerd.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig fdfs_trackerd on
# Tracker服务启动成功后,会在base_path下创建data、logs两个目录
[root@bogon fdfs]# ls /home/thinktik/fastdfs_base/tracker/
data/ logs/

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

配置FastDFS存储 (Storage)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
[root@bogon fdfs]# cd /etc/fdfs/
[root@bogon fdfs]# ls
client.conf.sample storage.conf.sample storage_ids.conf.sample tracker.conf tracker.conf.sample
# 复制 FastDFS 存储样例配置文件 storage.conf.sample,并重命名为 storage.conf
[root@bogon fdfs]# cp storage.conf.sample storage.conf
# 在fastdfs存储根目录根目录下创建storage目录
[root@bogon fdfs]# mkdir /home/thinktik/fastdfs_base/storage
# 在fastdfs存储根目录根目录下创建store_path0目录
[root@bogon fdfs]# mkdir /home/thinktik/fastdfs_base/files
# 编辑storage配置
[root@bogon fdfs]# vim storage.conf

# 下面这几个建议修改,其余保持默认就可以
# Storage 数据和日志目录地址(根目录必须存在,子目录会自动生成)
base_path=/home/thinktik/fastdfs_base/storage
# 如果不配置 store_path0,那它就和 base_path 对应的路径一样。
store_path0=/home/thinktik/fastdfs_base/files
# tracker_server 的列表 ,会主动连接 tracker_server
# 有多个 tracker server 时,每个 tracker server 写一行
tracker_server=myconfig.com:22122
# storage被访问端口
http.server_port=8091

# 防火墙放行storage监听的端口
[root@bogon fdfs]# firewall-cmd --zone=public --add-port=23000/tcp --permanent
success
[root@bogon fdfs]# firewall-cmd --reload
# 启动storage
[root@bogon fdfs]# /etc/init.d/fdfs_storaged start
Starting fdfs_storaged (via systemctl): [ OK ]
# 检查
[root@bogon fdfs]# netstat -unltp|grep fdfs
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 11991/fdfs_trackerd
tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 11907/fdfs_storaged
# 以后可以service fdfs_storaged start (CentOS6)或者systemctl restart fdfs_storaged (CentOS7)来重启服务。
# 例如 重启服务
[root@bogon fdfs]# systemctl restart fdfs_storaged
[root@bogon fdfs]# netstat -unltp|grep fdfs
tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 11991/fdfs_trackerd
tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 12036/fdfs_storaged

查看Storage和Tracker是否在通信

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
[root@bogon fdfs]# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
[2018-11-26 22:16:33] DEBUG - base_path=/home/thinktik/fastdfs_base/storage, 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

server_count=1, server_index=0

tracker server is 192.168.50.208:22122

group count: 1

Group 1:
group name = group1
disk total space = 29673 MB
disk free space = 28382 MB
trunk free space = 0 MB
storage server count = 1
active server count = 1
storage server port = 23000
storage HTTP port = 80
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0

Storage 1:
id = 192.168.50.208
ip_addr = 192.168.50.208 (myconfig.com) ACTIVE # 这个ACTIVE表示检查成功
http domain =
version = 5.11
join time = 2018-11-26 22:10:34
up time = 2018-11-26 22:15:28
total storage = 29673 MB
free storage = 28382 MB
...
last_sync_update = 1970-01-01 08:00:00
last_synced_timestamp = 1970-01-01 08:00:00

同tracker一样,Storage启动成功后,在base_path下创建了data、logs目录,记录着 Storage Server 的信息。在 store_path0 目录下,创建了N*N个子目录

1
2
3
4
5
6
7
8
9
10
11
12
[root@bogon fdfs]# ls /home/thinktik/fastdfs_base/storage/
data logs
[root@bogon fdfs]# ls /home/thinktik/fastdfs_base/files/
data
[root@bogon fdfs]# ls /home/thinktik/fastdfs_base/files/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

配置FastDFS客户端(Client)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
[root@bogon fdfs]# ls
client.conf.sample storage.conf storage.conf.sample storage_ids.conf.sample tracker.conf tracker.conf.sample
# 复制 FastDFS 客户端样例配置文件 client.conf.sample,并重命名为 client.conf
[root@bogon fdfs]# cp client.conf.sample client.conf
# 编辑client.conf
[root@bogon fdfs]# vim client.conf
[root@bogon fdfs]# mkdir /home/thinktik/fastdfs_base/client

# 这俩个参考我的修改吗,其余的可以不改使用默认设置
# Client 的数据和日志目录
base_path=/home/thinktik/fastdfs_base/client
# Tracker端口
tracker_server=myconfig.com:22122

# 验证
[root@bogon thinktik]# ls
1.PNG fastdfs-5.11 fastdfs-5.11.tar.gz fastdfs_base libfastcommon-1.0.39 libfastcommon-1.0.39.tar.gz
#在linux内部执行如下命令上传1.PNG 图片
[root@bogon thinktik]# /usr/bin/fdfs_upload_file /etc/fdfs/client.conf 1.PNG
group1/M00/00/00/wKgy0Fv8AyiADcuHAAAuZabyc5k458.PNG

#上传成功后返回文件ID号: group1/M00/00/00/wKgy0Fv8AyiADcuHAAAuZabyc5k458.PNG

集群搭建

我们搭建一个3个tracker,3个group每个group含2个stroge的高可用fastdfs集群,当然我在一台机器上开两个storage对可靠性有一定影响,属于伪集群/

集群结构如下:

编号 主机IP 端口 角色 storage所属组 http.server_port
00 192.168.50.65 22122 tracker - 8090
01 192.168.50.65 23000 storage 1 9091
02 192.168.50.65 23002 storage 3 9093
11 192.168.50.95 22122 tracker - 8090
12 192.168.50.95 23001 storage 2 9092
13 192.168.50.95 23000 storage 1 9091
20 192.168.50.239 22122 tracker - 8090
21 192.168.50.239 23002 storage 3 9093
22 192.168.50.239 23001 storage 2 9092

每组里面的两个storage我建议服务监听端口和http.server_port保持一样,这样才不容易出错,起初我同一个组里面的storage的2种端口都不一样,结果无法加入group。具体原因不明,我是看报错日志发现的。

这里我们一起是6个storage,每个主机上2个storage。为了保证高可用我们把一台主机上的两个storage不放在一个group里面而是错开分别放在两个group上。这样伪集群也可以基本达到真集群的效果,3台主机任意一台宕机不会影响数据的完整性,任意2台宕机会也只会损失1/3的数据。为什么?请自己思考下

我们分别在3台机器上安装上1个tracker和一个storage,配置修改这些其余的保持默认即可

  • tracker.conf

    1
    2
    3
    4
    port=22122
    base_path=/home/thinktik/fastdfs_base/tracker
    store_lookup=0 # 0为轮询 2为负载均衡。为了演示我改为0实际部署建议使用2
    http.server_port=8090
  • storage.conf

1
2
3
4
5
6
7
port=23000  # 监听端口 同storage建议配成一样的
base_path=/home/thinktik/fastdfs_base/storage # 需自己建文件夹
store_path0=/home/thinktik/fastdfs_base/files # 需自己建文件夹
tracker_server=192.168.50.65:22122 # 3个tracker都配上
tracker_server=192.168.50.95:22122
tracker_server=192.168.50.239:22122
http.server_port=8091 # http.server_port 同storage建议配成一样的

我们分别在3台机器上再安装上一个storage,复制storage.conf到同目录的storage2.conf。配置修改这些其余的保持默认即可

同一台机上的第二个storage

  • storage2.conf
    1
    2
    3
    4
    5
    6
    7
    port=23002 # 监听端口 同storage建议配成一样的
    base_path=/home/thinktik/fastdfs_base/storage2 # 需自己建文件夹
    store_path0=/home/thinktik/fastdfs_base/files2 # 需自己建文件夹
    tracker_server=192.168.50.65:22122 # 3个tracker都配上
    tracker_server=192.168.50.95:22122
    tracker_server=192.168.50.239:22122
    http.server_port=8093 # http.server_port 同storage建议配成一样的

我这里的storageX.conf里面的port和http.server_port要按照你的group中的storage具体的端口组合来配置,不要盲目照抄,不同主机上的这两个端口是变化的,你只要保证同group中的所有storage的这两个端口相同,同一个主机上的不同storage端口不冲突就可以。同时,一定要把你tracker和storage监听的所有端口放行,不然它们相互通信受阻也会报错。这应该都懂得。

再启动第二个storage

1
[root@bogon fdfs]# fdfs_storaged /etc/fdfs/storage2.conf

这时我们每台机上有了1个tracker和2和storage。基本条件就满足了

依样画葫芦,例外两台机器也这样启动1个tracker和2和storage。我的3台主机都是这样: 1个trackerd和2个storaged

  • 192.168.50.65 下面的端口防火墙都放行

    1
    2
    3
    4
    [root@bogon fdfs]# netstat -unltp|grep fdfs
    tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 2266/fdfs_trackerd
    tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 2384/fdfs_storaged
    tcp 0 0 0.0.0.0:23002 0.0.0.0:* LISTEN 2449/fdfs_storaged
  • 192.168.50.95 下面的端口防火墙都放行

    1
    2
    3
    4
    [root@bogon fdfs]# netstat -unltp|grep fdfs
    tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 2266/fdfs_trackerd
    tcp 0 0 0.0.0.0:23000 0.0.0.0:* LISTEN 2384/fdfs_storaged
    tcp 0 0 0.0.0.0:23001 0.0.0.0:* LISTEN 2449/fdfs_storaged
  • 192.168.50.239 下面的端口防火墙都放行

    1
    2
    3
    4
    [root@bogon fdfs]# netstat -unltp|grep fdfs
    tcp 0 0 0.0.0.0:22122 0.0.0.0:* LISTEN 2266/fdfs_trackerd
    tcp 0 0 0.0.0.0:23001 0.0.0.0:* LISTEN 2384/fdfs_storaged
    tcp 0 0 0.0.0.0:23002 0.0.0.0:* LISTEN 2449/fdfs_storaged

加入集群后你在任意一台机上执行

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
[root@bogon fdfs]# /usr/bin/fdfs_monitor /etc/fdfs/storage.conf
[2018-11-28 22:33:34] DEBUG - base_path=/home/thinktik/fastdfs_base/storage, connect_timeout=30, network_timeout=60, tracker_server_count=3, 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

server_count=3, server_index=1

tracker server is 192.168.50.65:22122

group count: 3

Group 1:
group name = group1
disk total space = 29673 MB
disk free space = 28348 MB
trunk free space = 0 MB
storage server count = 2
active server count = 2
storage server port = 23001
storage HTTP port = 8091
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0

Storage 1:
id = 192.168.50.65
ip_addr = 192.168.50.65 (bogon) ACTIVE
http domain =
version = 5.11
join time = 2018-11-27 21:27:16
up time = 2018-11-28 22:05:28
total storage = 29673 MB
free storage = 28348 MB
upload priority = 10
store_path_count = 1
subdir_count_per_path = 256
storage_port = 23000
storage_http_port = 8091
...
success_file_write_count = 1
last_heart_beat_time = 2018-11-28 22:33:29
last_source_update = 2018-11-27 21:31:40
last_sync_update = 1970-01-01 08:00:00
last_synced_timestamp = 1970-01-01 08:00:00
Storage 2:
id = 192.168.50.95
ip_addr = 192.168.50.95 (bogon) ACTIVE
http domain =
version = 5.11
join time = 2018-11-27 21:54:37
up time = 2018-11-28 22:17:12
total storage = 29673 MB
free storage = 28348 MB
upload priority = 10
store_path_count = 1
subdir_count_per_path = 256
storage_port = 23000
storage_http_port = 8091
...
success_file_write_count = 1
last_heart_beat_time = 2018-11-28 22:33:12
last_source_update = 1970-01-01 08:00:00
last_sync_update = 2018-11-28 00:13:17
last_synced_timestamp = 2018-11-27 21:31:41 (-1s delay)

Group 2:
group name = group2
disk total space = 29673 MB
disk free space = 28349 MB
trunk free space = 0 MB
storage server count = 2
active server count = 1
storage server port = 23001
storage HTTP port = 8092
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0

Storage 1:
id = 192.168.50.239
ip_addr = 192.168.50.239 (bogon) ACTIVE
http domain =
version = 5.11
join time = 2018-11-27 22:19:20
up time = 2018-11-28 22:30:54
total storage = 29673 MB
free storage = 28349 MB
upload priority = 10
store_path_count = 1
subdir_count_per_path = 256
storage_port = 23001
storage_http_port = 8091
...
success_file_write_count = 0
last_heart_beat_time = 2018-11-28 22:33:23
last_source_update = 1970-01-01 08:00:00
last_sync_update = 1970-01-01 08:00:00
last_synced_timestamp = 1970-01-01 08:00:00
Storage 2:
id = 192.168.50.65
ip_addr = 192.168.50.65 (bogon) OFFLINE
http domain =
version = 5.11
join time = 2018-11-27 21:37:08
up time =
total storage = 29673 MB
free storage = 28347 MB
upload priority = 10
store_path_count = 1
subdir_count_per_path = 256
storage_port = 23001
storage_http_port = 8092
...
success_file_write_count = 0
last_heart_beat_time = 2018-11-27 22:31:03
last_source_update = 1970-01-01 08:00:00
last_sync_update = 1970-01-01 08:00:00
last_synced_timestamp = 1970-01-01 08:00:00

Group 3:
group name = group3
disk total space = 29673 MB
disk free space = 28348 MB
trunk free space = 0 MB
storage server count = 2
active server count = 2
storage server port = 23000
storage HTTP port = 8092
store path count = 1
subdir count per path = 256
current write server index = 0
current trunk file id = 0

Storage 1:
id = 192.168.50.239
ip_addr = 192.168.50.239 (bogon) ACTIVE
http domain =
version = 5.11
join time = 2018-11-27 22:17:36
up time = 2018-11-28 22:25:34
total storage = 29673 MB
free storage = 28349 MB
upload priority = 10
store_path_count = 1
subdir_count_per_path = 256
storage_port = 23002
storage_http_port = 8093
...
success_file_write_count = 0
last_heart_beat_time = 2018-11-28 22:33:32
last_source_update = 1970-01-01 08:00:00
last_sync_update = 1970-01-01 08:00:00
last_synced_timestamp = 1970-01-01 08:00:00
Storage 2:
id = 192.168.50.65
ip_addr = 192.168.50.65 (bogon) ACTIVE
http domain =
version = 5.11
join time = 2018-11-27 21:37:08
up time = 2018-11-28 22:22:11
total storage = 29673 MB
free storage = 28348 MB
upload priority = 10
store_path_count = 1
subdir_count_per_path = 256
storage_port = 23002
storage_http_port = 8093
...
success_file_write_count = 0
last_heart_beat_time = 2018-11-28 22:33:11
last_source_update = 1970-01-01 08:00:00
last_sync_update = 1970-01-01 08:00:00
last_synced_timestamp = 1970-01-01 08:00:00

我们看到集群已经完成了组合,到这里集群搭建就可以了

我这里留两个看日志的提示,搭建失败的话可以看下报错,逐步排除问题

1
2
3
4
# 看storage日志
[root@bogon fdfs]# cat /home/thinktik/fastdfs_base/storage/logs/storaged.log、
# 看tracker日志
[root@bogon fdfs]# cat cat /home/thinktik/fastdfs_base/tracker/logs/trackerd.log

这篇文章写的不错,主要参考的是它:

手把手教你搭建FastDFS集群(上)