CentOS7 搭建 godfs 集群
使用 go-fastdfs 快速部署私有分布式存储集群服务器
部署
godfs
集群部署时由于 peer_id
仅为 0~9
的单字符,集群服务器不建议过多,按照官方建议使用3台服务器即可。
在服务器上创建部署文件夹
shell 1
2mkdir -p /data/go-fastdfs
cd /data/go-fastdfs下载最新的 fileserver
curl 1
curl -o /data/go-fastdfs/fileserver https://github.com/sjqzhang/go-fastdfs/releases/download/v1.3.9/fileserver
先启动一次,自动创建配置文件
shell 1
2chmod 755 fileserver
./fileserver修改配置文件
shell 1
vim conf/cfg.json
配置文件有中文注释,参考注释即可。
需修改的地方有:
peers
:添加集群中其他godfs
的 IP 与端口group
:修改 group 名为与项目更贴近的名字或者更有辨识度的名字default_scene
:场景名可以修改为项目名,也可以保持默认enable_merge_small_file
:修改为true
,运行合并小文件生产环境推荐:
enable_web_upload
: 修改为false
,禁用 web 上传文件show_dir
:修改为false
,禁用目录显示auto_repair
:修改为false
,关闭自动修复功能enable_distinct_file
:修改为false
,关闭去重功能,减少系统 I/O 支出
添加
systemd
脚本shell 1
vim /usr/lib/systemd/system/godfs.service
内容如下:
/usr/lib/systemd/system/godfs.service 1
2
3
4
5
6
7
8
9
10
11
12
13
14[Unit]
Description=gofastdfs service
After=syslog.target network.target
[Service]
WorkingDirectory=/data/go-fastdfs
ExecStart=/data/go-fastdfs/fileserver
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
Restart=always
[Install]
WantedBy=multi-user.target保存后重载配置文件
shell 1
systemctl daemon-reload
启动
godfs
shell 1
2systemctl start godfs
systemctl enable godfs开放防火墙端口中
godfs
对应的端口shell 1
2firewall-cmd --zone=public --permanent --add-port=20000/tcp
firewall-cmd --reload
Nginx
Nginx 仅安装一台,或者每台服务器上均部署,然后在再上面部署一层 Keepalived
提供高可用架构。
添加 Nginx 源
shell 1
rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
安装 Nginx
shell 1
yum -y install nginx
启动 Nginx
shell 1
2systemctl start nginx
systemctl enable nginx添加
godfs.conf
配置文件shell 1
vim /etc/nginx/conf.d/godfs.conf
内容如下,其中
filserver
为修改后的group
名/etc/nginx/conf.d/godfs.conf 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
53upstream godfs-group1 {
server 172.16.123.131:20000;
server 172.16.123.156:20000;
server 172.16.123.160:20000;
ip_hash;
}
server {
listen 8080;
server_name _;
# 允许内网访问的 IP 段
allow 172.16.0.0/16;
deny all;
proxy_redirect ~/(\w+)/big/upload/(.*) /$1/big/upload/$2; #继点续传一定要设置(注意)
client_max_body_size 64M;
keepalive_timeout 65;
if ( $request_uri ~ /godfs/fileserver ) {
# 注意group会随组的前缀改变而改变
rewrite ^/godfs/(.*)$ /$1 last;
}
location ~ /fileserver(\d) {
client_max_body_size 0;
#统一在url前增加godfs,以便统一出入口。
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://godfs-group$1;
}
location ~ /godfs/upload {
client_max_body_size 0;
#这是一个横向扩展配置,前期可能只有一个集群group1,当group1满后,只需将上传指向group2,
#也就是将rewrite , proxy_pass 中的group1改为group2即可。
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
rewrite ^/godfs/upload /filerserver1/upload break;
proxy_pass http://godfs-group1;
}
location ~ /godfs/big/upload {
client_max_body_size 0;
#以上上类似。
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
rewrite ^/godfs/upload /fileserver1/big/upload break;
proxy_pass http://godfs-group1;
}
}保存后重载 nginx 配置文件
shell 1
2nginx -t
nginx -s reload
测试
web 上传
- 浏览器打开
http://172.16.123.131:8080/godfs/fileserver1/
- 选择文件上传
- 在每个
godfs
节点服务器的files
文件夹中查看返回值的path
文件是否存在。也可以使用命令tree files
查看整个文件目录的结构。
API 上传
通过
postman
或者其他工具进行 POST 请求POST 请求
http://172.16.123.131:8080/godfs/fileserver1/upload
参考文章:
- 本文标题:CentOS7 搭建 godfs 集群
- 本文作者:akiya
- 本文链接:https://little-star.love/posts/348841ed/
- 版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!